src/cm/media/js/lib/yui/yui3-3.15.0/build/autocomplete-sources/autocomplete-sources-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('autocomplete-sources', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
Mixes support for JSONP and YQL result sources into AutoCompleteBase.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
@module autocomplete
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
@submodule autocomplete-sources
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
var ACBase = Y.AutoCompleteBase,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
    Lang   = Y.Lang,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    _SOURCE_SUCCESS = '_sourceSuccess',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    MAX_RESULTS         = 'maxResults',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
    REQUEST_TEMPLATE    = 'requestTemplate',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
    RESULT_LIST_LOCATOR = 'resultListLocator';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
// Add prototype properties and methods to AutoCompleteBase.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
Y.mix(ACBase.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
    Regular expression used to determine whether a String source is a YQL query.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
    @property _YQL_SOURCE_REGEX
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
    @type RegExp
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
    _YQL_SOURCE_REGEX: /^(?:select|set|use)\s+/i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
    Runs before AutoCompleteBase's `_createObjectSource()` method and augments
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    it to support additional object-based source types.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    @method _beforeCreateObjectSource
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    @param {String} source
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    _beforeCreateObjectSource: function (source) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        // If the object is a <select> node, use the options as the result
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        // source.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        if (source instanceof Y.Node &&
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
                source.get('nodeName').toLowerCase() === 'select') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
            return this._createSelectSource(source);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
        // If the object is a JSONPRequest instance, try to use it as a JSONP
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        // source.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
        if (Y.JSONPRequest && source instanceof Y.JSONPRequest) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
            return this._createJSONPSource(source);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
        // Fall back to a basic object source.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
        return this._createObjectSource(source);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
    Creates a DataSource-like object that uses `Y.io` as a source. See the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
    `source` attribute for more details.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
    @method _createIOSource
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    @param {String} source URL.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
    @return {Object} DataSource-like object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
    _createIOSource: function (source) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
        var ioSource = {type: 'io'},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
            that     = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
            ioRequest, lastRequest, loading;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
        // Private internal _sendRequest method that will be assigned to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        // ioSource.sendRequest once io-base and json-parse are available.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
        function _sendRequest(request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            var cacheKey = request.request;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            // Return immediately on a cached response.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            if (that._cache && cacheKey in that._cache) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
                that[_SOURCE_SUCCESS](that._cache[cacheKey], request);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
                return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
            // Cancel any outstanding requests.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
            if (ioRequest && ioRequest.isInProgress()) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
                ioRequest.abort();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
            ioRequest = Y.io(that._getXHRUrl(source, request), {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
                on: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
                    success: function (tid, response) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
                        var data;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
                        try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
                            data = Y.JSON.parse(response.responseText);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
                        } catch (ex) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
                            Y.error('JSON parse error', ex);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
                        if (data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
                            that._cache && (that._cache[cacheKey] = data);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
                            that[_SOURCE_SUCCESS](data, request);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        ioSource.sendRequest = function (request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
            // Keep track of the most recent request in case there are multiple
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
            // requests while we're waiting for the IO module to load. Only the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
            // most recent request will be sent.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            lastRequest = request;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
            if (loading) { return; }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
            loading = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
            // Lazy-load the io-base and json-parse modules if necessary,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
            // then overwrite the sendRequest method to bypass this check in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
            // the future.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
            Y.use('io-base', 'json-parse', function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
                ioSource.sendRequest = _sendRequest;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
                _sendRequest(lastRequest);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
        return ioSource;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
    Creates a DataSource-like object that uses the specified JSONPRequest
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
    instance as a source. See the `source` attribute for more details.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    @method _createJSONPSource
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
    @param {JSONPRequest|String} source URL string or JSONPRequest instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
    @return {Object} DataSource-like object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
    _createJSONPSource: function (source) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
        var jsonpSource = {type: 'jsonp'},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
            that        = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
            lastRequest, loading;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
        function _sendRequest(request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
            var cacheKey = request.request,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
                query    = request.query;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
            if (that._cache && cacheKey in that._cache) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
                that[_SOURCE_SUCCESS](that._cache[cacheKey], request);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
                return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
            // Hack alert: JSONPRequest currently doesn't support
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
            // per-request callbacks, so we're reaching into the protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
            // _config object to make it happen.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
            //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
            // This limitation is mentioned in the following JSONP
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
            // enhancement ticket:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
            //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
            // http://yuilibrary.com/projects/yui3/ticket/2529371
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
            source._config.on.success = function (data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
                that._cache && (that._cache[cacheKey] = data);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
                that[_SOURCE_SUCCESS](data, request);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
            source.send(query);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
        jsonpSource.sendRequest = function (request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
            // Keep track of the most recent request in case there are multiple
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
            // requests while we're waiting for the JSONP module to load. Only
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
            // the most recent request will be sent.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
            lastRequest = request;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
            if (loading) { return; }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
            loading = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
            // Lazy-load the JSONP module if necessary, then overwrite the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
            // sendRequest method to bypass this check in the future.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
            Y.use('jsonp', function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
                // Turn the source into a JSONPRequest instance if it isn't
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
                // one already.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
                if (!(source instanceof Y.JSONPRequest)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
                    source = new Y.JSONPRequest(source, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
                        format: Y.bind(that._jsonpFormatter, that)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
                    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
                jsonpSource.sendRequest = _sendRequest;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
                _sendRequest(lastRequest);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
        return jsonpSource;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
    Creates a DataSource-like object that uses the specified `<select>` node as
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
    a source.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
    @method _createSelectSource
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
    @param {Node} source YUI Node instance wrapping a `<select>` node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
    @return {Object} DataSource-like object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
    _createSelectSource: function (source) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
        var that = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
            type: 'select',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
            sendRequest: function (request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
                var options = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
                source.get('options').each(function (option) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
                    options.push({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
                        html    : option.get('innerHTML'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
                        index   : option.get('index'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
                        node    : option,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
                        selected: option.get('selected'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
                        text    : option.get('text'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
                        value   : option.get('value')
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
                    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
                that[_SOURCE_SUCCESS](options, request);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
    Creates a DataSource-like object that calls the specified  URL or executes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
    the specified YQL query for results. If the string starts with "select ",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
    "use ", or "set " (case-insensitive), it's assumed to be a YQL query;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
    otherwise, it's assumed to be a URL (which may be absolute or relative).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
    URLs containing a "{callback}" placeholder are assumed to be JSONP URLs; all
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
    others will use XHR. See the `source` attribute for more details.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
    @method _createStringSource
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
    @param {String} source URL or YQL query.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
    @return {Object} DataSource-like object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
    _createStringSource: function (source) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
        if (this._YQL_SOURCE_REGEX.test(source)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
            // Looks like a YQL query.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
            return this._createYQLSource(source);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
        } else if (source.indexOf('{callback}') !== -1) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
            // Contains a {callback} param and isn't a YQL query, so it must be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
            // JSONP.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
            return this._createJSONPSource(source);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
            // Not a YQL query or JSONP, so we'll assume it's an XHR URL.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
            return this._createIOSource(source);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
    Creates a DataSource-like object that uses the specified YQL query string to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
    create a YQL-based source. See the `source` attribute for details. If no
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
    `resultListLocator` is defined, this method will set a best-guess locator
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
    that might work for many typical YQL queries.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
    @method _createYQLSource
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
    @param {String} source YQL query.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
    @return {Object} DataSource-like object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
    _createYQLSource: function (source) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
        var that      = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
            yqlSource = {type: 'yql'},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
            lastRequest, loading, yqlRequest;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
        if (!that.get(RESULT_LIST_LOCATOR)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
            that.set(RESULT_LIST_LOCATOR, that._defaultYQLLocator);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
        function _sendRequest(request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
            var query      = request.query,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
                env        = that.get('yqlEnv'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
                maxResults = that.get(MAX_RESULTS),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
                callback, opts, yqlQuery;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
            yqlQuery = Lang.sub(source, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
                maxResults: maxResults > 0 ? maxResults : 1000,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
                request   : request.request,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
                query     : query
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
            if (that._cache && yqlQuery in that._cache) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
                that[_SOURCE_SUCCESS](that._cache[yqlQuery], request);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
                return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
            callback = function (data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
                that._cache && (that._cache[yqlQuery] = data);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
                that[_SOURCE_SUCCESS](data, request);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
            opts = {proto: that.get('yqlProtocol')};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
            // Only create a new YQLRequest instance if this is the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
            // first request. For subsequent requests, we'll reuse the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
            // original instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
            if (yqlRequest) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
                yqlRequest._callback   = callback;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
                yqlRequest._opts       = opts;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
                yqlRequest._params.q   = yqlQuery;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
                if (env) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
                    yqlRequest._params.env = env;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
                yqlRequest = new Y.YQLRequest(yqlQuery, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
                    on: {success: callback},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
                    allowCache: false // temp workaround until JSONP has per-URL callback proxies
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
                }, env ? {env: env} : null, opts);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
            yqlRequest.send();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
        yqlSource.sendRequest = function (request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
            // Keep track of the most recent request in case there are multiple
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
            // requests while we're waiting for the YQL module to load. Only the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
            // most recent request will be sent.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
            lastRequest = request;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
            if (!loading) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
                // Lazy-load the YQL module if necessary, then overwrite the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
                // sendRequest method to bypass this check in the future.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
                loading = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
                Y.use('yql', function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
                    yqlSource.sendRequest = _sendRequest;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
                    _sendRequest(lastRequest);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
        return yqlSource;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
    Default resultListLocator used when a string-based YQL source is set and the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
    implementer hasn't already specified one.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
    @method _defaultYQLLocator
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
    @param {Object} response YQL response object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
    @return {Array}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
    _defaultYQLLocator: function (response) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
        var results = response && response.query && response.query.results,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
            values;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
        if (results && Lang.isObject(results)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
            // If there's only a single value on YQL's results object, that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
            // value almost certainly contains the array of results we want. If
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
            // there are 0 or 2+ values, then the values themselves are most
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
            // likely the results we want.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
            values  = Y.Object.values(results) || [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
            results = values.length === 1 ? values[0] : values;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
            if (!Lang.isArray(results)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
                results = [results];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
            results = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
        return results;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
    Returns a formatted XHR URL based on the specified base _url_, _query_, and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
    the current _requestTemplate_ if any.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
    @method _getXHRUrl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
    @param {String} url Base URL.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
    @param {Object} request Request object containing `query` and `request`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
      properties.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
    @return {String} Formatted URL.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
    _getXHRUrl: function (url, request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
        var maxResults = this.get(MAX_RESULTS);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
        if (request.query !== request.request) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
            // Append the request template to the URL.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
            url += request.request;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
        return Lang.sub(url, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
            maxResults: maxResults > 0 ? maxResults : 1000,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
            query     : encodeURIComponent(request.query)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
    URL formatter passed to `JSONPRequest` instances.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
    @method _jsonpFormatter
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
    @param {String} url
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
    @param {String} proxy
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
    @param {String} query
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
    @return {String} Formatted URL
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
    _jsonpFormatter: function (url, proxy, query) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
        var maxResults      = this.get(MAX_RESULTS),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
            requestTemplate = this.get(REQUEST_TEMPLATE);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
        if (requestTemplate) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
            url += requestTemplate(query);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
        return Lang.sub(url, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
            callback  : proxy,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
            maxResults: maxResults > 0 ? maxResults : 1000,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
            query     : encodeURIComponent(query)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
// Add attributes to AutoCompleteBase.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
Y.mix(ACBase.ATTRS, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
    YQL environment file URL to load when the `source` is set to a YQL query.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
    Set this to `null` to use the default Open Data Tables environment file
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
    (http://datatables.org/alltables.env).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
    @attribute yqlEnv
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
    @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
    @default null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
    yqlEnv: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
        value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
    URL protocol to use when the `source` is set to a YQL query.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
    @attribute yqlProtocol
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
    @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
    @default 'http'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
    @for AutoCompleteBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
    yqlProtocol: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
        value: 'http'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
// Tell AutoCompleteBase about the new source types it can now support.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
Y.mix(ACBase.SOURCE_TYPES, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
    io    : '_createIOSource',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
    jsonp : '_createJSONPSource',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
    object: '_beforeCreateObjectSource', // Run our version before the base version.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
    select: '_createSelectSource',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
    string: '_createStringSource',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
    yql   : '_createYQLSource'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
}, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
}, '@VERSION@', {"optional": ["io-base", "json-parse", "jsonp", "yql"], "requires": ["autocomplete-base"]});