From 42e1e237846d669f73ee49b0b833ea7788ccc295 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Mon, 21 Oct 2024 14:46:45 +0800 Subject: [PATCH] * [misc] adjust store app load logic. --- module/instance/ui/view.html.php | 2 +- module/system/js/dashboard.ui.js | 68 +++++++++++++++-------------- module/system/ui/dashboard.html.php | 1 + 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/module/instance/ui/view.html.php b/module/instance/ui/view.html.php index 7f78374ff4..c25d128287 100644 --- a/module/instance/ui/view.html.php +++ b/module/instance/ui/view.html.php @@ -217,7 +217,7 @@ div $type !== 'store' ? null : h::td ( setID('statusTD'), - set('data-status', $instance->status), + setData('status', $instance->status), setData('reload', in_array($instance->status, array('creating', 'initializing', 'pulling', 'startup', 'starting', 'suspending', 'installing', 'uninstalling', 'stopping', 'destroying', 'upgrading'))), span ( diff --git a/module/system/js/dashboard.ui.js b/module/system/js/dashboard.ui.js index f1ccedb64b..dddd07edfa 100644 --- a/module/system/js/dashboard.ui.js +++ b/module/system/js/dashboard.ui.js @@ -45,42 +45,44 @@ window.renderInstanceList = function (result, {col, row, value}) return result; } -var timer = null; -window.afterPageUpdate = function() +$(function() { - if(timer) return; - const postData = new FormData(); + if(typeof timer !== 'undefined') clearInterval(timer); if(instanceIdList.length === 0) return; - instanceIdList.forEach(function(id) - { - postData.append('idList[]', id) - }); - timer = setInterval(function() - { - $.ajaxSubmit({ - url: $.createLink('instance', 'ajaxStatus'), - method: 'POST', - data:postData, - onComplete: function(res) - { - if(res.result != 'success') return; - if(res.data.length == 0) clearInterval(timer); - $.each(res.data, function(index, instance) - { - if($("#instance-status-" + instance.id).data('status') != instance.status) - { - clearInterval(timer); - loadTable(); - } - }); - } - }); - }, 10000); -} + if(inQuickon) timer = setInterval(refreshStatus, 5000); +}); window.onPageUnmount = function() { - if(timer == null) return; - timer = null; - clearInterval(timer); + if(typeof timer !== 'undefined') clearInterval(timer); +} + +function refreshStatus() +{ + const postData = new FormData(); + if(instanceIdList.length > 0) + { + instanceIdList.forEach(function(id){postData.append('idList[]', id)}); + } + + $.ajaxSubmit({ + url: $.createLink('instance', 'ajaxStatus'), + method: 'POST', + data: postData, + onComplete: function(res) + { + if(res.result === 'success') + { + $.each(res.data, function(index, instance) + { + if(statusMap[instance.id] != instance.status) + { + loadTable(); + statusMap[instance.id] = instance.status; + return; + } + }); + } + } + }); } diff --git a/module/system/ui/dashboard.html.php b/module/system/ui/dashboard.html.php index de8fa9a6df..7e33118a6e 100644 --- a/module/system/ui/dashboard.html.php +++ b/module/system/ui/dashboard.html.php @@ -15,6 +15,7 @@ $status = zget($cneMetrics, 'status', 'unknown'); $cpuInfo['tip'] = trim(substr($cpuInfo['tip'], strpos($cpuInfo['tip'], '=') + 1)); $memoryInfo['tip'] = trim(substr($memoryInfo['tip'], strpos($memoryInfo['tip'], '=') + 1)); +jsVar('inQuickon', $config->inQuickon); jsVar('cpuInfo', $cpuInfo); jsVar('memoryInfo', $memoryInfo); jsVar('instanceIdList', helper::arrayColumn($instances, 'id'));