Version 3.18.1

APIs

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

File: datasource/js/datasource-io.js

 /**
 * 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
 },
 
 /**
 * Default IO Config.
 *
 * @attribute ioConfig
 * @type Object
 * @default null
 */
 ioConfig: {
 value: null
 }
 }
 });
 
 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:[]};
 },
 
 /**
 * IO success callback.
 *
 * @method successHandler
 * @param id {String} Transaction ID.
 * @param response {String} Response.
 * @param e {EventFacade} Event facade.
 * @private
 */
 successHandler: function (id, response, e) {
 var defIOConfig = this.get("ioConfig"),
 payload = e.details[0];
 
 delete Y.DataSource.Local.transactions[e.tId];
 
 payload.data = response;
 this.fire("data", payload);
 
 Y.log("Received IO data response for \"" + e.request + "\"", "info", "datasource-io");
 
 if (defIOConfig && defIOConfig.on && defIOConfig.on.success) {
 defIOConfig.on.success.apply(defIOConfig.context || Y, arguments);
 }
 },
 
 /**
 * IO failure callback.
 *
 * @method failureHandler
 * @param id {String} Transaction ID.
 * @param response {String} Response.
 * @param e {EventFacade} Event facade.
 * @private
 */
 failureHandler: function (id, response, e) {
 var defIOConfig = this.get("ioConfig"),
 payload = e.details[0];
 
 delete Y.DataSource.Local.transactions[e.tId];
 
 payload.error = new Error("IO data failure");
 Y.log("IO data failure", "error", "datasource-io");
 
 payload.data = response;
 this.fire("data", payload);
 
 Y.log("Received IO data failure for \"" + e.request + "\"", "info", "datasource-io");
 
 if (defIOConfig && defIOConfig.on && defIOConfig.on.failure) {
 defIOConfig.on.failure.apply(defIOConfig.context || Y, arguments);
 }
 },
 
 /**
 * @property _queue
 * @description Object literal to manage asynchronous request/response
 * cycles enabled if queue needs to be managed (asyncMode/ioConnMode):
 * <dl>
 * <dt>interval {Number}</dt>
 * <dd>Interval ID of in-progress queue.</dd>
 * <dt>conn</dt>
 * <dd>In-progress connection identifier (if applicable).</dd>
 * <dt>requests {Object[]}</dt>
 * <dd>Array of queued request objects: {request:request, callback:callback}.</dd>
 * </dl>
 * @type Object
 * @default {interval:null, conn:null, requests:[]}
 * @private
 */
 _queue: null,
 
 /**
 * Passes query string to IO. Fires <code>response</code> event when
 * response is received asynchronously.
 *
 * @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 uri = this.get("source"),
 io = this.get("io"),
 defIOConfig = this.get("ioConfig"),
 request = e.request,
 cfg = Y.merge(defIOConfig, e.cfg, {
 on: Y.merge(defIOConfig, {
 success: this.successHandler,
 failure: this.failureHandler
 }),
 context: this,
 "arguments": e
 });
 
 // Support for POST transactions
 if(Y.Lang.isString(request)) {
 if(cfg.method && (cfg.method.toUpperCase() === "POST")) {
 cfg.data = cfg.data ? cfg.data+request : request;
 }
 else {
 uri += request;
 }
 }
 Y.DataSource.Local.transactions[e.tId] = io(uri, cfg);
 return e.tId;
 }
 });
 
 Y.DataSource.IO = DSIO;
 
 

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