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