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 committed 2010-11-05 21:32:00 +00:00
1 parent 0aaee17d2b
commit 30c268412e
4 files changed
+60 -21

No files matched your search

+15 -10
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;
},
+12 -7
View File
@@ -45,12 +45,14 @@ SOGoMailDataSource = Class.create({
init: function(uids, headers) {
this.uids = uids;
var keys = headers[0];
for (var i = 1; i < headers.length; i++) {
var header = [];
for (var j = 0; j < keys.length; j++)
header[keys[j]] = headers[i][j];
this.cache.set(header["uid"], header);
if (headers) {
var keys = headers[0];
for (var i = 1; i < headers.length; i++) {
var header = [];
for (var j = 0; j < keys.length; j++)
header[keys[j]] = headers[i][j];
this.cache.set(header["uid"], header);
}
}
this.loaded = true;
@@ -78,7 +80,10 @@ SOGoMailDataSource = Class.create({
if (http.status == 200) {
if (http.responseText.length > 0) {
var data = http.responseText.evalJSON(true);
this.init(data.uids, data.headers);
if (data.uids)
this.init(data.uids, data.headers);
else
this.init(data);
this.loaded = true;
if (this.delayedGetData) {
this.delayedGetData();