diff --git a/plugins/sentinel/dashboard.html b/plugins/sentinel/dashboard.html
index 27516a6..123a07a 100644
--- a/plugins/sentinel/dashboard.html
+++ b/plugins/sentinel/dashboard.html
@@ -161,7 +161,6 @@
var _firstRender = true;
function renderNodes(nodes) {
- try {
var grid = document.getElementById("sentinel-grid");
if (!nodes.length) {
grid.innerHTML = '
暂无节点 — 切换到节点管理添加
';
@@ -261,6 +260,7 @@
var oldCpu = parseFloat(body.getAttribute('data-cpu')||(sys.cpu||{}).percent||0);
var oldMem = parseFloat(body.getAttribute('data-mem')||(sys.memory||{}).percent||0);
+ body.setAttribute('data-cpu', (sys.cpu||{}).percent||0);
body.setAttribute('data-mem', (sys.memory||{}).percent||0);
if (isRow) {
@@ -293,7 +293,7 @@
var trafEl = card.querySelector('.traf-val');
var procEl = card.querySelector('.proc-val');
var sysData = n.system || {};
- if (loadEl && sysData.cpu) { var la = sysData.cpu.load_avg||[0,0,0]; loadEl.textContent = (la[0]+la[1]+la[2])===0 ? "N/A" : la.map(function(v){return v.toFixed(1);}).join(" / "); }
+ if (loadEl && sysData.cpu) loadEl.textContent = (sysData.cpu.load_avg||[0,0,0]).map(function(v){return v.toFixed(1);}).join(' / ');
if (swapEl && sysData.swap) { var st = sysData.swap.total_gb||0; swapEl.textContent = st > 0 ? (sysData.swap.percent||0).toFixed(1)+'% ('+(sysData.swap.used_gb||0).toFixed(1)+'G)' : '—'; }
// 磁盘分区列表
var diskList = card.querySelector('.disk-list');
@@ -360,8 +360,7 @@
animateValue(body.querySelector('.mem-val'), oldMem, memVal, 1, '%');
card.querySelector('.node-time').innerHTML = ''+(n.last_seen ? new Date(n.last_seen*1000).toLocaleTimeString() : '—')+'
';
}
- }
- } catch(e) { console.error('renderNodes error:', e); }
+ });
}
function bar(v) { return v < 60 ? 'bar-green' : (v < 85 ? 'bar-yellow' : 'bar-red'); }
@@ -371,15 +370,9 @@ function bar(v) { return v < 60 ? 'bar-green' : (v < 85 ? 'bar-yellow' : 'bar-re
function esc(s) { return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); }
function pollNodes() {
- console.log("pollNodes: fetching...");
- fetch("/sentinel/api/nodes").then(function(r){
- console.log("pollNodes: status="+r.status);
- return r.json();
- }).then(function(d){
- console.log("pollNodes: got "+ (d.nodes ? d.nodes.length : 0) +" nodes");
+ fetch("/sentinel/api/nodes").then(function(r){return r.json()}).then(function(d){
renderNodes(d.nodes || []);
}).catch(function(e){
- console.error("pollNodes error:", e);
var grid = document.getElementById("sentinel-grid");
if (grid && _firstRender) {
grid.innerHTML = '连接失败 — 检查节点配置
';
@@ -471,5 +464,6 @@ function bar(v) { return v < 60 ? 'bar-green' : (v < 85 ? 'bar-yellow' : 'bar-re
''+
'';
}).join("");
- }))
+ }
+