Update of /var/cvs/html/mmbase/edit/my_editors/scripts
In directory james.mmbase.org:/tmp/cvs-serv16092/scripts

Modified Files:
        tables.js 
Log Message:
porting some features I build in 1.8 like remembering the sortorder of the 
nodetypes, ability to switch columns



See also: http://cvs.mmbase.org/viewcvs/html/mmbase/edit/my_editors/scripts


Index: tables.js
===================================================================
RCS file: /var/cvs/html/mmbase/edit/my_editors/scripts/tables.js,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- tables.js   1 Mar 2007 20:24:50 -0000       1.1
+++ tables.js   25 Apr 2008 16:41:06 -0000      1.2
@@ -1,6 +1,60 @@
-/* Sort tablerows */
+/* onload function loads some scripts */
 var sortedOn = 0;
+var cookie_str = "my_editors_sort";
+window.onload = function() {
+    initSortTables();    // TODO: mention tables to sort
+}
+
+/* sort tablerows */
+function sortT(tableId, sortOn) {
+    sortTable(tableId, sortOn);
+    
+    /* detect last 2 rows */
+    var table = document.getElementById(tableId);
+       var tbody = table.getElementsByTagName('tbody')[0];
+    var rows = tbody.getElementsByTagName('tr');
+    var rowArray = new Array();
+    for (var i=0, length=rows.length; i<length; i++) {
+        rowArray[i] = new Object;
+        rowArray[i].oldIndex = i;
+        if (sortOn == 0) {
+            rowArray[i].value = 
rows[i].getElementsByTagName('td')[0].firstChild.nodeValue;
+        } else {
+            rowArray[i].value = 
rows[i].getElementsByTagName('a')[0].firstChild.nodeValue;
+        }
+    }
+    var dir = "normal";
+       var rows = rowArray.length;
+       if (rowArray[rows - 1].value < rowArray[rows - 2].value) dir = 
"reverse";
+    
+    var sortvalues = sortOn + "_" + dir;
+    var cookieValue = tableId + "." + sortvalues;
+    createCookie(cookie_str, cookieValue, 99);
+}
+
+function initSortTables() {
+    if (readCookie(cookie_str)) {
+        // console.log("cookie gevonden: " + readCookie(cookie_str));
+        var cookieValue = readCookie(cookie_str);
+        var tableId = cookieValue.substring(0, cookieValue.indexOf("."));
+        var sortValues = cookieValue.substring(cookieValue.indexOf(".") + 1, 
cookieValue.length);
+        var sortOn = sortValues.substring(0, sortValues.indexOf("_"));
+        var dir = sortValues.substring(sortValues.indexOf("_") + 1, 
sortValues.length);
+        
+        if (dir == "reverse") { 
+            sortedOn = sortOn;
+        } else {
+            if (sortOn == 0) sortedOn = 1;
+            if (sortOn == 1) sortedOn = 0;
+        }
+        // console.log("dir: " + dir + ", sortOn: " + sortOn + ", sortedOn: " 
+ sortedOn);
+        sortTable(tableId, sortOn);
+    }
+}
+
 function sortTable(tableId, sortOn) {
+    //console.log("sortOn: " + sortOn + " sortedOn: " + sortedOn);
+       if (!document.getElementById(tableId)) return;
        var table = document.getElementById(tableId);
        var tbody = table.getElementsByTagName('tbody')[0];
     var rows = tbody.getElementsByTagName('tr');
@@ -20,11 +74,7 @@
         rowArray.reverse(); 
     } else {
         sortedOn = sortOn;
-        if (sortOn == 0) {
             rowArray.sort(RowCompare);
-        } else {
-            rowArray.sort(RowCompare);
-        }
     }
     
     var newTbody = document.createElement('tbody');
@@ -47,6 +97,7 @@
                        }
                }       
     }
+    
     table.replaceChild(newTbody, tbody);
 }
 
@@ -56,12 +107,6 @@
     return (aVal == bVal ? 0 : (aVal > bVal ? 1 : -1));
 }
 
-function RowCompareLinks(a, b) {
-    var aVal = a.value.toLowerCase();
-    var bVal = b.value.toLowerCase();
-    return (aVal == bVal ? 0 : (aVal > bVal ? 1 : -1));
-}
-
 function RowCompareNumbers(a, b) {
     var aVal = parseInt(a.value);
     var bVal = parseInt(b.value);
@@ -90,3 +135,29 @@
     r += replace(s.substring(i + t.length, s.length), t, u);
   return r;
 }
+
+/* cookie stuff */
+function createCookie(name,value,days) {
+       if (days) {
+               var date = new Date();
+               date.setTime(date.getTime()+(days*24*60*60*1000));
+               var expires = "; expires="+date.toGMTString();
+       }
+       else var expires = "";
+       document.cookie = name+"="+value+expires+"; path=/";
+}
+
+function readCookie(name) {
+       var nameEQ = name + "=";
+       var ca = document.cookie.split(';');
+       for(var i=0;i < ca.length;i++) {
+               var c = ca[i];
+               while (c.charAt(0)==' ') c = c.substring(1,c.length);
+               if (c.indexOf(nameEQ) == 0) return 
c.substring(nameEQ.length,c.length);
+       }
+       return null;
+}
+
+function eraseCookie(name) {
+       createCookie(name,"",-1);
+}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to