[richfaces-svn-commits] JBoss Rich Faces SVN: r896 - trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Mon May 28 14:10:54 EDT 2007


Author: abelevich
Date: 2007-05-28 14:10:54 -0400 (Mon, 28 May 2007)
New Revision: 896

Added:
   trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/DataCash.js
Modified:
   trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridHeader2.js
Log:


Added: trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/DataCash.js
===================================================================
--- trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/DataCash.js	                        (rev 0)
+++ trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/DataCash.js	2007-05-28 18:10:54 UTC (rev 896)
@@ -0,0 +1,29 @@
+/*
+ * TODO: Copyright (c) 2007 Denis Morozov <dmorozov at exadel.com>
+ *
+ * ...
+ */
+ClientUILib.declarePackage("ClientUI.controls.grid.DataCash");
+
+/*
+ * DataCash.js - Implements client side data cashing 
+ * by Denis Morozov <dmorozov at exadel.com> distributed under the BSD license. 
+ *
+ */
+ClientUI.controls.grid.DataCash = Class.create({
+	CLASSDEF: {
+		name: 'ClientUI.controls.grid.DataCash'
+	},
+	
+	PKG_SIZE: 20	
+});
+
+Object.extend(ClientUI.controls.grid.DataCash.prototype, {
+	initialize: function(cashSize) {
+		var count = cashSize/PKG_SIZE + 1;
+		this.cash = new Array(count);
+		for(var i=0; i<count; i++) {
+			this.cash[i] = new Array(PKG_SIZE);
+		}
+	}
+});
\ No newline at end of file

Modified: trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridHeader2.js
===================================================================
--- trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridHeader2.js	2007-05-28 18:10:45 UTC (rev 895)
+++ trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridHeader2.js	2007-05-28 18:10:54 UTC (rev 896)
@@ -153,7 +153,7 @@
 			columns[i].object = new ClientUI.common.box.InlineBox(cell, null, true);
 			columns[i].sortDesc = document.getElementsByClassName("sort-desc", cell)[0];
 			columns[i].sortAsc = document.getElementsByClassName("sort-asc", cell)[0];
-			if(ClientUILib.isIE) {
+			if(ClientUILib.isIE && columns[i].sortDesc) {
 				Element.setStyle(columns[i].sortDesc, {left: "-10px"});
 				Element.setStyle(columns[i].sortAsc, {left: "-10px"});
 			}
@@ -185,13 +185,14 @@
 			columns[i].object = new ClientUI.common.box.InlineBox(cell, null, true);
 			columns[i].sortDesc = document.getElementsByClassName("sort-desc", cell)[0];
 			columns[i].sortAsc = document.getElementsByClassName("sort-asc", cell)[0];
-			if(ClientUILib.isIE) {
+			if(ClientUILib.isIE && columns[i].sortDesc) {
 				Element.setStyle(columns[i].sortDesc, {left: "-10px"});
 				Element.setStyle(columns[i].sortAsc, {left: "-10px"});
 			}
 			i++;
 		});
 
+		columns.pop(); // remove last fake column
 		this._columns = columns;
 		this.defaultHeight = defaultHeight;
 		this.defaultWidth = defaultWidth;
@@ -343,9 +344,9 @@
 		if(el) {
 			var index = parseInt(el.getAttribute("columnIndex"));
 			if(index>=0) {
-				var order = this.getColumns()[index].sorted;
-				order = (order == "asc") ? "desc" : "asc";
-				this.getColumns()[index].sorted = order;
+				var dir = this.getColumns()[index].sorted;
+				dir = (dir == "asc") ? "desc" : "asc";
+				this.getColumns()[index].sorted = dir;
 				
 		        for(var i = 0, len = this.getColumns().length; i < len; i++) {
 		            var h = this.getColumns()[i];
@@ -353,12 +354,17 @@
 						Element.setStyle(h.sortDesc, {display: 'none'});
 						Element.setStyle(h.sortAsc, {display: 'none'});
 		            } else{
-						Element.setStyle(h.sortDesc, {display: (order == 'desc' ? 'block' : 'none')});
-						Element.setStyle(h.sortAsc, {display: (order == 'asc' ? 'block' : 'none')});
+						Element.setStyle(h.sortDesc, {display: (dir == 'desc' ? 'block' : 'none')});
+						Element.setStyle(h.sortAsc, {display: (dir == 'asc' ? 'block' : 'none')});
 		            }
 		        }
 	
-				this.grid.eventOnSort.fire(index, order);
+				this.grid.eventOnSort.fire({
+					column: index,
+					order: dir,
+					startRow: this.grid.getBody().templFrozen.getElement().rows[0].index,
+					index: this.grid.getBody().currRange.start
+				});
 				Event.stop(event);
 			}
 		}		




More information about the richfaces-svn-commits mailing list