From 7fc1bf3017ed38cac073e92e80dc32ec04371360 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 9 Oct 2013 06:53:35 +0200 Subject: [PATCH] UpdateQueue: add callback So that we can queue new things after loading is done. --- www/manager/data/UpdateQueue.js | 28 +++++++++++++++++++--------- www/manager/data/UpdateStore.js | 5 +++-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/www/manager/data/UpdateQueue.js b/www/manager/data/UpdateQueue.js index 3cf2aa88..121aba68 100644 --- a/www/manager/data/UpdateQueue.js +++ b/www/manager/data/UpdateQueue.js @@ -15,30 +15,40 @@ Ext.define('PVE.data.UpdateQueue', { return; } - var store = queue.shift(); - if (!store) { + var storeid = queue.shift(); + if (!storeid) { return; } + var info = queue_idx[storeid]; + queue_idx[storeid] = null; - queue_idx[store.storeid] = null; + info.updatestart = new Date(); idle = false; - store.load({ + info.store.load({ callback: function(records, operation, success) { idle = true; + if (info.callback) { + var runtime = (new Date()).getTime() - info.updatestart.getTime(); + info.callback(runtime, success); + } start_update(); } }); }; Ext.apply(me, { - queue: function(store) { - if (!store.storeid) { + queue: function(store, cb) { + var storeid = store.storeid; + if (!storeid) { throw "unable to queue store without storeid"; } - if (!queue_idx[store.storeid]) { - queue_idx[store.storeid] = store; - queue.push(store); + if (!queue_idx[storeid]) { + queue_idx[storeid] = { + store: store, + callback: cb + }; + queue.push(storeid); } start_update(); } diff --git a/www/manager/data/UpdateStore.js b/www/manager/data/UpdateStore.js index ee02cd25..5d263356 100644 --- a/www/manager/data/UpdateStore.js +++ b/www/manager/data/UpdateStore.js @@ -18,8 +18,9 @@ Ext.define('PVE.data.UpdateStore', { var run_load_task = function() { if (PVE.Utils.authOK()) { - PVE.data.UpdateQueue.queue(me); - load_task.delay(config.interval, run_load_task); + PVE.data.UpdateQueue.queue(me, function(runtime, success) { + load_task.delay(config.interval, run_load_task); + }); } else { load_task.delay(200, run_load_task); }