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

JavaScript

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.1.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. /**
  8. * @class Ext.ux.ProgressBarPager
  9. * @extends Object 
  10. * Plugin (ptype = 'tabclosemenu') for displaying a progressbar inside of a paging toolbar instead of plain text
  11. * @ptype progressbarpager 
  12. * @constructor
  13. * Create a new ItemSelector
  14. * @param {Object} config Configuration options
  15. * @xtype itemselector 
  16. */
  17. Ext.ux.ProgressBarPager  = Ext.extend(Object, {
  18. /**
  19.   * @cfg {Integer} progBarWidth
  20.   * <p>The default progress bar width.  Default is 225.</p>
  21. */
  22. progBarWidth   : 225,
  23. /**
  24.   * @cfg {String} defaultText
  25. * <p>The text to display while the store is loading.  Default is 'Loading...'</p>
  26.   */
  27. defaultText    : 'Loading...',
  28.      /**
  29.   * @cfg {Object} defaultAnimCfg 
  30.   * <p>A {@link Ext.Fx Ext.Fx} configuration object.  Default is  { duration : 1, easing : 'bounceOut' }.</p>
  31.   */
  32. defaultAnimCfg : {
  33. duration   : 1,
  34. easing     : 'bounceOut'
  35. },   
  36. constructor : function(config) {
  37. if (config) {
  38. Ext.apply(this, config);
  39. }
  40. },
  41. //public
  42. init : function (parent) {
  43. if(parent.displayInfo){
  44. this.parent = parent;
  45. var ind  = parent.items.indexOf(parent.displayItem);
  46. parent.remove(parent.displayItem, true);
  47. this.progressBar = new Ext.ProgressBar({
  48. text    : this.defaultText,
  49. width   : this.progBarWidth,
  50. animate :  this.defaultAnimCfg
  51. });
  52.    
  53. parent.displayItem = this.progressBar;
  54. parent.add(parent.displayItem);
  55. parent.doLayout();
  56. Ext.apply(parent, this.parentOverrides);
  57. this.progressBar.on('render', function(pb) {
  58.                 pb.mon(pb.getEl().applyStyles('cursor:pointer'), 'click', this.handleProgressBarClick, this);
  59.             }, this, {single: true});
  60. }
  61.   
  62. },
  63. // private
  64. // This method handles the click for the progress bar
  65. handleProgressBarClick : function(e){
  66. var parent = this.parent,
  67.     displayItem = parent.displayItem,
  68.     box = this.progressBar.getBox(),
  69.     xy = e.getXY(),
  70.     position = xy[0]-box.x,
  71.     pages = Math.ceil(parent.store.getTotalCount()/parent.pageSize),
  72.     newpage = Math.ceil(position/(displayItem.width/pages));
  73.             
  74. parent.changePage(newpage);
  75. },
  76. // private, overriddes
  77. parentOverrides  : {
  78. // private
  79. // This method updates the information via the progress bar.
  80. updateInfo : function(){
  81. if(this.displayItem){
  82. var count = this.store.getCount(),
  83.     pgData = this.getPageData(),
  84.     pageNum = this.readPage(pgData),
  85.     msg = count == 0 ?
  86. this.emptyMsg :
  87. String.format(
  88. this.displayMsg,
  89. this.cursor+1, this.cursor+count, this.store.getTotalCount()
  90. );
  91. pageNum = pgData.activePage; ;
  92. var pct = pageNum / pgData.pages;
  93. this.displayItem.updateProgress(pct, msg, this.animate || this.defaultAnimConfig);
  94. }
  95. }
  96. }
  97. });
  98. Ext.preg('progressbarpager', Ext.ux.ProgressBarPager);