Fix #5654 - roojspacker - get it working as a doc tool...
[roojs1] / docs.old / symbols / src / Roo_tree_TreeSorter.js.html
diff --git a/docs.old/symbols/src/Roo_tree_TreeSorter.js.html b/docs.old/symbols/src/Roo_tree_TreeSorter.js.html
new file mode 100644 (file)
index 0000000..41a9b5b
--- /dev/null
@@ -0,0 +1,75 @@
+<html><head><title>../roojs1/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">/*
+ * Based on:
+ * Ext JS Library 1.1.1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ *
+ * Originally Released Under LGPL - original licence link has changed is not relivant.
+ *
+ * Fork - LGPL
+ * &lt;script type=&quot;text/javascript&quot;&gt;
+ */
+
+/**
+ * @class Roo.tree.TreeSorter
+ * Provides sorting of nodes in a TreePanel
+ * 
+ * @cfg {Boolean} folderSort True to sort leaf nodes under non leaf nodes
+ * @cfg {String} property The named attribute on the node to sort by (defaults to text)
+ * @cfg {String} dir The direction to sort (asc or desc) (defaults to asc)
+ * @cfg {String} leafAttr The attribute used to determine leaf nodes in folder sort (defaults to &quot;leaf&quot;)
+ * @cfg {Boolean} caseSensitive true for case sensitive sort (defaults to false)
+ * @cfg {Function} sortType A custom &quot;casting&quot; function used to convert node values before sorting
+ * @constructor
+ * @param {TreePanel} tree
+ * @param {Object} config
+ */
+</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">){
+    </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">);
+    </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">);
+    </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">);
+    </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">);
+    
+    </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">;
+    </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">;
+    </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">;
+    </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">;
+    </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">;
+    </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">;
+
+    </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">){
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fs</span><span class="jsdoc-syntax">){
+            </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">]){
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">1;
+            }
+            </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">]){
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">-1;
+            }
+        }
+       </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">());
+       </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">());
+       </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">){
+                       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">dsc </span><span class="jsdoc-syntax">? +1 : -1;
+               }</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">){
+                       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">dsc </span><span class="jsdoc-syntax">? -1 : +1;
+        }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">0;
+        }
+    };
+};
+
+</span><span class="jsdoc-var">Roo.tree.TreeSorter.prototype </span><span class="jsdoc-syntax">= {
+    </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">){
+        </span><span class="jsdoc-var">node.sort</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.sortFn</span><span class="jsdoc-syntax">);
+    },
+    
+    </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">){
+        </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);
+    },
+    
+    </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">){
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.childrenRendered</span><span class="jsdoc-syntax">){
+            </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">]);
+        }
+    }
+};</span></code></body></html>
\ No newline at end of file