Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / progress-bar.html
diff --git a/docs/source/progress-bar.html b/docs/source/progress-bar.html
new file mode 100644 (file)
index 0000000..13f5614
--- /dev/null
@@ -0,0 +1,114 @@
+<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">Ext.onReady(function(){\r
+    //==== Progress bar 1 ====\r
+    var pbar1 = new Ext.ProgressBar({\r
+       text:'Initializing...'\r
+    });\r
+    var btn1 = Ext.get('btn1');\r
+    btn1.on('click', function(){\r
+        Ext.fly('p1text').update('Working');\r
+        if (!pbar1.rendered){\r
+            pbar1.render('p1');\r
+        }else{\r
+            pbar1.text = 'Initializing...';\r
+            pbar1.show();\r
+        }\r
+        Runner.run(pbar1, Ext.get('btn1'), 10, function(){\r
+            pbar1.reset(true);\r
+            Ext.fly('p1text').update('Done.').show();\r
+        });\r
+    });\r
+\r
+    //==== Progress bar 2 ====\r
+    var pbar2 = new Ext.ProgressBar({\r
+        text:'Ready',\r
+        id:'pbar2',\r
+        cls:'left-align',\r
+        renderTo:'p2'\r
+    });\r
+    var btn2 = Ext.get('btn2');\r
+    btn2.on('click', function(){\r
+        Runner.run(pbar2, btn2, 12, function(){\r
+            pbar2.reset();\r
+            pbar2.updateText('Done.');\r
+        });\r
+    });\r
+\r
+    //==== Progress bar 3 ====\r
+    var pbar3 = new Ext.ProgressBar({\r
+        id:'pbar3',\r
+        width:300,\r
+        renderTo:'p3'\r
+    });\r
+    pbar3.on('update', function(val){\r
+        //You can handle this event at each progress interval if\r
+        //needed to perform some other action\r
+        Ext.fly('p3text').dom.innerHTML += '.';\r
+    });\r
+    var btn3 = Ext.get('btn3');\r
+    btn3.on('click', function(){\r
+        Ext.fly('p3text').update('Working');\r
+        btn3.dom.disabled = true;\r
+        pbar3.wait({\r
+            interval:200,\r
+            duration:5000,\r
+            increment:15,\r
+            fn:function(){\r
+                btn3.dom.disabled = false;\r
+                Ext.fly('p3text').update('Done');\r
+            }\r
+        });\r
+    });\r
+\r
+    //==== Progress bar 4 ====\r
+    var pbar4 = new Ext.ProgressBar({\r
+        text:'Waiting on you...',\r
+        id:'pbar4',\r
+        textEl:'p4text',\r
+        cls:'custom',\r
+        renderTo:'p4'\r
+    });\r
+    var btn4 = Ext.get('btn4');\r
+    btn4.on('click', function(){\r
+        Runner.run(pbar4, btn4, 19, function(){\r
+            pbar4.updateText('All finished!');\r
+        });\r
+    });\r
+});\r
+\r
+//Please do not use the following code as a best practice! :)\r
+var Runner = function(){\r
+    var f = function(v, pbar, btn, count, cb){\r
+        return function(){\r
+            if(v > count){\r
+                btn.dom.disabled = false;\r
+                cb();\r
+            }else{\r
+                if(pbar.id=='pbar4'){\r
+                    //give this one a different count style for fun\r
+                    var i = v/count;\r
+                    pbar.updateProgress(i, Math.round(100*i)+'% completed...');\r
+                }else{\r
+                    pbar.updateProgress(v/count, 'Loading item ' + v + ' of '+count+'...');\r
+                }\r
+            }\r
+       };\r
+    };\r
+    return {\r
+        run : function(pbar, btn, count, cb){\r
+            btn.dom.disabled = true;\r
+            var ms = 5000/count;\r
+            for(var i = 1; i < (count+2); i++){\r
+               setTimeout(f(i, pbar, btn, count, cb), i*ms);\r
+            }\r
+        }\r
+    }\r
+}();</pre>    \r
+</body>\r
+</html>
\ No newline at end of file