Fix #5681 - fix bootstrap4 detection
[roojs1] / docs / src / Roo_tree_TreeSorter.js.html
1 <html><head><title>Roo/tree/TreeSorter.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12
13 /**
14  * @class Roo.tree.TreeSorter
15  * Provides sorting of nodes in a TreePanel
16  * 
17  * @cfg {Boolean} folderSort True to sort leaf nodes under non leaf nodes
18  * @cfg {String} property The named attribute on the node to sort by (defaults to text)
19  * @cfg {String} dir The direction to sort (asc or desc) (defaults to asc)
20  * @cfg {String} leafAttr The attribute used to determine leaf nodes in folder sort (defaults to &quot;leaf&quot;)
21  * @cfg {Boolean} caseSensitive true for case sensitive sort (defaults to false)
22  * @cfg {Function} sortType A custom &quot;casting&quot; function used to convert node values before sorting
23  * @constructor
24  * @param {TreePanel} tree
25  * @param {Object} config
26  */
27 </span><span class="jsdoc-var">Roo.tree.TreeSorter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
28     </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
29     </span><span class="jsdoc-var">tree.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;beforechildrenrendered&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.doSort</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
30     </span><span class="jsdoc-var">tree.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;append&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.updateSort</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
31     </span><span class="jsdoc-var">tree.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;insert&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.updateSort</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
32
33     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dsc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dir </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.dir.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">&quot;desc&quot;</span><span class="jsdoc-syntax">;
34     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.property </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;text&quot;</span><span class="jsdoc-syntax">;
35     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sortType </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.sortType</span><span class="jsdoc-syntax">;
36     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.folderSort</span><span class="jsdoc-syntax">;
37     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.caseSensitive </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
38     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">leafAttr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.leafAttr </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">'leaf'</span><span class="jsdoc-syntax">;
39
40     </span><span class="jsdoc-var">this.sortFn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">){
41         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fs</span><span class="jsdoc-syntax">){
42             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">leafAttr</span><span class="jsdoc-syntax">] &amp;&amp; !</span><span class="jsdoc-var">n2.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">leafAttr</span><span class="jsdoc-syntax">]){
43                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">1;
44             }
45             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">n1.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">leafAttr</span><span class="jsdoc-syntax">] &amp;&amp; </span><span class="jsdoc-var">n2.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">leafAttr</span><span class="jsdoc-syntax">]){
46                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">-1;
47             }
48         }
49         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v1 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sortType </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">sortType</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">) : (</span><span class="jsdoc-var">cs </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">n1.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">n1.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.toUpperCase</span><span class="jsdoc-syntax">());
50         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sortType </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">sortType</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">) : (</span><span class="jsdoc-var">cs </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">n2.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">n2.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.toUpperCase</span><span class="jsdoc-syntax">());
51         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v1 </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">v2</span><span class="jsdoc-syntax">){
52                         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">dsc </span><span class="jsdoc-syntax">? +1 : -1;
53                 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v1 </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">v2</span><span class="jsdoc-syntax">){
54                         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">dsc </span><span class="jsdoc-syntax">? -1 : +1;
55         }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
56                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">0;
57         }
58     };
59 };
60
61 </span><span class="jsdoc-var">Roo.tree.TreeSorter.prototype </span><span class="jsdoc-syntax">= {
62     </span><span class="jsdoc-var">doSort </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">){
63         </span><span class="jsdoc-var">node.sort</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.sortFn</span><span class="jsdoc-syntax">);
64     },
65
66     </span><span class="jsdoc-var">compareNodes </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">){
67         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1.text.toUpperCase</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">n2.text.toUpperCase</span><span class="jsdoc-syntax">() ? 1 : -1);
68     },
69
70     </span><span class="jsdoc-var">updateSort </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">){
71         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.childrenRendered</span><span class="jsdoc-syntax">){
72             </span><span class="jsdoc-var">this.doSort.defer</span><span class="jsdoc-syntax">(1, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">]);
73         }
74     }
75 };</span></code></body></html>