Author: abelevich
Date: 2007-05-08 14:30:35 -0400 (Tue, 08 May 2007)
New Revision: 709
Modified:
trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody2.js
Log:
Modified:
trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody2.js
===================================================================
---
trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody2.js 2007-05-08
17:58:06 UTC (rev 708)
+++
trunk/sandbox/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody2.js 2007-05-08
18:30:35 UTC (rev 709)
@@ -181,6 +181,10 @@
this.defaultRowHeight = Element.getHeight(templNormal.rows[0].cells[0]);
if(ClientUILib.isGecko) {
this.defaultRowHeight -= this.getBorderWidth("tb") +
this.getPadding("tb");
+ }
+ for(var i=0; i<this.rowsCount; i++) {
+ templFrozen.rows[i].index = i;
+ templNormal.rows[i].index = i;
}
return true;
},
@@ -557,12 +561,62 @@
this.templNormal.moveToY(pos);
}
else {
- var rowsNeededCount = 0;
+ var count = 0, i, row, rownew;
+
+ var frozenTbl = this.templFrozen.getElement().tBodies[0];
+ var normalTbl = this.templNormal.getElement().tBodies[0];
+
if(range.start > this.currRange.start
&& range.start < this.currRange.end) {
// TODO: get rows from this.currRange.start to range.start
// and move them to end of table
// then move table to correct position
+ count = range.start - this.currRange.start;
+
+ // store visible row pos to restore after rows reerrange
+ var visibleRowPos = this.templFrozen.getY() + count * this.defaultRowHeight;
+
+ for(i=0; i<count; i++) {
+ row = frozenTbl.rows[0];
+ frozenTbl.deleteRow(row);
+ rownew = frozenTbl.insertRow(this.rowsCount-1);
+ rownew.parentNode.replaceChild(row,rownew);
+
+ row = normalTbl.rows[0];
+ normalTbl.deleteRow(row);
+ rownew = normalTbl.insertRow(this.rowsCount-1);
+ rownew.parentNode.replaceChild(row,rownew);
+ }
+
+ this.templFrozen.moveToY(visibleRowPos);
+ this.templNormal.moveToY(visibleRowPos);
+/*
+ // prepare array of column elements for sorting
+ var count = this.body.rows.length;
+ var elements = new Array(count);
+ for(var i=0; i<count; i++) {
+ var callbackProc = this.getSortFunction(nColumn);
+ elements[i] = { row: this.body.rows[i], element: this.body.rows[i].cells[nColumn],
callback: callbackProc };
+ }
+
+ // sort
+ elements.sort(MyTableObject.defaultCompareCallback);
+ if (sortOrder == "descending")elements.reverse();
+
+ var nextSibling = this.body.nextSibling;
+ if (removeChilds) { // remove all rows
+ var p = this.body.parentNode;
+ p.removeChild(this.body);
+ }
+
+ // insert in the new order
+ var l = elements.length;
+ for (var i = 0; i < l; i++)
+ this.body.appendChild(elements[i].row);
+
+ if(removeChilds)
+ p.insertBefore(this.body, nextSibling);
+*/
}
else {
// TODO: get rows from range.end to this.currRange.end
@@ -620,7 +674,7 @@
}.bind(this), this.grid.dataModel.getRequestDelay());
this.pendingTask = task;
- },
+ },
invalidate: function(options) {
this.dataView.each(function(row) {
row.show();
Show replies by date