diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui_3.0.0b1/build/datasource/datasource-polling-debug.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.0.0b1/build/datasource/datasource-polling-debug.js Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,93 @@ +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0b1 +build: 1163 +*/ +YUI.add('datasource-polling', function(Y) { + +/** + * Extends DataSource with polling functionality. + * + * @module datasource + * @submodule datasource-polling + */ + +/** + * Adds polling to the DataSource Utility. + * @class Pollable + * @extends DataSource.Local + */ +var LANG = Y.Lang, + + Pollable = function() { + this._intervals = {}; + }; + +Pollable.prototype = { + + /** + * @property _intervals + * @description Hash of polling interval IDs that have been enabled, + * stored here to be able to clear all intervals. + * @private + */ + _intervals: null, + + /** + * Sets up a polling mechanism to send requests at set intervals and forward + * responses to given callback. + * + * @method setInterval + * @param msec {Number} Length of interval in milliseconds. + * @param request {Object} Request object. + * @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 that will be passed back to the success and failure handlers.
+ *
+ * @return {Number} Interval ID. + */ + setInterval: function(msec, request, callback) { + var x = Y.later(msec, this, this.sendRequest, [request, callback], true); + this._intervals[x.id] = x; + return x.id; + }, + + /** + * Disables polling mechanism associated with the given interval ID. + * + * @method clearInterval + * @param id {Number} Interval ID. + */ + clearInterval: function(id, key) { + // In case of being called by clearAllIntervals() + id = key || id; + if(this._intervals[id]) { + // Clear the interval + this._intervals[id].cancel(); + // Clear from tracker + delete this._intervals[id]; + } + }, + + /** + * Clears all intervals. + * + * @method clearAllIntervals + */ + clearAllIntervals: function() { + Y.each(this._intervals, this.clearInterval, this); + } +}; + +Y.augment(Y.DataSource.Local, Pollable); + + + +}, '3.0.0b1' ,{requires:['datasource-local']});