X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/530ef4b6c5b943cfa68b779d11cf7de29aa878bf..refs/heads/old:/docs/source/TreeSorter.html diff --git a/docs/source/TreeSorter.html b/docs/source/TreeSorter.html index 83c48600..73808b39 100644 --- a/docs/source/TreeSorter.html +++ b/docs/source/TreeSorter.html @@ -7,10 +7,10 @@
/*! - * Ext JS Library 3.2.1 - * Copyright(c) 2006-2010 Ext JS, Inc. - * licensing@extjs.com - * http://www.extjs.com/license + * Ext JS Library 3.3.1 + * Copyright(c) 2006-2010 Sencha Inc. + * licensing@sencha.com + * http://www.sencha.com/license */ /** * @class Ext.tree.TreeSorter @@ -31,8 +31,10 @@ new Ext.tree.TreeSorter(myTree, { * @param {TreePanel} tree * @param {Object} config */ -Ext.tree.TreeSorter = function(tree, config){ - /** +Ext.tree.TreeSorter = Ext.extend(Object, { + + constructor: function(tree, config){ + /** * @cfg {Boolean} folderSort True to sort leaf nodes under non-leaf nodes (defaults to false) */ /** @@ -57,48 +59,54 @@ Ext.tree.TreeSorter = function(tree, config){ */ Ext.apply(this, config); - tree.on("beforechildrenrendered", this.doSort, this); - tree.on("append", this.updateSort, this); - tree.on("insert", this.updateSort, this); - tree.on("textchange", this.updateSortParent, this); + tree.on({ + scope: this, + beforechildrenrendered: this.doSort, + append: this.updateSort, + insert: this.updateSort, + textchange: this.updateSortParent + }); - var dsc = this.dir && this.dir.toLowerCase() == "desc"; - var p = this.property || "text"; - var sortType = this.sortType; - var fs = this.folderSort; - var cs = this.caseSensitive === true; - var leafAttr = this.leafAttr || 'leaf'; + var desc = this.dir && this.dir.toLowerCase() == 'desc', + prop = this.property || 'text'; + sortType = this.sortType; + folderSort = this.folderSort; + caseSensitive = this.caseSensitive === true; + leafAttr = this.leafAttr || 'leaf'; + if(Ext.isString(sortType)){ + sortType = Ext.data.SortTypes[sortType]; + } this.sortFn = function(n1, n2){ - if(fs){ - if(n1.attributes[leafAttr] && !n2.attributes[leafAttr]){ + var attr1 = n1.attributes, + attr2 = n2.attributes; + + if(folderSort){ + if(attr1[leafAttr] && !attr2[leafAttr]){ return 1; } - if(!n1.attributes[leafAttr] && n2.attributes[leafAttr]){ + if(!attr1[leafAttr] && attr2[leafAttr]){ return -1; } } - var v1 = sortType ? sortType(n1) : (cs ? n1.attributes[p] : n1.attributes[p].toUpperCase()); - var v2 = sortType ? sortType(n2) : (cs ? n2.attributes[p] : n2.attributes[p].toUpperCase()); + var prop1 = attr1[prop], + prop2 = attr2[prop], + v1 = sortType ? sortType(prop1) : (caseSensitive ? prop1 : prop1.toUpperCase()); + v2 = sortType ? sortType(prop2) : (caseSensitive ? prop2 : prop2.toUpperCase()); + if(v1 < v2){ - return dsc ? +1 : -1; + return desc ? 1 : -1; }else if(v1 > v2){ - return dsc ? -1 : +1; - }else{ - return 0; + return desc ? -1 : 1; } + return 0; }; -}; - -Ext.tree.TreeSorter.prototype = { + }, + doSort : function(node){ node.sort(this.sortFn); }, - compareNodes : function(n1, n2){ - return (n1.text.toUpperCase() > n2.text.toUpperCase() ? 1 : -1); - }, - updateSort : function(tree, node){ if(node.childrenRendered){ this.doSort.defer(1, this, [node]); @@ -110,7 +118,7 @@ Ext.tree.TreeSorter.prototype = { if(p && p.childrenRendered){ this.doSort.defer(1, this, [p]); } - } -};+ } +});