~ci-train-bot/ubuntu-html5-theme/ubuntu-html5-theme-ubuntu-yakkety-landing-067

« back to all changes in this revision

Viewing changes to 0.1/ambiance/js/docsbuild/assets/js/api-search.js

  • Committer: CI Train Bot
  • Author(s): Michael Hall, Alexandre Abreu
  • Date: 2015-04-09 14:26:31 UTC
  • mfrom: (200.2.3 ubuntu-html5-theme)
  • Revision ID: ci-train-bot@canonical.com-20150409142631-5axmx6p7x08ej1im
Add -doc package, whose contents have to be generated locally (use the ./update-docs command) because not all of its node dependencies are in the archive. This is done, so we can more easily update developer.ubuntu.com/api
Approved by: David Barth

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/*
 
3
 * Copyright 2011 Yahoo! Inc.
 
4
 * All rights reserved.
 
5
 * 
 
6
 * Redistribution and use in source and binary forms, with or without
 
7
 * modification, are permitted provided that the following conditions are met:
 
8
 *     * Redistributions of source code must retain the above copyright
 
9
 *       notice, this list of conditions and the following disclaimer.
 
10
 *     * Redistributions in binary form must reproduce the above copyright
 
11
 *       notice, this list of conditions and the following disclaimer in the
 
12
 *       documentation and/or other materials provided with the distribution.
 
13
 *     * Neither the name of the Yahoo! Inc. nor the
 
14
 *       names of its contributors may be used to endorse or promote products
 
15
 *       derived from this software without specific prior written permission.
 
16
 * 
 
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 
18
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
19
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
20
 * DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY
 
21
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 
22
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 
23
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 
24
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
26
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
27
 */
 
28
 
 
29
YUI.add('api-search', function (Y) {
 
30
 
 
31
var Lang   = Y.Lang,
 
32
    Node   = Y.Node,
 
33
    YArray = Y.Array;
 
34
 
 
35
Y.APISearch = Y.Base.create('apiSearch', Y.Base, [Y.AutoCompleteBase], {
 
36
    // -- Public Properties ----------------------------------------------------
 
37
    RESULT_TEMPLATE:
 
38
        '<li class="result {resultType}">' +
 
39
            '<a href="{url}">' +
 
40
                '<h3 class="title">{name}</h3>' +
 
41
                '<span class="type">{resultType}</span>' +
 
42
                '<div class="description">{description}</div>' +
 
43
                '<span class="className">{class}</span>' +
 
44
            '</a>' +
 
45
        '</li>',
 
46
 
 
47
    // -- Initializer ----------------------------------------------------------
 
48
    initializer: function () {
 
49
        this._bindUIACBase();
 
50
        this._syncUIACBase();
 
51
    },
 
52
 
 
53
    // -- Protected Methods ----------------------------------------------------
 
54
    _apiResultFilter: function (query, results) {
 
55
        // Filter components out of the results.
 
56
        return YArray.filter(results, function (result) {
 
57
            return result.raw.resultType === 'component' ? false : result;
 
58
        });
 
59
    },
 
60
 
 
61
    _apiResultFormatter: function (query, results) {
 
62
        return YArray.map(results, function (result) {
 
63
            var raw  = Y.merge(result.raw), // create a copy
 
64
                desc = raw.description || '';
 
65
 
 
66
            // Convert description to text and truncate it if necessary.
 
67
            desc = Node.create('<div>' + desc + '</div>').get('text');
 
68
 
 
69
            if (desc.length > 65) {
 
70
                desc = Y.Escape.html(desc.substr(0, 65)) + ' &hellip;';
 
71
            } else {
 
72
                desc = Y.Escape.html(desc);
 
73
            }
 
74
 
 
75
            raw['class'] || (raw['class'] = '');
 
76
            raw.description = desc;
 
77
 
 
78
            // Use the highlighted result name.
 
79
            raw.name = result.highlighted;
 
80
 
 
81
            return Lang.sub(this.RESULT_TEMPLATE, raw);
 
82
        }, this);
 
83
    },
 
84
 
 
85
    _apiTextLocator: function (result) {
 
86
        return result.displayName || result.name;
 
87
    }
 
88
}, {
 
89
    // -- Attributes -----------------------------------------------------------
 
90
    ATTRS: {
 
91
        resultFormatter: {
 
92
            valueFn: function () {
 
93
                return this._apiResultFormatter;
 
94
            }
 
95
        },
 
96
 
 
97
        resultFilters: {
 
98
            valueFn: function () {
 
99
                return this._apiResultFilter;
 
100
            }
 
101
        },
 
102
 
 
103
        resultHighlighter: {
 
104
            value: 'phraseMatch'
 
105
        },
 
106
 
 
107
        resultListLocator: {
 
108
            value: 'data.results'
 
109
        },
 
110
 
 
111
        resultTextLocator: {
 
112
            valueFn: function () {
 
113
                return this._apiTextLocator;
 
114
            }
 
115
        },
 
116
 
 
117
        source: {
 
118
            value: '/api/v1/search?q={query}&count={maxResults}'
 
119
        }
 
120
    }
 
121
});
 
122
 
 
123
}, '3.4.0', {requires: [
 
124
    'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources',
 
125
    'escape'
 
126
]});