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(""); - })) + } +