diff rhodecode/public/js/rhodecode.js @ 1778:defcf245f3e9 beta

fixes #229 repo sorting is not working. - implemented repo sorting using YUI dataTable
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 16 Dec 2011 20:13:23 +0200
parents c83d3d42ab92
children 9edd6ac132f0
line wrap: on
line diff
--- a/rhodecode/public/js/rhodecode.js	Sun Dec 11 00:52:37 2011 +0200
+++ b/rhodecode/public/js/rhodecode.js	Fri Dec 16 20:13:23 2011 +0200
@@ -597,3 +597,82 @@
     var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, 
     											  callback, postData);
 };	
+
+
+/**
+ * TABLE SORTING
+ */
+
+// returns a node from given html;
+var fromHTML = function(html){
+	  var _html = document.createElement('element');
+	  _html.innerHTML = html;
+	  return _html;
+}
+var get_rev = function(node){
+    var n = node.firstElementChild.firstElementChild;
+    
+    if (n===null){
+        return -1
+    }
+    else{
+        out = n.firstElementChild.innerHTML.split(':')[0].replace('r','');
+        return parseInt(out);
+    }
+}
+
+var get_name = function(node){
+	 var name = node.firstElementChild.children[2].innerHTML; 
+	 return name
+}
+var get_group_name = function(node){
+	var name = node.firstElementChild.children[1].innerHTML;
+	return name
+}
+var revisionSort = function(a, b, desc, field) {
+	  
+	  var a_ = fromHTML(a.getData(field));
+	  var b_ = fromHTML(b.getData(field));
+	  
+	  // extract revisions from string nodes 
+	  a_ = get_rev(a_)
+	  b_ = get_rev(b_)
+	      	  
+	  var comp = YAHOO.util.Sort.compare;
+	  var compState = comp(a_, b_, desc);
+	  return compState;
+};
+var ageSort = function(a, b, desc, field) {
+    var a_ = a.getData(field);
+    var b_ = b.getData(field);
+    
+    var comp = YAHOO.util.Sort.compare;
+    var compState = comp(a_, b_, desc);
+    return compState;
+};
+
+var nameSort = function(a, b, desc, field) {
+    var a_ = fromHTML(a.getData(field));
+    var b_ = fromHTML(b.getData(field));
+    
+    // extract name from table
+    a_ = get_name(a_)
+    b_ = get_name(b_)          
+    
+    var comp = YAHOO.util.Sort.compare;
+    var compState = comp(a_, b_, desc);
+    return compState;
+};
+
+var groupNameSort = function(a, b, desc, field) {
+    var a_ = fromHTML(a.getData(field));
+    var b_ = fromHTML(b.getData(field));
+    
+    // extract name from table
+    a_ = get_group_name(a_)
+    b_ = get_group_name(b_)          
+    
+    var comp = YAHOO.util.Sort.compare;
+    var compState = comp(a_, b_, desc);
+    return compState;
+};
\ No newline at end of file