statusbar-demo.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:8k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.1.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ Ext.onReady(function(){
  2.     // This is a shared function that simulates a load action on a StatusBar.
  3.     // It is reused by most of the example panels.
  4.     var loadFn = function(btn, statusBar){
  5.         btn = Ext.getCmp(btn);
  6.         statusBar = Ext.getCmp(statusBar);
  7.         btn.disable();
  8.         statusBar.showBusy();
  9.         (function(){
  10.             statusBar.clearStatus({useDefaults:true});
  11.             btn.enable();
  12.         }).defer(2000);
  13.     };
  14. /*
  15.  * ================  Basic StatusBar example  =======================
  16.  */
  17.     new Ext.Panel({
  18.         title: 'Basic StatusBar',
  19.         renderTo: 'basic',
  20.         width: 550,
  21.         height: 100,
  22.         bodyStyle: 'padding:10px;',
  23.         items:[{
  24.             xtype: 'button',
  25.             id: 'basic-button',
  26.             text: 'Do Loading',
  27.             handler: loadFn.createCallback('basic-button', 'basic-statusbar')
  28.         }],
  29.         bbar: new Ext.ux.StatusBar({
  30.             id: 'basic-statusbar',
  31.             // defaults to use when the status is cleared:
  32.             defaultText: 'Default status text',
  33.             //defaultIconCls: 'default-icon',
  34.         
  35.             // values to set initially:
  36.             text: 'Ready',
  37.             iconCls: 'x-status-valid',
  38.             // any standard Toolbar items:
  39.             items: [
  40.                 {
  41.                     text: 'Show Warning & Clear',
  42.                     handler: function (){
  43.                         var sb = Ext.getCmp('basic-statusbar');
  44.                         sb.setStatus({
  45.                             text: 'Oops!',
  46.                             iconCls: 'x-status-error',
  47.                             clear: true // auto-clear after a set interval
  48.                         });
  49.                     }
  50.                 },
  51.                 {
  52.                     text: 'Show Busy',
  53.                     handler: function (){
  54.                         var sb = Ext.getCmp('basic-statusbar');
  55.                         // Set the status bar to show that something is processing:
  56.                         sb.showBusy();
  57.                     }
  58.                 },
  59.                 {
  60.                     text: 'Clear status',
  61.                     handler: function (){
  62.                         var sb = Ext.getCmp('basic-statusbar');
  63.                         // once completed
  64.                         sb.clearStatus(); 
  65.                     }
  66.                 },
  67.                 '-',
  68.                 'Plain Text'
  69.             ]
  70.         })
  71.     });
  72. /*
  73.  * ================  Right-aligned StatusBar example  =======================
  74.  */
  75.     new Ext.Panel({
  76.         title: 'Right-aligned StatusBar',
  77.         renderTo: 'right-aligned',
  78.         width: 550,
  79.         height: 100,
  80.         bodyStyle: 'padding:10px;',
  81.         items:[{
  82.             xtype: 'button',
  83.             id: 'right-button',
  84.             text: 'Do Loading',
  85.             handler: loadFn.createCallback('right-button', 'right-statusbar')
  86.         }],
  87.         bbar: new Ext.ux.StatusBar({
  88.             defaultText: 'Default status',
  89.             id: 'right-statusbar',
  90.             statusAlign: 'right', // the magic config
  91.             items: [{
  92.                 text: 'A Button'
  93.             }, '-', 'Plain Text', ' ', ' ']
  94.         })
  95.     });
  96. /*
  97.  * ================  StatusBar Window example  =======================
  98.  */
  99.     var win = new Ext.Window({
  100.         title: 'StatusBar Window',
  101.         width: 400,
  102.         minWidth: 350,
  103.         height: 150,
  104.         modal: true,
  105.         closeAction: 'hide',
  106.         bodyStyle: 'padding:10px;',
  107.         items:[{
  108.             xtype: 'button',
  109.             id: 'win-button',
  110.             text: 'Do Loading',
  111.             handler: loadFn.createCallback('win-button', 'win-statusbar')
  112.         }],
  113.         bbar: new Ext.ux.StatusBar({
  114.             id: 'win-statusbar',
  115.             defaultText: 'Ready',
  116.             items: [{
  117.                 text: 'A Button'
  118.             }, '-',
  119.             new Date().format('n/d/Y'), ' ', ' ', '-', {
  120.                 xtype:'tbsplit',
  121.                 text:'Status Menu',
  122.                 menuAlign: 'br-tr?',
  123.                 menu: new Ext.menu.Menu({
  124.                     items: [{text: 'Item 1'}, {text: 'Item 2'}]
  125.                 })
  126.             }]
  127.         })
  128.     });
  129.     new Ext.Button({
  130.         text: 'Show Window',
  131.         renderTo: 'window',
  132.         handler: function(){
  133.             win.show();
  134.         }
  135.     });
  136. /*
  137.  * ================  Ext Word Processor example  =======================
  138.  *
  139.  * The StatusBar used in this example is completely standard.  What is
  140.  * customized are the styles and event handling to make the example a
  141.  * lot more dynamic and application-oriented.
  142.  *
  143.  */
  144.     // Create these explicitly so we can manipulate them later
  145.     var wordCount = new Ext.Toolbar.TextItem('Words: 0');
  146.     var charCount = new Ext.Toolbar.TextItem('Chars: 0');
  147.     var clock = new Ext.Toolbar.TextItem('');
  148.     new Ext.Panel({
  149.         title: 'Ext Word Processor',
  150.         renderTo: 'word-proc',
  151.         width: 500,
  152.         autoHeight: true,
  153.         bodyStyle: 'padding:5px;',
  154.         layout: 'fit',
  155.         bbar: new Ext.ux.StatusBar({
  156.             id: 'word-status',
  157.             // These are just the standard toolbar TextItems we created above.  They get
  158.             // custom classes below in the render handler which is what gives them their
  159.             // customized inset appearance.
  160.             items: [wordCount, ' ', charCount, ' ', clock, ' ']
  161.         }),
  162.         items: {
  163.             xtype: 'textarea',
  164.             id: 'word-textarea',
  165.             enableKeyEvents: true,
  166.             grow: true,
  167.             growMin: 100,
  168.             growMax: 200,
  169.             listeners: {
  170.                 // After each keypress update the word and character count text items
  171.                 'keypress': {
  172.                     fn: function(t){
  173.                         var v = t.getValue(),
  174.                             wc = 0, cc = v.length ? v.length : 0;
  175.                         if(cc > 0){
  176.                             wc = v.match(/b/g);
  177.                             wc = wc ? wc.length / 2 : 0;
  178.                         }
  179.                     Ext.fly(wordCount.getEl()).update('Words: '+wc);
  180.                         Ext.fly(charCount.getEl()).update('Chars: '+cc);
  181.                 },
  182.                     buffer: 1 // buffer to allow the value to update first
  183.                 }
  184.             }
  185.         },
  186.         listeners: {
  187.             render: {
  188.                 fn: function(){
  189.                     // Add a class to the parent TD of each text item so we can give them some custom inset box
  190.                     // styling. Also, since we are using a greedy spacer, we have to add a block level element
  191.                     // into each text TD in order to give them a fixed width (TextItems are spans).  Insert a
  192.                     // spacer div into each TD using createChild() so that we can give it a width in CSS.
  193.                     Ext.fly(wordCount.getEl().parent()).addClass('x-status-text-panel').createChild({cls:'spacer'});
  194.                     Ext.fly(charCount.getEl().parent()).addClass('x-status-text-panel').createChild({cls:'spacer'});
  195.                     Ext.fly(clock.getEl().parent()).addClass('x-status-text-panel').createChild({cls:'spacer'});
  196.                     // Kick off the clock timer that updates the clock el every second:
  197.     Ext.TaskMgr.start({
  198.         run: function(){
  199.             Ext.fly(clock.getEl()).update(new Date().format('g:i:s A'));
  200.         },
  201.         interval: 1000
  202.     });
  203.                 },
  204.                 delay: 100
  205.             }
  206.         }
  207.     });
  208.     // This sets up a fake auto-save function.  It monitors keyboard activity and after no typing
  209.     // has occurred for 1.5 seconds, it updates the status message to indicate that it's saving.
  210.     // After a fake delay so that you can see the save activity it will update again to indicate
  211.     // that the action succeeded.
  212.     Ext.fly('word-textarea').on('keypress', function(){
  213.         var sb = Ext.getCmp('word-status');
  214.         sb.showBusy('Saving draft...');
  215.         (function(){
  216.             sb.setStatus({
  217.                 iconCls: 'x-status-saved',
  218.                 text: 'Draft auto-saved at ' + new Date().format('g:i:s A')
  219.             });
  220.         }).defer(4000);
  221.     }, this, {buffer:1500});
  222. });