diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui3.0.0/build/datasource/datasource-local.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui3.0.0/build/datasource/datasource-local.js Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,336 @@ +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0 +build: 1549 +*/ +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); + } + + this.fire("data", Y.mix({data:data}, e)); + }, + + /** + * 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 || {}}); + return tId; + } +}); + +Y.namespace("DataSource").Local = DSLocal; + + + +}, '3.0.0' ,{requires:['base']});