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(a)exadel.com>
+ *
+ * ...
+ */
+ClientUILib.declarePackage("ClientUI.controls.grid.DataCash");
+
+/*
+ * DataCash.js - Implements client side data cashing
+ * by Denis Morozov <dmorozov(a)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);
}
}
Show replies by date