datasource-function-debug.js revision 90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bc
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassYUI.add('datasource-function', function(Y) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Provides a DataSource implementation which can be used to retrieve data from a custom function.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module datasource
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule datasource-function
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Function subclass for the DataSource Utility.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class DataSource.Function
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends DataSource.Local
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassvar LANG = Y.Lang,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass DSFn = function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass DSFn.superclass.constructor.apply(this, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass };
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // DataSource.Function static properties
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.mix(DSFn, {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Class name.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property NAME
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type String
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @static
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @final
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @value "dataSourceFunction"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass NAME: "dataSourceFunction",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // DataSource.Function Attributes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass ATTRS: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute source
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Pointer to live data.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type MIXED
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default null
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass source: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass validator: LANG.isFunction
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.extend(DSFn, Y.DataSource.Local, {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Passes query string to IO. Fires <code>response</code> event when
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * response is received asynchronously.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _defRequestFn
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param e {Event.Facade} Event Facade with the following properties:
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dl>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>tId (Number)</dt> <dd>Unique transaction ID.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>request (Object)</dt> <dd>The request.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>callback (Object)</dt> <dd>The callback object with the following properties:
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dl>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>success (Function)</dt> <dd>Success handler.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>failure (Function)</dt> <dd>Failure handler.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * </dl>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * </dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>cfg (Object)</dt> <dd>Configuration object.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * </dl>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _defRequestFn: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var fn = this.get("source"),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith if (fn) {
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith try {
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith e.data = fn(e.request, this, e);
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith } catch (ex) {
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith Y.log("Function execution failure", "error", "datasource-function");
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith e.error = ex;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith } else {
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith Y.log("Function data failure", "error", "datasource-function");
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith e.error = new Error("Function data failure");
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith }
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith
90e5a8d35ce642d0156e8d1d8b8a8ad2bd3417bcLuke Smith this.fire("data", e);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return e.tId;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.DataSource.Function = DSFn;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass}, '@VERSION@' ,{requires:['datasource-local']});