| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-direct-PollingProvider'>/**
 
- </span> * @class Ext.direct.PollingProvider
 
-  *
 
-  * <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.Manager.addProvider(pollA);
 
- pollA.disconnect();
 
- Ext.direct.Manager.addProvider(
 
-     {
 
-         type:'polling',
 
-         url: 'php/pollB.php',
 
-         id: 'pollB-provider'
 
-     }
 
- );
 
- var pollB = Ext.direct.Manager.getProvider('pollB-provider');
 
-  * </code></pre>
 
-  */
 
- Ext.define('Ext.direct.PollingProvider', {
 
-     
 
-     /* Begin Definitions */
 
-     
 
-     extend: 'Ext.direct.JsonProvider',
 
-     
 
-     alias: 'direct.pollingprovider',
 
-     
 
-     uses: ['Ext.direct.ExceptionEvent'],
 
-     
 
-     requires: ['Ext.Ajax', 'Ext.util.DelayedTask'],
 
-     
 
-     /* End Definitions */
 
-     
 
- <span id='Ext-direct-PollingProvider-cfg-interval'>    /**
 
- </span>     * @cfg {Number} interval
 
-      * How often to poll the server-side in milliseconds. Defaults to every 3 seconds.
 
-      */
 
-     interval: 3000,
 
- <span id='Ext-direct-PollingProvider-cfg-baseParams'>    /**
 
- </span>     * @cfg {Object} baseParams
 
-      * An object containing properties which are to be sent as parameters on every polling request
 
-      */
 
-     
 
- <span id='Ext-direct-PollingProvider-cfg-url'>    /**
 
- </span>     * @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){
 
-         this.callParent(arguments);
 
-         this.addEvents(
 
- <span id='Ext-direct-PollingProvider-event-beforepoll'>            /**
 
- </span>             * @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} this
 
-              */
 
-             'beforepoll',            
 
- <span id='Ext-direct-PollingProvider-event-poll'>            /**
 
- </span>             * @event poll
 
-              * This event has not yet been implemented.
 
-              * @param {Ext.direct.PollingProvider} this
 
-              */
 
-             'poll'
 
-         );
 
-     },
 
-     // inherited
 
-     isConnected: function(){
 
-         return !!this.pollTask;
 
-     },
 
- <span id='Ext-direct-PollingProvider-method-connect'>    /**
 
- </span>     * Connect to the server-side and begin the polling process. To handle each
 
-      * response subscribe to the data event.
 
-      */
 
-     connect: function(){
 
-         var me = this, url = me.url;
 
-         
 
-         if (url && !me.pollTask) {
 
-             me.pollTask = Ext.TaskManager.start({
 
-                 run: function(){
 
-                     if (me.fireEvent('beforepoll', me) !== false) {
 
-                         if (Ext.isFunction(url)) {
 
-                             url(me.baseParams);
 
-                         } else {
 
-                             Ext.Ajax.request({
 
-                                 url: url,
 
-                                 callback: me.onData,
 
-                                 scope: me,
 
-                                 params: me.baseParams
 
-                             });
 
-                         }
 
-                     }
 
-                 },
 
-                 interval: me.interval,
 
-                 scope: me
 
-             });
 
-             me.fireEvent('connect', me);
 
-         } else if (!url) {
 
-             //<debug>
 
-             Ext.Error.raise('Error initializing PollingProvider, no url configured.');
 
-             //</debug>
 
-         }
 
-     },
 
- <span id='Ext-direct-PollingProvider-method-disconnect'>    /**
 
- </span>     * Disconnect from the server-side and stop the polling process. The disconnect
 
-      * event will be fired on a successful disconnect.
 
-      */
 
-     disconnect: function(){
 
-         var me = this;
 
-         
 
-         if (me.pollTask) {
 
-             Ext.TaskManager.stop(me.pollTask);
 
-             delete me.pollTask;
 
-             me.fireEvent('disconnect', me);
 
-         }
 
-     },
 
-     // private
 
-     onData: function(opt, success, response){
 
-         var me = this, 
 
-             i = 0, 
 
-             len,
 
-             events;
 
-         
 
-         if (success) {
 
-             events = me.createEvents(response);
 
-             for (len = events.length; i < len; ++i) {
 
-                 me.fireEvent('data', me, events[i]);
 
-             }
 
-         } else {
 
-             me.fireEvent('data', me, new Ext.direct.ExceptionEvent({
 
-                 data: null,
 
-                 code: Ext.direct.Manager.exceptions.TRANSPORT,
 
-                 message: 'Unable to connect to the server.',
 
-                 xhr: response
 
-             }));
 
-         }
 
-     }
 
- });</pre>
 
- </body>
 
- </html>
 
 
  |