/* Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html version: 3.3.0 build: 3167 */ 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) { try { response = fn(e.request, this, e); this.fire("data", Y.mix({data:response}, e)); } catch(error) { e.error = error; this.fire("data", e); } } else { e.error = new Error("Function data failure"); this.fire("data", e); } return e.tId; } }); Y.DataSource.Function = DSFn; }, '3.3.0' ,{requires:['datasource-local']});