UpdateQueue: add callback

So that we can queue new things after loading is done.
This commit is contained in:
Dietmar Maurer 2013-10-09 06:53:35 +02:00
parent 4920fa3a87
commit 7fc1bf3017
2 changed files with 22 additions and 11 deletions

View File

@ -15,30 +15,40 @@ Ext.define('PVE.data.UpdateQueue', {
return; return;
} }
var store = queue.shift(); var storeid = queue.shift();
if (!store) { if (!storeid) {
return; return;
} }
var info = queue_idx[storeid];
queue_idx[storeid] = null;
queue_idx[store.storeid] = null; info.updatestart = new Date();
idle = false; idle = false;
store.load({ info.store.load({
callback: function(records, operation, success) { callback: function(records, operation, success) {
idle = true; idle = true;
if (info.callback) {
var runtime = (new Date()).getTime() - info.updatestart.getTime();
info.callback(runtime, success);
}
start_update(); start_update();
} }
}); });
}; };
Ext.apply(me, { Ext.apply(me, {
queue: function(store) { queue: function(store, cb) {
if (!store.storeid) { var storeid = store.storeid;
if (!storeid) {
throw "unable to queue store without storeid"; throw "unable to queue store without storeid";
} }
if (!queue_idx[store.storeid]) { if (!queue_idx[storeid]) {
queue_idx[store.storeid] = store; queue_idx[storeid] = {
queue.push(store); store: store,
callback: cb
};
queue.push(storeid);
} }
start_update(); start_update();
} }

View File

@ -18,8 +18,9 @@ Ext.define('PVE.data.UpdateStore', {
var run_load_task = function() { var run_load_task = function() {
if (PVE.Utils.authOK()) { if (PVE.Utils.authOK()) {
PVE.data.UpdateQueue.queue(me); PVE.data.UpdateQueue.queue(me, function(runtime, success) {
load_task.delay(config.interval, run_load_task); load_task.delay(config.interval, run_load_task);
});
} else { } else {
load_task.delay(200, run_load_task); load_task.delay(200, run_load_task);
} }