Sorter.js
资源名称:ext-3.0.0.zip [点击查看]
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:2k
源码类别:
中间件编程
开发平台:
JavaScript
- /*! * Ext JS Library 3.0.0 * Copyright(c) 2006-2009 Ext JS, LLC * licensing@extjs.com * http://www.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);
- }
- }
- });