diff --git a/plugins/sentinel/dashboard.html b/plugins/sentinel/dashboard.html
index 9102bbc..436393b 100644
--- a/plugins/sentinel/dashboard.html
+++ b/plugins/sentinel/dashboard.html
@@ -98,7 +98,7 @@
var btn = document.getElementById("btn-layout");
var grid = document.getElementById("sentinel-grid");
// 销毁旧图表
- try { Object.keys(_chartInstances).forEach(function(k){ if(_chartInstances[k]) _chartInstances[k].forEach(function(c){ if(c.destroy)c.destroy(); }); }); } catch(e) {}
+ try { Object.keys(_chartInstances).forEach(function(k){ var chs = _chartInstances[k]; if(chs) { Object.values(chs).forEach(function(c){ if(c&&c.destroy)c.destroy(); }); } }); } catch(e) {}
_chartInstances = {};
_cardCache = {};
_firstRender = true;
@@ -150,7 +150,7 @@
var grid = document.getElementById("sentinel-grid");
if (!nodes.length) {
grid.innerHTML = '
暂无节点 — 切换到节点管理添加
';
- try { Object.keys(_chartInstances).forEach(function(k){ if(_chartInstances[k]) _chartInstances[k].forEach(function(c){ if(c.destroy)c.destroy(); }); }); } catch(e) {}
+ try { Object.keys(_chartInstances).forEach(function(k){ var chs = _chartInstances[k]; if(chs) { Object.values(chs).forEach(function(c){ if(c&&c.destroy)c.destroy(); }); } }); } catch(e) {}
_chartInstances = {};
_cardCache = {};
_firstRender = true;
@@ -205,13 +205,16 @@
}
grid.appendChild(card);
_cardCache[id] = card;
- if (isRow && typeof MiniChart !== 'undefined' && !_chartInstances[id]) {
+ if (isRow && !_chartInstances[id]) {
try {
- _chartInstances[id] = [
- new MiniChart(id+'-cpu', '#7aa2f7'),
- new MiniChart(id+'-mem', '#9ece6a'),
- new MiniChart(id+'-net', '#e0af68'),
- ];
+ _chartInstances[id] = { cpu: null, mem: null, net: null };
+ if (typeof MiniChart !== 'undefined') {
+ _chartInstances[id].cpu = new MiniChart(id+'-cpu', '#7aa2f7');
+ _chartInstances[id].mem = new MiniChart(id+'-mem', '#9ece6a');
+ }
+ if (typeof DualLineChart !== 'undefined') {
+ _chartInstances[id].net = new DualLineChart(id+'-net', '#bb9af7', '#c0a8f0');
+ }
} catch(e) {}
}
}
@@ -250,8 +253,12 @@
if (netUp) netUp.textContent = '↑' + fmtSpeed(net.tx_bytes_sec||0);
if (mrd) mrd.textContent = (mem.used_gb||0).toFixed(1)+'/'+(mem.total_gb||0).toFixed(1)+' GB';
var charts = _chartInstances[id];
- if (charts && charts[0]) {
- try { charts[0].update(cpuVal); charts[1].update(memVal); charts[2].update(net.rx_bytes_sec||0); } catch(e) {}
+ if (charts) {
+ try {
+ if (charts.cpu) charts.cpu.update(cpuVal);
+ if (charts.mem) charts.mem.update(memVal);
+ if (charts.net) charts.net.update(net.rx_bytes_sec||0, net.tx_bytes_sec||0);
+ } catch(e) {}
}
var infoR = card.querySelector('.col-info');
if (infoR) infoR.textContent = (n.last_seen ? new Date(n.last_seen*1000).toLocaleTimeString() : '—');