| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- Ext.define('uas.override.toolbar.Paging', {
- override: 'Ext.toolbar.Paging',
- // 行信息
- selectionText: 'selected {0} rows / total {1} rows',
- // 可选分页大小
- pageSizeList: [10, 20, 50, 100, 200, 500, 1000, 3000, 10000],
- sizeText: 'display per page',
- sizeItemWidth: 100,
- defaultPageSize: 20,
- getPagingItems: function() {
- var me = this,
- inputListeners = {
- scope: me,
- blur: me.onPagingBlur
- };
- inputListeners[Ext.supports.SpecialKeyDownRepeat ? 'keydown' : 'keypress'] = me.onPagingKeyDown,
- pageSizeListeners = {
- scope: me,
- blur: me.onPageSizeChange,
- select: me.onPageSizeChange,
- specialkey: me.onPageSizeKey
- };
-
- var pageSizeStore = {
- fields: ['display', 'value'],
- data: me.pageSizeList.map(function(i){
- return {
- display: String(i),
- value: i
- }
- })
- };
- return [
- {
- itemId: 'first',
- tooltip: me.firstText,
- overflowText: me.firstText,
- iconCls: Ext.baseCSSPrefix + 'tbar-page-first',
- disabled: true,
- handler: me.moveFirst,
- scope: me
- },
- {
- itemId: 'prev',
- tooltip: me.prevText,
- overflowText: me.prevText,
- iconCls: Ext.baseCSSPrefix + 'tbar-page-prev',
- disabled: true,
- handler: me.movePrevious,
- scope: me
- },
- '-',
- me.beforePageText,
- {
- xtype: 'numberfield',
- itemId: 'inputItem',
- name: 'inputItem',
- cls: Ext.baseCSSPrefix + 'tbar-page-number',
- allowDecimals: false,
- minValue: 1,
- hideTrigger: true,
- enableKeyEvents: true,
- keyNavEnabled: false,
- selectOnFocus: true,
- submitValue: false,
- // mark it as not a field so the form will not catch it when getting fields
- isFormField: false,
- width: me.inputItemWidth,
- margin: '-1 2 3 2',
- listeners: inputListeners
- },
- {
- xtype: 'tbtext',
- itemId: 'afterTextItem',
- html: Ext.String.format(me.afterPageText, 1)
- },
- '-',
- {
- itemId: 'next',
- tooltip: me.nextText,
- overflowText: me.nextText,
- iconCls: Ext.baseCSSPrefix + 'tbar-page-next',
- disabled: true,
- handler: me.moveNext,
- scope: me
- },
- {
- itemId: 'last',
- tooltip: me.lastText,
- overflowText: me.lastText,
- iconCls: Ext.baseCSSPrefix + 'tbar-page-last',
- disabled: true,
- handler: me.moveLast,
- scope: me
- },
- '-',
- {
- xtype: 'tbtext',
- itemId: 'selectionTextItem',
- html: Ext.String.format(me.selectionText, 0, 0)
- },
- '-',
- me.sizeText,
- {
- xtype: 'combobox',
- itemId: 'sizeItem',
- name: 'sizeItem',
- cls: Ext.baseCSSPrefix + 'tbar-page-size',
- value: me.defaultPageSize,
- store: pageSizeStore,
- displayField: 'display',
- valueField: 'value',
- enableKeyEvents: true,
- keyNavEnabled: false,
- submitValue: false,
- isFormField: false,
- width: me.sizeItemWidth,
- margin: '-1 2 3 2',
- listeners: pageSizeListeners
- },
- {
- itemId: 'refresh',
- tooltip: me.refreshText,
- overflowText: me.refreshText,
- iconCls: Ext.baseCSSPrefix + 'tbar-loading',
- disabled: me.store.isLoading(),
- handler: me.doRefresh,
- scope: me
- }
- ];
- },
- /**
- * @private
- */
- onLoad: function() {
- var me = this,
- pageData, currPage, pageCount, afterText, selectionText, selectedCount, count, isEmpty, item;
- count = me.store.getCount();
- isEmpty = count === 0;
- if (!isEmpty) {
- pageData = me.getPageData();
- currPage = pageData.currentPage;
- pageCount = pageData.pageCount;
- // Check for invalid current page.
- if (currPage > pageCount) {
- // If the surrent page is beyond the loaded end,
- // jump back to the loaded end if there is a valid page count.
- if (pageCount > 0) {
- me.store.loadPage(pageCount);
- } else // If no pages, reset the page field.
- {
- me.getInputItem().reset();
- }
- return;
- }
- afterText = Ext.String.format(me.afterPageText, isNaN(pageCount) ? 1 : pageCount);
- } else {
- currPage = 0;
- pageCount = 0;
- afterText = Ext.String.format(me.afterPageText, 0);
- }
- Ext.suspendLayouts();
- item = me.child('#afterTextItem');
- if (item) {
- item.update(afterText);
- }
- item = me.getInputItem();
- if (item) {
- item.setDisabled(isEmpty).setValue(currPage);
- }
- item = me.child('#selectionTextItem');
- if (item) {
- selectedCount = me.ownerCt.getSelectionModel().getSelected().length;
- selectionText = Ext.String.format(me.selectionText, selectedCount, count);
- item.update(selectionText);
- }
- me.setChildDisabled('#first', currPage === 1 || isEmpty);
- me.setChildDisabled('#prev', currPage === 1 || isEmpty);
- me.setChildDisabled('#next', currPage === pageCount || isEmpty);
- me.setChildDisabled('#last', currPage === pageCount || isEmpty);
- me.setChildDisabled('#refresh', false);
- me.updateInfo();
- Ext.resumeLayouts(true);
- if (!me.calledInternal) {
- me.fireEvent('change', me, pageData || me.emptyPageData);
- }
- },
- getStoreListeners: function() {
- return {
- beforeload: this.beforeLoad,
- load: this.onLoad,
- refresh: this.onLoad,
- exception: this.onLoadError
- };
- },
- afterRender: function() {
- var me = this;
- me.callParent();
- me.ownerCt.on('selectionchange', me.onSelectionChange, me);
- },
- onSelectionChange: function(selModel, selected) {
- var me = this,
- count = me.store.getCount(),
- selectedCount = selected.length,
- selectionText;
- var item = me.child('#selectionTextItem');
- if (item) {
- selectionText = Ext.String.format(me.selectionText, selectedCount, count);
- item.update(selectionText);
- }
- },
- onPageSizeChange: function(field) {
- var me = this,
- pageSize = field.getValue(),
- oldValue = me.store.pageSize || me.defaultPageSize;
- if (!pageSize) {
- field.setValue(pageSize);
- } else if (pageSize != oldValue) {
- me.store.pageSize = pageSize;
- me.moveFirst();
- }
- },
- onPageSizeKey: function(field, e) {
- if (e.getKey() == e.ENTER) {
- this.onPageSizeChange(field);
- }
- },
- moveFirst: function() {
- this.loadPage(1);
- },
- movePrevious: function() {
- var me = this,
- store = me.store,
- prev = store.currentPage - 1;
- if (prev > 0) {
- me.loadPage(prev);
- }
- },
- moveNext: function() {
- var me = this,
- store = me.store,
- total = me.getPageData().pageCount,
- next = store.currentPage + 1;
- if (next <= total) {
- me.loadPage(next);
- }
- },
- moveLast: function() {
- var me = this,
- last = me.getPageData().pageCount;
- me.loadPage(last);
- },
- doRefresh: function() {
- var me = this,
- store = me.store,
- current = store.currentPage;
- me.loadPage(current);
- },
- loadPage: function(page) {
- var me = this, grid = me.ownerCt, store = me.store;
- grid.fireEvent('paging', grid, {
- currentPage: page,
- pageSize: store.pageSize
- });
- }
- });
|