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() : '—');