X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6e39d509471fe9b4e2660e0d1631b350d0c66f40..c8256059947f3aa8f5b0a9a2acf55e2142bb4742:/src/direct/PollingProvider.js?ds=inline diff --git a/src/direct/PollingProvider.js b/src/direct/PollingProvider.js index 1c1d4864..8a757e64 100644 --- a/src/direct/PollingProvider.js +++ b/src/direct/PollingProvider.js @@ -1,151 +1,151 @@ /*! - * Ext JS Library 3.1.0 - * Copyright(c) 2006-2009 Ext JS, LLC + * Ext JS Library 3.2.1 + * Copyright(c) 2006-2010 Ext JS, Inc. * licensing@extjs.com * http://www.extjs.com/license */ -/** - * @class Ext.direct.PollingProvider - * @extends Ext.direct.JsonProvider - * - *
Provides for repetitive polling of the server at distinct {@link #interval intervals}. - * The initial request for data originates from the client, and then is responded to by the - * server.
- * - *All configurations for the PollingProvider should be generated by the server-side - * API portion of the Ext.Direct stack.
- * - *An instance of PollingProvider may be created directly via the new keyword or by simply - * specifying type = 'polling'. For example:
- *
-var pollA = new Ext.direct.PollingProvider({
- type:'polling',
- url: 'php/pollA.php',
-});
-Ext.Direct.addProvider(pollA);
-pollA.disconnect();
-
-Ext.Direct.addProvider(
- {
- type:'polling',
- url: 'php/pollB.php',
- id: 'pollB-provider'
- }
-);
-var pollB = Ext.Direct.getProvider('pollB-provider');
- *
- */
-Ext.direct.PollingProvider = Ext.extend(Ext.direct.JsonProvider, {
- /**
- * @cfg {Number} priority
- * Priority of the request (defaults to 3). See {@link Ext.direct.Provider#priority}.
- */
- // override default priority
- priority: 3,
-
- /**
- * @cfg {Number} interval
- * How often to poll the server-side in milliseconds (defaults to 3000 - every
- * 3 seconds).
- */
- interval: 3000,
-
- /**
- * @cfg {Object} baseParams An object containing properties which are to be sent as parameters
- * on every polling request
- */
-
- /**
- * @cfg {String/Function} url
- * The url which the PollingProvider should contact with each request. This can also be
- * an imported Ext.Direct method which will accept the baseParams as its only argument.
- */
-
- // private
- constructor : function(config){
- Ext.direct.PollingProvider.superclass.constructor.call(this, config);
- this.addEvents(
- /**
- * @event beforepoll
- * Fired immediately before a poll takes place, an event handler can return false
- * in order to cancel the poll.
- * @param {Ext.direct.PollingProvider}
- */
- 'beforepoll',
- /**
- * @event poll
- * This event has not yet been implemented.
- * @param {Ext.direct.PollingProvider}
- */
- 'poll'
- );
- },
-
- // inherited
- isConnected: function(){
- return !!this.pollTask;
- },
-
- /**
- * Connect to the server-side and begin the polling process. To handle each
- * response subscribe to the data event.
- */
- connect: function(){
- if(this.url && !this.pollTask){
- this.pollTask = Ext.TaskMgr.start({
- run: function(){
- if(this.fireEvent('beforepoll', this) !== false){
- if(typeof this.url == 'function'){
- this.url(this.baseParams);
- }else{
- Ext.Ajax.request({
- url: this.url,
- callback: this.onData,
- scope: this,
- params: this.baseParams
- });
- }
- }
- },
- interval: this.interval,
- scope: this
- });
- this.fireEvent('connect', this);
- }else if(!this.url){
- throw 'Error initializing PollingProvider, no url configured.';
- }
- },
-
- /**
- * Disconnect from the server-side and stop the polling process. The disconnect
- * event will be fired on a successful disconnect.
- */
- disconnect: function(){
- if(this.pollTask){
- Ext.TaskMgr.stop(this.pollTask);
- delete this.pollTask;
- this.fireEvent('disconnect', this);
- }
- },
-
- // private
- onData: function(opt, success, xhr){
- if(success){
- var events = this.getEvents(xhr);
- for(var i = 0, len = events.length; i < len; i++){
- var e = events[i];
- this.fireEvent('data', this, e);
- }
- }else{
- var e = new Ext.Direct.ExceptionEvent({
- data: e,
- code: Ext.Direct.exceptions.TRANSPORT,
- message: 'Unable to connect to the server.',
- xhr: xhr
- });
- this.fireEvent('data', this, e);
- }
- }
-});
-
+/**
+ * @class Ext.direct.PollingProvider
+ * @extends Ext.direct.JsonProvider
+ *
+ * Provides for repetitive polling of the server at distinct {@link #interval intervals}. + * The initial request for data originates from the client, and then is responded to by the + * server.
+ * + *All configurations for the PollingProvider should be generated by the server-side + * API portion of the Ext.Direct stack.
+ * + *An instance of PollingProvider may be created directly via the new keyword or by simply + * specifying type = 'polling'. For example:
+ *
+var pollA = new Ext.direct.PollingProvider({
+ type:'polling',
+ url: 'php/pollA.php',
+});
+Ext.Direct.addProvider(pollA);
+pollA.disconnect();
+
+Ext.Direct.addProvider(
+ {
+ type:'polling',
+ url: 'php/pollB.php',
+ id: 'pollB-provider'
+ }
+);
+var pollB = Ext.Direct.getProvider('pollB-provider');
+ *
+ */
+Ext.direct.PollingProvider = Ext.extend(Ext.direct.JsonProvider, {
+ /**
+ * @cfg {Number} priority
+ * Priority of the request (defaults to 3). See {@link Ext.direct.Provider#priority}.
+ */
+ // override default priority
+ priority: 3,
+
+ /**
+ * @cfg {Number} interval
+ * How often to poll the server-side in milliseconds (defaults to 3000 - every
+ * 3 seconds).
+ */
+ interval: 3000,
+
+ /**
+ * @cfg {Object} baseParams An object containing properties which are to be sent as parameters
+ * on every polling request
+ */
+
+ /**
+ * @cfg {String/Function} url
+ * The url which the PollingProvider should contact with each request. This can also be
+ * an imported Ext.Direct method which will accept the baseParams as its only argument.
+ */
+
+ // private
+ constructor : function(config){
+ Ext.direct.PollingProvider.superclass.constructor.call(this, config);
+ this.addEvents(
+ /**
+ * @event beforepoll
+ * Fired immediately before a poll takes place, an event handler can return false
+ * in order to cancel the poll.
+ * @param {Ext.direct.PollingProvider}
+ */
+ 'beforepoll',
+ /**
+ * @event poll
+ * This event has not yet been implemented.
+ * @param {Ext.direct.PollingProvider}
+ */
+ 'poll'
+ );
+ },
+
+ // inherited
+ isConnected: function(){
+ return !!this.pollTask;
+ },
+
+ /**
+ * Connect to the server-side and begin the polling process. To handle each
+ * response subscribe to the data event.
+ */
+ connect: function(){
+ if(this.url && !this.pollTask){
+ this.pollTask = Ext.TaskMgr.start({
+ run: function(){
+ if(this.fireEvent('beforepoll', this) !== false){
+ if(typeof this.url == 'function'){
+ this.url(this.baseParams);
+ }else{
+ Ext.Ajax.request({
+ url: this.url,
+ callback: this.onData,
+ scope: this,
+ params: this.baseParams
+ });
+ }
+ }
+ },
+ interval: this.interval,
+ scope: this
+ });
+ this.fireEvent('connect', this);
+ }else if(!this.url){
+ throw 'Error initializing PollingProvider, no url configured.';
+ }
+ },
+
+ /**
+ * Disconnect from the server-side and stop the polling process. The disconnect
+ * event will be fired on a successful disconnect.
+ */
+ disconnect: function(){
+ if(this.pollTask){
+ Ext.TaskMgr.stop(this.pollTask);
+ delete this.pollTask;
+ this.fireEvent('disconnect', this);
+ }
+ },
+
+ // private
+ onData: function(opt, success, xhr){
+ if(success){
+ var events = this.getEvents(xhr);
+ for(var i = 0, len = events.length; i < len; i++){
+ var e = events[i];
+ this.fireEvent('data', this, e);
+ }
+ }else{
+ var e = new Ext.Direct.ExceptionEvent({
+ data: e,
+ code: Ext.Direct.exceptions.TRANSPORT,
+ message: 'Unable to connect to the server.',
+ xhr: xhr
+ });
+ this.fireEvent('data', this, e);
+ }
+ }
+});
+
Ext.Direct.PROVIDERS['polling'] = Ext.direct.PollingProvider;
\ No newline at end of file