Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / PollingProvider.html
diff --git a/docs/source/PollingProvider.html b/docs/source/PollingProvider.html
new file mode 100644 (file)
index 0000000..151773a
--- /dev/null
@@ -0,0 +1,154 @@
+<html>\r
+<head>\r
+  <title>The source code</title>\r
+    <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+    <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body  onload="prettyPrint();">\r
+    <pre class="prettyprint lang-js"><div id="cls-Ext.direct.PollingProvider"></div>/**\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
+    <div id="cfg-Ext.direct.PollingProvider-priority"></div>/**\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
+    <div id="cfg-Ext.direct.PollingProvider-interval"></div>/**\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
+    <div id="cfg-Ext.direct.PollingProvider-baseParams"></div>/**\r
+     * @cfg {Object} baseParams An object containing properties which are to be sent as parameters\r
+     * on every polling request\r
+     */\r
+    \r
+    <div id="cfg-Ext.direct.PollingProvider-url"></div>/**\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
+            <div id="event-Ext.direct.PollingProvider-beforepoll"></div>/**\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
+            <div id="event-Ext.direct.PollingProvider-poll"></div>/**\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
+    <div id="method-Ext.direct.PollingProvider-connect"></div>/**\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
+    <div id="method-Ext.direct.PollingProvider-disconnect"></div>/**\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
+Ext.Direct.PROVIDERS['polling'] = Ext.direct.PollingProvider;</pre>    \r
+</body>\r
+</html>
\ No newline at end of file