Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / Sorter.html
diff --git a/docs/source/Sorter.html b/docs/source/Sorter.html
new file mode 100644 (file)
index 0000000..f3d4eb4
--- /dev/null
@@ -0,0 +1,73 @@
+<html>\r
+<head>\r
+  <title>The source code</title>\r
+    <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+    <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body  onload="prettyPrint();">\r
+    <pre class="prettyprint lang-js"><div id="cls-Ext.ListView.Sorter"></div>/**\r
+ * @class Ext.ListView.Sorter\r
+ * @extends Ext.util.Observable\r
+ * <p>Supporting Class for Ext.ListView.</p>\r
+ * @constructor\r
+ * @param {Object} config\r
+ */\r
+Ext.ListView.Sorter = Ext.extend(Ext.util.Observable, {\r
+    <div id="cfg-Ext.ListView.Sorter-sortClasses"></div>/**\r
+     * @cfg {Array} sortClasses\r
+     * The CSS classes applied to a header when it is sorted. (defaults to <tt>["sort-asc", "sort-desc"]</tt>)\r
+     */\r
+    sortClasses : ["sort-asc", "sort-desc"],\r
+\r
+    constructor: function(config){\r
+        Ext.apply(this, config);\r
+        Ext.ListView.Sorter.superclass.constructor.call(this);\r
+    },\r
+\r
+    init : function(listView){\r
+        this.view = listView;\r
+        listView.on('render', this.initEvents, this);\r
+    },\r
+\r
+    initEvents : function(view){\r
+        view.mon(view.innerHd, 'click', this.onHdClick, this);\r
+        view.innerHd.setStyle('cursor', 'pointer');\r
+        view.mon(view.store, 'datachanged', this.updateSortState, this);\r
+        this.updateSortState.defer(10, this, [view.store]);\r
+    },\r
+\r
+    updateSortState : function(store){\r
+        var state = store.getSortState();\r
+        if(!state){\r
+            return;\r
+        }\r
+        this.sortState = state;\r
+        var cs = this.view.columns, sortColumn = -1;\r
+        for(var i = 0, len = cs.length; i < len; i++){\r
+            if(cs[i].dataIndex == state.field){\r
+                sortColumn = i;\r
+                break;\r
+            }\r
+        }\r
+        if(sortColumn != -1){\r
+            var sortDir = state.direction;\r
+            this.updateSortIcon(sortColumn, sortDir);\r
+        }\r
+    },\r
+\r
+    updateSortIcon : function(col, dir){\r
+        var sc = this.sortClasses;\r
+        var hds = this.view.innerHd.select('em').removeClass(sc);\r
+        hds.item(col).addClass(sc[dir == "DESC" ? 1 : 0]);\r
+    },\r
+\r
+    onHdClick : function(e){\r
+        var hd = e.getTarget('em', 3);\r
+        if(hd && !this.view.disableHeaders){\r
+            var index = this.view.findHeaderIndex(hd);\r
+            this.view.store.sort(this.view.columns[index].dataIndex);\r
+        }\r
+    }\r
+});</pre>    \r
+</body>\r
+</html>
\ No newline at end of file