📄 sorter.js
字号:
/*
* Ext JS Library 3.0 Pre-alpha
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
/**
* @class Ext.ListView.Sorter
* @extends Ext.util.Observable
* <p>Supporting Class for Ext.ListView.</p>
* @constructor
* @param {Object} config
*/
Ext.ListView.Sorter = Ext.extend(Ext.util.Observable, {
/**
* @cfg {Array} sortClasses
* The CSS classes applied to a header when it is sorted. (defaults to <tt>["sort-asc", "sort-desc"]</tt>)
*/
sortClasses : ["sort-asc", "sort-desc"],
constructor: function(config){
Ext.apply(this, config);
Ext.ListView.Sorter.superclass.constructor.call(this);
},
init : function(listView){
this.view = listView;
listView.on('render', this.initEvents, this);
},
initEvents : function(view){
view.mon(view.innerHd, 'click', this.onHdClick, this);
view.innerHd.setStyle('cursor', 'pointer');
view.mon(view.store, 'datachanged', this.updateSortState, this);
this.updateSortState.defer(10, this, [view.store]);
},
updateSortState : function(store){
var state = store.getSortState();
if(!state){
return;
}
this.sortState = state;
var cs = this.view.columns, sortColumn = -1;
for(var i = 0, len = cs.length; i < len; i++){
if(cs[i].dataIndex == state.field){
sortColumn = i;
break;
}
}
if(sortColumn != -1){
var sortDir = state.direction;
this.updateSortIcon(sortColumn, sortDir);
}
},
updateSortIcon : function(col, dir){
var sc = this.sortClasses;
var hds = this.view.innerHd.select('em').removeClass(sc);
hds.item(col).addClass(sc[dir == "DESC" ? 1 : 0]);
},
onHdClick : function(e){
var hd = e.getTarget('em', 3);
if(hd && !this.view.disableHeaders){
var index = this.view.findHeaderIndex(hd);
this.view.store.sort(this.view.columns[index].dataIndex);
}
}
});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -