diff --git a/plugins/sentinel/dashboard.html b/plugins/sentinel/dashboard.html
index 825b7ed..395575d 100644
--- a/plugins/sentinel/dashboard.html
+++ b/plugins/sentinel/dashboard.html
@@ -86,7 +86,6 @@
// 确保 chart.js 已加载 (SPA 导航时可能未加载)
var pollTimer = null;
- var _chartInstances = {};
var editingId = null;
var _layoutMode = 'grid'; // 'grid' | 'row'
@@ -95,7 +94,6 @@
var btn = document.getElementById("btn-layout");
var grid = document.getElementById("sentinel-grid");
// 销毁旧图表
- _chartInstances = {};
_cardCache = {};
_firstRender = true;
grid.innerHTML = '
加载中...
';
@@ -184,29 +182,17 @@
''+
''+
'
'+
- '
'+
- '
'+
- '
CPU 0%
'+
- '
MEM 0%
'+
- '
'+
+ '
'+
+ '
'+
+ '
'+
+ '
'+
+ '
'+
'
'+
'
'+
'
'+
'
';
- if (typeof MiniChart !== 'undefined') {
- var body = card.querySelector('.metrics-body');
- _chartInstances[id] = [
- new MiniChart(body.querySelector('.chart-cpu'), '#7aa2f7'),
- new MiniChart(body.querySelector('.chart-mem'), '#9ece6a'),
- new MiniChart(body.querySelector('.chart-net'), '#e0af68'),
- ];
- }
} else {
card.innerHTML =
'
'+(n.online?'🟢':'🔴')+' '+esc(n.name)+'
'+
@@ -238,21 +224,12 @@
if (!body) return;
if (isRow) {
- // 更新图表
- var charts = _chartInstances[id];
- if (charts && charts[0]) {
- charts[0].update(cpuVal);
- charts[1].update(memVal);
- charts[2].update(net.rx_bytes_sec||0);
- }
- // 更新数值
- var ce = body.querySelector('.cpu-val');
- var me = body.querySelector('.mem-val');
- var md = body.querySelector('.mem-detail-val');
- if (ce) ce.textContent = cpuVal.toFixed(1) + '%';
- if (me) me.textContent = memVal.toFixed(1) + '%';
- if (md) md.textContent = 'NET ↓'+fmtSpeed(net.rx_bytes_sec||0)+' ↑'+fmtSpeed(net.tx_bytes_sec||0);
- // 右边数值
+ body.querySelector('.net-down').textContent = fmtSpeed(net.rx_bytes_sec||0);
+ body.querySelector('.net-up').textContent = fmtSpeed(net.tx_bytes_sec||0);
+ var md3 = body.querySelector('.mem-detail-val');
+ if (md3) md3.textContent = (mem.used_gb||0).toFixed(1) + '/' + (mem.total_gb||0).toFixed(1) + ' GB';
+ animateValue(body.querySelector('.cpu-val'), oldCpu, cpuVal, 1, '%');
+ animateValue(body.querySelector('.mem-val'), oldMem, memVal, 1, '%');
var right = card.querySelector('.card-right');
if (right) right.innerHTML =
'
CPU '+(cpuVal).toFixed(1)+'%
'+
@@ -260,9 +237,7 @@
'
'+(mem.used_gb||0).toFixed(1)+'/'+(mem.total_gb||0).toFixed(1)+' GB
'+
'
↓ '+fmtSpeed(net.rx_bytes_sec||0)+'
'+
'
↑ '+fmtSpeed(net.tx_bytes_sec||0)+'
';
- // 时间
- var timeEl = card.querySelector('.node-time');
- if (timeEl) timeEl.innerHTML = '
'+(n.last_seen ? new Date(n.last_seen*1000).toLocaleTimeString() : '—')+'
';
+ card.querySelector('.node-time').innerHTML = '
'+(n.last_seen ? new Date(n.last_seen*1000).toLocaleTimeString() : '—')+'
';
} else {
// 网格模式
var oldCpu = parseFloat(body.getAttribute('data-cpu')||cpuVal);