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