1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
</head>
<body onload="prettyPrint();">
<pre class="prettyprint lang-js">/*!
* Ext JS Library 3.4.0
* Copyright(c) 2006-2011 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
<div id="cls-Ext.list.Sorter"></div>/**
* @class Ext.list.Sorter
* @extends Ext.util.Observable
* <p>Supporting Class for Ext.list.ListView</p>
* @constructor
* @param {Object} config
*/
Ext.list.Sorter = Ext.extend(Ext.util.Observable, {
<div id="cfg-Ext.list.Sorter-sortClasses"></div>/**
* @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.list.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);
}
}
});
// Backwards compatibility alias
Ext.ListView.Sorter = Ext.list.Sorter;</pre>
</body>
</html>
|