diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui_3.0.0b1/build/datasource/datasource-debug.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/lib/yui/yui_3.0.0b1/build/datasource/datasource-debug.js Mon Nov 23 15:14:29 2009 +0100
@@ -0,0 +1,1454 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 3.0.0b1
+build: 1163
+*/
+YUI.add('datasource-local', function(Y) {
+
+/**
+ * The DataSource utility provides a common configurable interface for widgets to
+ * access a variety of data, from JavaScript arrays to online database servers.
+ *
+ * @module datasource
+ */
+
+/**
+ * Provides the base DataSource implementation, which can be extended to
+ * create DataSources for specific data protocols, such as the IO Utility, the
+ * Get Utility, or custom functions.
+ *
+ * @module datasource
+ * @submodule datasource-local
+ */
+
+/**
+ * Base class for the DataSource Utility.
+ * @class DataSource.Local
+ * @extends Base
+ * @constructor
+ */
+var LANG = Y.Lang,
+
+DSLocal = function() {
+ DSLocal.superclass.constructor.apply(this, arguments);
+};
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource static properties
+ //
+ /////////////////////////////////////////////////////////////////////////////
+Y.mix(DSLocal, {
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceLocal"
+ */
+ NAME: "dataSourceLocal",
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ /**
+ * @attribute source
+ * @description Pointer to live data.
+ * @type MIXED
+ * @default null
+ */
+ source: {
+ value: null
+ }
+ },
+
+ /**
+ * Global transaction counter.
+ *
+ * @property DataSource._tId
+ * @type Number
+ * @static
+ * @private
+ * @default 0
+ */
+ _tId: 0,
+
+ /**
+ * Executes a given callback. The third param determines whether to execute
+ *
+ * @method DataSource.issueCallback
+ * @param callback {Object} The callback object.
+ * @param params {Array} params to be passed to the callback method
+ * @param error {Boolean} whether an error occurred
+ * @static
+ */
+ issueCallback: function (e) {
+ if(e.callback) {
+ var callbackFunc = (e.error && e.callback.failure) || e.callback.success;
+ if (callbackFunc) {
+ callbackFunc(e);
+ }
+ }
+ }
+});
+
+Y.extend(DSLocal, Y.Base, {
+ /**
+ * Internal init() handler.
+ *
+ * @method initializer
+ * @param config {Object} Config object.
+ * @private
+ */
+ initializer: function(config) {
+ this._initEvents();
+ },
+
+ /**
+ * This method creates all the events for this module.
+ * @method _initEvents
+ * @private
+ */
+ _initEvents: function() {
+ /**
+ * Fired when a data request is received.
+ *
+ * @event request
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object.
+ * - cfg (Object)
- Configuration object.
+ *
+ * @preventable _defRequestFn
+ */
+ this.publish("request", {defaultFn: Y.bind("_defRequestFn", this), queuable:true});
+
+ /**
+ * Fired when raw data is received.
+ *
+ * @event data
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ * - data (Object)
- Raw data.
+ *
+ * @preventable _defDataFn
+ */
+ this.publish("data", {defaultFn: Y.bind("_defDataFn", this), queuable:true});
+
+ /**
+ * Fired when response is returned.
+ *
+ * @event response
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ * - data (Object)
- Raw data.
+ * - response (Object)
- Normalized response object with the following properties:
+ *
+ * - results (Object)
- Parsed results.
+ * - meta (Object)
- Parsed meta data.
+ * - error (Boolean)
- Error flag.
+ *
+ *
+ *
+ * @preventable _defResponseFn
+ */
+ this.publish("response", {defaultFn: Y.bind("_defResponseFn", this), queuable:true});
+
+ /**
+ * Fired when an error is encountered.
+ *
+ * @event error
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ * - data (Object)
- Raw data.
+ * - response (Object)
- Normalized response object with the following properties:
+ *
+ * - results (Object)
- Parsed results.
+ * - meta (Object)
- Parsed meta data.
+ * - error (Object)
- Error object.
+ *
+ *
+ *
+ */
+
+ },
+
+ /**
+ * Manages request/response transaction. Must fire response
+ * event when response is received. This method should be implemented by
+ * subclasses to achieve more complex behavior such as accessing remote data.
+ *
+ * @method _defRequestFn
+ * @param e {Event.Facade} Event Facadewith the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ *
+ * @protected
+ */
+ _defRequestFn: function(e) {
+ var data = this.get("source");
+
+ // Problematic data
+ if(LANG.isUndefined(data)) {
+ e.error = new Error("Local source undefined");
+ }
+ if(e.error) {
+ this.fire("error", e);
+ Y.log("Error in response", "error", "datasource-local");
+ }
+
+ this.fire("data", Y.mix({data:data}, e));
+ Y.log("Transaction " + e.tId + " complete. Request: " +
+ Y.dump(e.request) + " . Response: " + Y.dump(e.response), "info", "datasource-local");
+ },
+
+ /**
+ * Normalizes raw data into a response that includes results and meta properties.
+ *
+ * @method _defDataFn
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ * - data (Object)
- Raw data.
+ *
+ * @protected
+ */
+ _defDataFn: function(e) {
+ var data = e.data,
+ meta = e.meta,
+ response = {
+ results: (LANG.isArray(data)) ? data : [data],
+ meta: (meta) ? meta : {}
+ };
+
+ this.fire("response", Y.mix({response: response}, e));
+ },
+
+ /**
+ * Sends data as a normalized response to callback.
+ *
+ * @method _defResponseFn
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ * - data (Object)
- Raw data.
+ * - response (Object)
- Normalized response object with the following properties:
+ *
+ * - results (Object)
- Parsed results.
+ * - meta (Object)
- Parsed meta data.
+ * - error (Boolean)
- Error flag.
+ *
+ *
+ *
+ * @protected
+ */
+ _defResponseFn: function(e) {
+ // Send the response back to the callback
+ DSLocal.issueCallback(e);
+ },
+
+ /**
+ * Generates a unique transaction ID and fires request event.
+ *
+ * @method sendRequest
+ * @param request {Object} Request.
+ * @param callback {Object} An object literal with the following properties:
+ *
+ * success
+ * - The function to call when the data is ready.
+ * failure
+ * - The function to call upon a response failure condition.
+ * argument
+ * - Arbitrary data payload that will be passed back to the success and failure handlers.
+ *
+ * @param cfg {Object} Configuration object
+ * @return {Number} Transaction ID.
+ */
+ sendRequest: function(request, callback, cfg) {
+ var tId = DSLocal._tId++;
+ this.fire("request", {tId:tId, request:request, callback:callback, cfg:cfg || {}});
+ Y.log("Transaction " + tId + " sent request: " + Y.dump(request), "info", "datasource-local");
+ return tId;
+ }
+});
+
+Y.namespace("DataSource").Local = DSLocal;
+
+
+
+}, '3.0.0b1' ,{requires:['base']});
+
+YUI.add('datasource-io', function(Y) {
+
+/**
+ * Provides a DataSource implementation which can be used to retrieve data via the IO Utility.
+ *
+ * @module datasource
+ * @submodule datasource-io
+ */
+
+/**
+ * IO subclass for the DataSource Utility.
+ * @class DataSource.IO
+ * @extends DataSource.Local
+ * @constructor
+ */
+var DSIO = function() {
+ DSIO.superclass.constructor.apply(this, arguments);
+};
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource.IO static properties
+ //
+ /////////////////////////////////////////////////////////////////////////////
+Y.mix(DSIO, {
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceIO"
+ */
+ NAME: "dataSourceIO",
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource.IO Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ /**
+ * Pointer to IO Utility.
+ *
+ * @attribute io
+ * @type Y.io
+ * @default Y.io
+ */
+ io: {
+ value: Y.io,
+ cloneDefaultValue: false
+ }
+ }
+});
+
+Y.extend(DSIO, Y.DataSource.Local, {
+ /**
+ * Internal init() handler.
+ *
+ * @method initializer
+ * @param config {Object} Config object.
+ * @private
+ */
+ initializer: function(config) {
+ this._queue = {interval:null, conn:null, requests:[]};
+ },
+
+ /**
+ * @property _queue
+ * @description Object literal to manage asynchronous request/response
+ * cycles enabled if queue needs to be managed (asyncMode/ioConnMode):
+ *
+ * - interval {Number}
+ * - Interval ID of in-progress queue.
+ * - conn
+ * - In-progress connection identifier (if applicable).
+ * - requests {Object[]}
+ * - Array of queued request objects: {request:request, callback:callback}.
+ *
+ * @type Object
+ * @default {interval:null, conn:null, requests:[]}
+ * @private
+ */
+ _queue: null,
+
+ /**
+ * Passes query string to IO. Fires response event when
+ * response is received asynchronously.
+ *
+ * @method _defRequestFn
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ *
+ * @protected
+ */
+ _defRequestFn: function(e) {
+ var uri = this.get("source"),
+ cfg = Y.mix(e.cfg, {
+ on: {
+ success: function (id, response, e) {
+ this.fire("data", Y.mix({data:response}, e));
+ Y.log("Received IO data response for \"" + e.request + "\"", "info", "datasource-io");
+ },
+ failure: function (id, response, e) {
+ e.error = new Error("IO data failure");
+ this.fire("error", Y.mix({data:response}, e));
+ this.fire("data", Y.mix({data:response}, e));
+ Y.log("Received IO data failure for \"" + e.request + "\"", "info", "datasource-io");
+ }
+ },
+ context: this,
+ arguments: e
+ });
+
+ this.get("io")(uri, cfg);
+ return e.tId;
+ }
+});
+
+Y.DataSource.IO = DSIO;
+
+
+
+
+}, '3.0.0b1' ,{requires:['datasource-local', 'io']});
+
+YUI.add('datasource-get', function(Y) {
+
+/**
+ * Provides a DataSource implementation which can be used to retrieve data via the Get Utility.
+ *
+ * @module datasource
+ * @submodule datasource-get
+ */
+
+/**
+ * Get Utility subclass for the DataSource Utility.
+ * @class DataSource.Get
+ * @extends DataSource.Local
+ * @constructor
+ */
+var DSGet = function() {
+ DSGet.superclass.constructor.apply(this, arguments);
+};
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource.Get static properties
+ //
+ /////////////////////////////////////////////////////////////////////////////
+Y.mix(DSGet, {
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceGet"
+ */
+ NAME: "dataSourceGet",
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource.Get Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ /**
+ * Pointer to Get Utility.
+ *
+ * @attribute get
+ * @type Y.Get
+ * @default Y.Get
+ */
+ get: {
+ value: Y.Get,
+ cloneDefaultValue: false
+ },
+
+/**
+ * Defines request/response management in the following manner:
+ *
+ *
+ * - ignoreStaleResponses
+ * - Send all requests, but handle only the response for the most recently sent request.
+ * - allowAll
+ * - Send all requests and handle all responses.
+ *
+ *
+ * @attribute asyncMode
+ * @type String
+ * @default "allowAll"
+ */
+asyncMode: {
+ value: "allowAll"
+},
+
+/**
+ * Callback string parameter name sent to the remote script. By default,
+ * requests are sent to
+ * <URI>?<scriptCallbackParam>=callbackFunction
+ *
+ * @attribute scriptCallbackParam
+ * @type String
+ * @default "callback"
+ */
+scriptCallbackParam : {
+ value: "callback"
+},
+
+/**
+ * Accepts the DataSource instance and a callback ID, and returns a callback
+ * param/value string that gets appended to the script URI. Implementers
+ * can customize this string to match their server's query syntax.
+ *
+ * @attribute generateRequestCallback
+ * @type Function
+ */
+generateRequestCallback : {
+ value: function(self, id) {
+ return "&" + self.get("scriptCallbackParam") + "=YUI.Env.DataSource.callbacks["+id+"]" ;
+ }
+}
+
+
+
+
+
+ },
+
+ /**
+ * Global array of callback functions, one for each request sent.
+ *
+ * @property callbacks
+ * @type Function[]
+ * @static
+ */
+ callbacks : [],
+
+ /**
+ * Unique ID to track requests.
+ *
+ * @property _tId
+ * @type Number
+ * @private
+ * @static
+ */
+ _tId : 0
+});
+
+Y.extend(DSGet, Y.DataSource.Local, {
+ /**
+ * Passes query string to Get Utility. Fires response event when
+ * response is received asynchronously.
+ *
+ * @method _defRequestFn
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ *
+ * @protected
+ */
+ _defRequestFn: function(e) {
+ var uri = this.get("source"),
+ get = this.get("get"),
+ id = DSGet._tId++,
+ self = this;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ // Dynamically add handler function with a closure to the callback stack
+ YUI.Env.DataSource.callbacks[id] = Y.rbind(function(response) {
+ if((self.get("asyncMode") !== "ignoreStaleResponses")||
+ (id === DSGet.callbacks.length-1)) { // Must ignore stale responses
+
+ self.fire("data", Y.mix({data:response}, e));
+ }
+ else {
+ Y.log("DataSource ignored stale response for id " + e.tId + "(" + e.request + ")", "info", "datasource-get");
+ }
+
+ delete DSGet.callbacks[id];
+ }, this, id);
+
+ // We are now creating a request
+ uri += e.request + this.get("generateRequestCallback")(this, id);
+ //uri = this.doBefore(sUri);
+ Y.log("DataSource is querying URL " + uri, "info", "datasource-get");
+ get.script(uri, {
+ autopurge: true,
+ // Works in Firefox only....
+ onFailure: Y.bind(function(e) {
+ e.error = new Error("Script node data failure");
+ this.fire("error", e);
+ }, this, e)
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ return e.tId;
+ }
+});
+
+Y.DataSource.Get = DSGet;
+YUI.namespace("Env.DataSource.callbacks");
+
+
+
+
+}, '3.0.0b1' ,{requires:['datasource-local', 'get']});
+
+YUI.add('datasource-function', function(Y) {
+
+/**
+ * Provides a DataSource implementation which can be used to retrieve data from a custom function.
+ *
+ * @module datasource
+ * @submodule datasource-function
+ */
+
+/**
+ * Function subclass for the DataSource Utility.
+ * @class DataSource.Function
+ * @extends DataSource.Local
+ * @constructor
+ */
+var LANG = Y.Lang,
+
+ DSFn = function() {
+ DSFn.superclass.constructor.apply(this, arguments);
+ };
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource.Function static properties
+ //
+ /////////////////////////////////////////////////////////////////////////////
+Y.mix(DSFn, {
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceFunction"
+ */
+ NAME: "dataSourceFunction",
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSource.Function Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ /**
+ * @attribute source
+ * @description Pointer to live data.
+ * @type MIXED
+ * @default null
+ */
+ source: {
+ validator: LANG.isFunction
+ }
+ }
+});
+
+Y.extend(DSFn, Y.DataSource.Local, {
+ /**
+ * Passes query string to IO. Fires response event when
+ * response is received asynchronously.
+ *
+ * @method _defRequestFn
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ *
+ * @protected
+ */
+ _defRequestFn: function(e) {
+ var fn = this.get("source"),
+ response;
+
+ if(fn) {
+ response = fn(e.request, this, e);
+ this.fire("data", Y.mix({data:response}, e));
+ }
+ else {
+ e.error = new Error("Function data failure");
+ this.fire("error", e);
+ }
+
+ return e.tId;
+ }
+});
+
+Y.DataSource.Function = DSFn;
+
+
+
+
+}, '3.0.0b1' ,{requires:['datasource-local']});
+
+YUI.add('datasource-cache', function(Y) {
+
+/**
+ * Extends DataSource with caching functionality.
+ *
+ * @module datasource
+ * @submodule datasource-cache
+ */
+
+/**
+ * Adds cacheability to the DataSource Utility.
+ * @class DataSourceCache
+ * @extends Cache
+ */
+var DataSourceCache = function() {
+ DataSourceCache.superclass.constructor.apply(this, arguments);
+};
+
+Y.mix(DataSourceCache, {
+ /**
+ * The namespace for the plugin. This will be the property on the host which
+ * references the plugin instance.
+ *
+ * @property NS
+ * @type String
+ * @static
+ * @final
+ * @value "cache"
+ */
+ NS: "cache",
+
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceCache"
+ */
+ NAME: "dataSourceCache",
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSourceCache Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+
+ }
+});
+
+Y.extend(DataSourceCache, Y.Cache, {
+ /**
+ * Internal init() handler.
+ *
+ * @method initializer
+ * @param config {Object} Config object.
+ * @private
+ */
+ initializer: function(config) {
+ this.doBefore("_defRequestFn", this._beforeDefRequestFn);
+ this.doBefore("_defResponseFn", this._beforeDefResponseFn);
+ },
+
+ /**
+ * First look for cached response, then send request to live data.
+ *
+ * @method _beforeDefRequestFn
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object.
+ * - cfg (Object)
- Configuration object.
+ *
+ * @protected
+ */
+ _beforeDefRequestFn: function(e) {
+ // Is response already in the Cache?
+ var entry = (this.retrieve(e.request)) || null;
+ if(entry && entry.response) {
+ this.get("host").fire("response", Y.mix({response: entry.response}, e));
+ return new Y.Do.Halt("DataSourceCache plugin halted _defRequestFn");
+ }
+ },
+
+ /**
+ * Adds data to cache before returning data.
+ *
+ * @method _beforeDefResponseFn
+ * @param e {Event.Facade} Event Facade with the following properties:
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - data (Object)
- Raw data.
+ * - response (Object)
- Normalized response object with the following properties:
+ *
+ * - cached (Object)
- True when response is cached.
+ * - results (Object)
- Parsed results.
+ * - meta (Object)
- Parsed meta data.
+ * - error (Object)
- Error object.
+ *
+ *
+ * - cfg (Object)
- Configuration object.
+ *
+ * @protected
+ */
+ _beforeDefResponseFn: function(e) {
+ // Add to Cache before returning
+ if(e.response && !e.response.cached) {
+ e.response.cached = true;
+ this.add(e.request, e.response, (e.callback && e.callback.argument));
+ }
+ }
+});
+
+Y.namespace('Plugin').DataSourceCache = DataSourceCache;
+
+
+
+}, '3.0.0b1' ,{requires:['datasource-local', 'cache']});
+
+YUI.add('datasource-jsonschema', function(Y) {
+
+/**
+ * Extends DataSource with schema-parsing on JSON data.
+ *
+ * @module datasource
+ * @submodule datasource-jsonschema
+ */
+
+/**
+ * Adds schema-parsing to the DataSource Utility.
+ * @class DataSourceJSONSchema
+ * @extends Plugin.Base
+ */
+var DataSourceJSONSchema = function() {
+ DataSourceJSONSchema.superclass.constructor.apply(this, arguments);
+};
+
+Y.mix(DataSourceJSONSchema, {
+ /**
+ * The namespace for the plugin. This will be the property on the host which
+ * references the plugin instance.
+ *
+ * @property NS
+ * @type String
+ * @static
+ * @final
+ * @value "schema"
+ */
+ NS: "schema",
+
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceJSONSchema"
+ */
+ NAME: "dataSourceJSONSchema",
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSourceJSONSchema Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ schema: {
+ //value: {}
+ }
+ }
+});
+
+Y.extend(DataSourceJSONSchema, Y.Plugin.Base, {
+ /**
+ * Internal init() handler.
+ *
+ * @method initializer
+ * @param config {Object} Config object.
+ * @private
+ */
+ initializer: function(config) {
+ this.doBefore("_defDataFn", this._beforeDefDataFn);
+ },
+
+ /**
+ * Parses raw data into a normalized response.
+ *
+ * @method _beforeDefDataFn
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - data (Object)
- Raw data.
+ *
+ * @protected
+ */
+ _beforeDefDataFn: function(e) {
+ var data = (Y.DataSource.IO && (this.get("host") instanceof Y.DataSource.IO) && Y.Lang.isString(e.data.responseText)) ? e.data.responseText : e.data,
+ response = Y.DataSchema.JSON.apply(this.get("schema"), data);
+
+ // Default
+ if(!response) {
+ response = {
+ meta: {},
+ results: data
+ };
+ }
+
+ this.get("host").fire("response", Y.mix({response:response}, e));
+ return new Y.Do.Halt("DataSourceJSONSchema plugin halted _defDataFn");
+ }
+});
+
+Y.namespace('Plugin').DataSourceJSONSchema = DataSourceJSONSchema;
+
+
+
+}, '3.0.0b1' ,{requires:['plugin', 'datasource-local', 'dataschema-json']});
+
+YUI.add('datasource-xmlschema', function(Y) {
+
+/**
+ * Extends DataSource with schema-parsing on XML data.
+ *
+ * @module datasource
+ * @submodule datasource-xmlschema
+ */
+
+/**
+ * Adds schema-parsing to the DataSource Utility.
+ * @class DataSourceXMLSchema
+ * @extends Plugin.Base
+ */
+var DataSourceXMLSchema = function() {
+ DataSourceXMLSchema.superclass.constructor.apply(this, arguments);
+};
+
+Y.mix(DataSourceXMLSchema, {
+ /**
+ * The namespace for the plugin. This will be the property on the host which
+ * references the plugin instance.
+ *
+ * @property NS
+ * @type String
+ * @static
+ * @final
+ * @value "schema"
+ */
+ NS: "schema",
+
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceXMLSchema"
+ */
+ NAME: "dataSourceXMLSchema",
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSourceXMLSchema Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ schema: {
+ //value: {}
+ }
+ }
+});
+
+Y.extend(DataSourceXMLSchema, Y.Plugin.Base, {
+ /**
+ * Internal init() handler.
+ *
+ * @method initializer
+ * @param config {Object} Config object.
+ * @private
+ */
+ initializer: function(config) {
+ this.doBefore("_defDataFn", this._beforeDefDataFn);
+ },
+
+ /**
+ * Parses raw data into a normalized response.
+ *
+ * @method _beforeDefDataFn
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - data (Object)
- Raw data.
+ *
+ * @protected
+ */
+ _beforeDefDataFn: function(e) {
+ var data = (Y.DataSource.IO && (this.get("host") instanceof Y.DataSource.IO) && e.data.responseXML && (e.data.responseXML.nodeType === 9)) ? e.data.responseXML : e.data,
+ response = Y.DataSchema.XML.apply(this.get("schema"), data);
+
+ // Default
+ if(!response) {
+ response = {
+ meta: {},
+ results: data
+ };
+ }
+
+ this.get("host").fire("response", Y.mix({response:response}, e));
+ return new Y.Do.Halt("DataSourceXMLSchema plugin halted _defDataFn");
+ }
+});
+
+Y.namespace('Plugin').DataSourceXMLSchema = DataSourceXMLSchema;
+
+
+
+}, '3.0.0b1' ,{requires:['plugin', 'datasource-local', 'dataschema-xml']});
+
+YUI.add('datasource-arrayschema', function(Y) {
+
+/**
+ * Extends DataSource with schema-parsing on array data.
+ *
+ * @module datasource
+ * @submodule datasource-arrayschema
+ */
+
+/**
+ * Adds schema-parsing to the DataSource Utility.
+ * @class DataSourceArraySchema
+ * @extends Plugin.Base
+ */
+var DataSourceArraySchema = function() {
+ DataSourceArraySchema.superclass.constructor.apply(this, arguments);
+};
+
+Y.mix(DataSourceArraySchema, {
+ /**
+ * The namespace for the plugin. This will be the property on the host which
+ * references the plugin instance.
+ *
+ * @property NS
+ * @type String
+ * @static
+ * @final
+ * @value "schema"
+ */
+ NS: "schema",
+
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceArraySchema"
+ */
+ NAME: "dataSourceArraySchema",
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSourceArraySchema Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ schema: {
+ //value: {}
+ }
+ }
+});
+
+Y.extend(DataSourceArraySchema, Y.Plugin.Base, {
+ /**
+ * Internal init() handler.
+ *
+ * @method initializer
+ * @param config {Object} Config object.
+ * @private
+ */
+ initializer: function(config) {
+ this.doBefore("_defDataFn", this._beforeDefDataFn);
+ },
+
+ /**
+ * Parses raw data into a normalized response.
+ *
+ * @method _beforeDefDataFn
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - data (Object)
- Raw data.
+ *
+ * @protected
+ */
+ _beforeDefDataFn: function(e) {
+ var data = (Y.DataSource.IO && (this.get("host") instanceof Y.DataSource.IO) && Y.Lang.isString(e.data.responseText)) ? e.data.responseText : e.data,
+ response = Y.DataSchema.Array.apply(this.get("schema"), data);
+
+ // Default
+ if(!response) {
+ response = {
+ meta: {},
+ results: data
+ };
+ }
+
+ this.get("host").fire("response", Y.mix({response:response}, e));
+ return new Y.Do.Halt("DataSourceArraySchema plugin halted _defDataFn");
+ }
+});
+
+Y.namespace('Plugin').DataSourceArraySchema = DataSourceArraySchema;
+
+
+
+}, '3.0.0b1' ,{requires:['plugin', 'datasource-local', 'dataschema-array']});
+
+YUI.add('datasource-textschema', function(Y) {
+
+/**
+ * Extends DataSource with schema-parsing on text data.
+ *
+ * @module datasource
+ * @submodule datasource-textschema
+ */
+
+/**
+ * Adds schema-parsing to the DataSource Utility.
+ * @class DataSourceTextSchema
+ * @extends Plugin.Base
+ */
+var DataSourceTextSchema = function() {
+ DataSourceTextSchema.superclass.constructor.apply(this, arguments);
+};
+
+Y.mix(DataSourceTextSchema, {
+ /**
+ * The namespace for the plugin. This will be the property on the host which
+ * references the plugin instance.
+ *
+ * @property NS
+ * @type String
+ * @static
+ * @final
+ * @value "schema"
+ */
+ NS: "schema",
+
+ /**
+ * Class name.
+ *
+ * @property NAME
+ * @type String
+ * @static
+ * @final
+ * @value "dataSourceTextSchema"
+ */
+ NAME: "dataSourceTextSchema",
+
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // DataSourceTextSchema Attributes
+ //
+ /////////////////////////////////////////////////////////////////////////////
+
+ ATTRS: {
+ schema: {
+ //value: {}
+ }
+ }
+});
+
+Y.extend(DataSourceTextSchema, Y.Plugin.Base, {
+ /**
+ * Internal init() handler.
+ *
+ * @method initializer
+ * @param config {Object} Config object.
+ * @private
+ */
+ initializer: function(config) {
+ this.doBefore("_defDataFn", this._beforeDefDataFn);
+ },
+
+ /**
+ * Parses raw data into a normalized response.
+ *
+ * @method _beforeDefDataFn
+ *
+ * - tId (Number)
- Unique transaction ID.
+ * - request (Object)
- The request.
+ * - callback (Object)
- The callback object with the following properties:
+ *
+ * - success (Function)
- Success handler.
+ * - failure (Function)
- Failure handler.
+ *
+ *
+ * - data (Object)
- Raw data.
+ *
+ * @protected
+ */
+ _beforeDefDataFn: function(e) {
+ var data = (Y.DataSource.IO && (this.get("host") instanceof Y.DataSource.IO) && Y.Lang.isString(e.data.responseText)) ? e.data.responseText : e.data,
+ response = Y.DataSchema.Text.apply(this.get("schema"), data);
+
+ // Default
+ if(!response) {
+ response = {
+ meta: {},
+ results: data
+ };
+ }
+
+ this.get("host").fire("response", Y.mix({response:response}, e));
+ return new Y.Do.Halt("DataSourceTextSchema plugin halted _defDataFn");
+ }
+});
+
+Y.namespace('Plugin').DataSourceTextSchema = DataSourceTextSchema;
+
+
+
+}, '3.0.0b1' ,{requires:['plugin', 'datasource-local', 'dataschema-text']});
+
+YUI.add('datasource-polling', function(Y) {
+
+/**
+ * Extends DataSource with polling functionality.
+ *
+ * @module datasource
+ * @submodule datasource-polling
+ */
+
+/**
+ * Adds polling to the DataSource Utility.
+ * @class Pollable
+ * @extends DataSource.Local
+ */
+var LANG = Y.Lang,
+
+ Pollable = function() {
+ this._intervals = {};
+ };
+
+Pollable.prototype = {
+
+ /**
+ * @property _intervals
+ * @description Hash of polling interval IDs that have been enabled,
+ * stored here to be able to clear all intervals.
+ * @private
+ */
+ _intervals: null,
+
+ /**
+ * Sets up a polling mechanism to send requests at set intervals and forward
+ * responses to given callback.
+ *
+ * @method setInterval
+ * @param msec {Number} Length of interval in milliseconds.
+ * @param request {Object} Request object.
+ * @param callback {Object} An object literal with the following properties:
+ *
+ * success
+ * - The function to call when the data is ready.
+ * failure
+ * - The function to call upon a response failure condition.
+ * argument
+ * - Arbitrary data that will be passed back to the success and failure handlers.
+ *
+ * @return {Number} Interval ID.
+ */
+ setInterval: function(msec, request, callback) {
+ var x = Y.later(msec, this, this.sendRequest, [request, callback], true);
+ this._intervals[x.id] = x;
+ return x.id;
+ },
+
+ /**
+ * Disables polling mechanism associated with the given interval ID.
+ *
+ * @method clearInterval
+ * @param id {Number} Interval ID.
+ */
+ clearInterval: function(id, key) {
+ // In case of being called by clearAllIntervals()
+ id = key || id;
+ if(this._intervals[id]) {
+ // Clear the interval
+ this._intervals[id].cancel();
+ // Clear from tracker
+ delete this._intervals[id];
+ }
+ },
+
+ /**
+ * Clears all intervals.
+ *
+ * @method clearAllIntervals
+ */
+ clearAllIntervals: function() {
+ Y.each(this._intervals, this.clearInterval, this);
+ }
+};
+
+Y.augment(Y.DataSource.Local, Pollable);
+
+
+
+}, '3.0.0b1' ,{requires:['datasource-local']});
+
+
+
+YUI.add('datasource', function(Y){}, '3.0.0b1' ,{use:['datasource-local','datasource-io','datasource-get','datasource-function','datasource-cache','datasource-jsonschema','datasource-xmlschema','datasource-arrayschema','datasource-textschema','datasource-polling']});
+