See Changelog

Monotone-Parent: bb6767d882b80a6dcb30d6487153b189ee367d0d
Monotone-Revision: 58cf6fbba1f009a9bedc373454f61ed082ccfae0

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2010-11-05T21:32:00
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Francis Lachapelle
2010-11-05 21:32:00 +00:00
parent 0aaee17d2b
commit 30c268412e
4 changed files with 60 additions and 21 deletions

View File

@@ -159,6 +159,7 @@ var SOGoDataTableInterface = {
count = end - start;
this.currentRenderID = index + "-" + count;
// Query the data source only if at least one row is not loaded
if (refresh === true ||
this.renderedIndex < 0 ||
@@ -168,12 +169,16 @@ var SOGoDataTableInterface = {
this.dataSource.getData(this.currentRenderID,
index,
count,
this._render.bind(this),
(refresh === true)?this._refresh.bind(this):this._render.bind(this),
this.renderDelay);
}
},
_render: function(renderID, start, max, data) {
_refresh: function(renderID, start, max, data) {
this._render(renderID, start, max, data, true);
},
_render: function(renderID, start, max, data, refresh) {
if (this.currentRenderID != renderID) {
// log ("DataTable._render() ignore render for " + renderID + " (current is " + this.currentRenderID + ")");
return;
@@ -201,17 +206,16 @@ var SOGoDataTableInterface = {
this.renderedCount = 0;
}
if (start > (this.renderedIndex + this.renderedCount) ||
if (refresh === true ||
start > (this.renderedIndex + this.renderedCount) ||
start + data.length < this.renderedIndex) {
// No reusable row in the viewport;
// refresh the complete view port
for (i = 0, j = start;
i < this.renderedCount && i < data.length;
i++, j++) {
// Render all existing rows with new data
var row = rows[i+1]; // must skip the first row (this.rowTop)
row.removeClassName('_selected');
this.rowRenderCallback(row, data[i], false);
}
@@ -314,11 +318,12 @@ var SOGoDataTableInterface = {
}
var index = this.dataSource.remove(uid);
// log ("DataTable.remove(" + uid + ") at index " + index);
if (this.renderedIndex > index)
this.renderedIndex--;
else if ((this.renderedIndex + this.renderedCount) > index)
this.renderedCount--;
if (index >= 0) {
if (this.renderedIndex > index)
this.renderedIndex--;
else if ((this.renderedIndex + this.renderedCount) > index)
this.renderedCount--;
}
return index;
},