fix: 恢复到c65a991前可工作版本 + 仅var la修复
This commit is contained in:
@@ -161,7 +161,6 @@
|
|||||||
var _firstRender = true;
|
var _firstRender = true;
|
||||||
|
|
||||||
function renderNodes(nodes) {
|
function renderNodes(nodes) {
|
||||||
try {
|
|
||||||
var grid = document.getElementById("sentinel-grid");
|
var grid = document.getElementById("sentinel-grid");
|
||||||
if (!nodes.length) {
|
if (!nodes.length) {
|
||||||
grid.innerHTML = '<div class="card" style="text-align:center;padding:24px;color:var(--text-dim)">暂无节点 — 切换到节点管理添加</div>';
|
grid.innerHTML = '<div class="card" style="text-align:center;padding:24px;color:var(--text-dim)">暂无节点 — 切换到节点管理添加</div>';
|
||||||
@@ -261,6 +260,7 @@
|
|||||||
|
|
||||||
var oldCpu = parseFloat(body.getAttribute('data-cpu')||(sys.cpu||{}).percent||0);
|
var oldCpu = parseFloat(body.getAttribute('data-cpu')||(sys.cpu||{}).percent||0);
|
||||||
var oldMem = parseFloat(body.getAttribute('data-mem')||(sys.memory||{}).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);
|
body.setAttribute('data-mem', (sys.memory||{}).percent||0);
|
||||||
|
|
||||||
if (isRow) {
|
if (isRow) {
|
||||||
@@ -293,7 +293,7 @@
|
|||||||
var trafEl = card.querySelector('.traf-val');
|
var trafEl = card.querySelector('.traf-val');
|
||||||
var procEl = card.querySelector('.proc-val');
|
var procEl = card.querySelector('.proc-val');
|
||||||
var sysData = n.system || {};
|
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)' : '—'; }
|
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');
|
var diskList = card.querySelector('.disk-list');
|
||||||
@@ -360,8 +360,7 @@
|
|||||||
animateValue(body.querySelector('.mem-val'), oldMem, memVal, 1, '%');
|
animateValue(body.querySelector('.mem-val'), oldMem, memVal, 1, '%');
|
||||||
card.querySelector('.node-time').innerHTML = '<div style="font-size:.7rem;color:var(--text-dim);margin-top:8px">'+(n.last_seen ? new Date(n.last_seen*1000).toLocaleTimeString() : '—')+'</div>';
|
card.querySelector('.node-time').innerHTML = '<div style="font-size:.7rem;color:var(--text-dim);margin-top:8px">'+(n.last_seen ? new Date(n.last_seen*1000).toLocaleTimeString() : '—')+'</div>';
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
} catch(e) { console.error('renderNodes error:', e); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function bar(v) { return v < 60 ? 'bar-green' : (v < 85 ? 'bar-yellow' : 'bar-red'); }
|
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,'>').replace(/"/g,'"'); }
|
function esc(s) { return String(s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); }
|
||||||
|
|
||||||
function pollNodes() {
|
function pollNodes() {
|
||||||
console.log("pollNodes: fetching...");
|
fetch("/sentinel/api/nodes").then(function(r){return r.json()}).then(function(d){
|
||||||
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");
|
|
||||||
renderNodes(d.nodes || []);
|
renderNodes(d.nodes || []);
|
||||||
}).catch(function(e){
|
}).catch(function(e){
|
||||||
console.error("pollNodes error:", e);
|
|
||||||
var grid = document.getElementById("sentinel-grid");
|
var grid = document.getElementById("sentinel-grid");
|
||||||
if (grid && _firstRender) {
|
if (grid && _firstRender) {
|
||||||
grid.innerHTML = '<div class="card" style="text-align:center;padding:24px;color:var(--error)">连接失败 — 检查节点配置</div>';
|
grid.innerHTML = '<div class="card" style="text-align:center;padding:24px;color:var(--error)">连接失败 — 检查节点配置</div>';
|
||||||
@@ -471,5 +464,6 @@ function bar(v) { return v < 60 ? 'bar-green' : (v < 85 ? 'bar-yellow' : 'bar-re
|
|||||||
'<button class="btn btn-sm btn-outlined" style="color:var(--error)" onclick="deleteNode(\''+esc(n.id)+'\',\''+esc(n.name)+'\')">✕</button>'+
|
'<button class="btn btn-sm btn-outlined" style="color:var(--error)" onclick="deleteNode(\''+esc(n.id)+'\',\''+esc(n.name)+'\')">✕</button>'+
|
||||||
'</div>';
|
'</div>';
|
||||||
}).join("");
|
}).join("");
|
||||||
}))</script>
|
}
|
||||||
|
</script>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user