Version 3.18.1

APIs

  • Begin typing in the search box above to see results.
Show:

File: datasource/js/datasource-function.js

 /**
 * 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: {
 /**
 * Stores the function that will serve the response data.
 *
 * @attribute source
 * @type {Any}
 * @default null
 */
 source: {
 validator: LANG.isFunction
 }
 }
 });
 
 Y.extend(DSFn, Y.DataSource.Local, {
 /**
 * Passes query data to the source function. Fires <code>response</code>
 * event with the function results (synchronously).
 *
 * @method _defRequestFn
 * @param e {EventFacade} Event Facade with the following properties:
 * <dl>
 * <dt>tId (Number)</dt> <dd>Unique transaction ID.</dd>
 * <dt>request (Object)</dt> <dd>The request.</dd>
 * <dt>callback (Object)</dt> <dd>The callback object with the following
 * properties:
 * <dl>
 * <dt>success (Function)</dt> <dd>Success handler.</dd>
 * <dt>failure (Function)</dt> <dd>Failure handler.</dd>
 * </dl>
 * </dd>
 * <dt>cfg (Object)</dt> <dd>Configuration object.</dd>
 * </dl>
 * @protected
 */
 _defRequestFn: function(e) {
 var fn = this.get("source"),
 payload = e.details[0];
 
 if (fn) {
 try {
 payload.data = fn(e.request, this, e);
 } catch (ex) {
 Y.log("Function execution failure", "error", "datasource-function");
 payload.error = ex;
 }
 } else {
 Y.log("Function data failure", "error", "datasource-function");
 payload.error = new Error("Function data failure");
 }
 
 this.fire("data", payload);
 
 return e.tId;
 }
 });
 
 Y.DataSource.Function = DSFn;
 
 

AltStyle によって変換されたページ (->オリジナル) /