/** * A simple progress bar widget. * * You are responsible for showing, updating (via {@link #setValue}) and clearing the * progress bar as needed from your own code. This method is most appropriate when you * want to show progress throughout an operation that has predictable points of interest * at which you can update the control. */Ext.define('Ext.Progress', { extend: 'Ext.Gadget', xtype: ['progress', 'progressbarwidget'], alternateClassName: 'Ext.ProgressBarWidget', mixins: [ 'Ext.ProgressBase' ], config: { /** * @cfg {String} [text] * The background text */ text: null, /** * @cfg {Boolean} [animate=false] * Specify as `true` to have this progress bar animate to new extent when updated. */ animate: false }, cachedConfig: { textCls: Ext.baseCSSPrefix + 'progress-text', cls: null }, baseCls: Ext.baseCSSPrefix + 'progress', template: [{ reference: 'backgroundEl' }, { reference: 'barEl', cls: Ext.baseCSSPrefix + 'progress-bar', children: [{ reference: 'textEl' }] }], defaultBindProperty: 'value', updateCls: function (cls, oldCls) { var el = this.element; if (oldCls) { el.removeCls(oldCls); } if (cls) { el.addCls(cls); } }, updateUi: function (ui, oldUi) { var element = this.element, barEl = this.barEl, baseCls = this.baseCls + '-'; this.callParent([ui, oldUi]); if (oldUi) { element.removeCls(baseCls + oldUi); barEl.removeCls(baseCls + 'bar-' + oldUi); } element.addCls(baseCls + ui); barEl.addCls(baseCls + 'bar-' + ui); }, updateTextCls: function (textCls) { this.backgroundEl.addCls(textCls + ' ' + textCls + '-back'); this.textEl.addCls(textCls); }, updateValue: function (value, oldValue) { var me = this, textTpl = me.getTextTpl(); if (textTpl) { me.setText(textTpl.apply({ value: value, percent: Math.round(value * 100) })); } if (!me.isConfiguring && me.getAnimate()) { me.stopBarAnimation(); me.startBarAnimation(Ext.apply({ from: { width: (oldValue * 100) + '%' }, to: { width: (value * 100) + '%' } }, me.animate)); } else { me.barEl.setStyle('width', (value * 100) + '%'); } }, updateText: function (text) { this.backgroundEl.setHtml(text); this.textEl.setHtml(text); }, doDestroy: function() { this.stopBarAnimation(); this.callParent(); }, privates: { startBarAnimation: Ext.privateFn, stopBarAnimation: Ext.privateFn }});