diff --git a/plugins/sentinel/dashboard.html b/plugins/sentinel/dashboard.html index 9db1c60..f56bab8 100644 --- a/plugins/sentinel/dashboard.html +++ b/plugins/sentinel/dashboard.html @@ -56,13 +56,12 @@ .node-notes { font-size:.75rem; color:var(--text-dim); font-style:italic; margin-bottom:8px } /* 横版布局 */ #sentinel-grid.layout-row { display:flex;flex-direction:column;gap:12px } - #sentinel-grid.layout-row .node-card { display:grid;grid-template-columns:200px 1fr 180px;gap:16px;align-items:start } - #sentinel-grid.layout-row .node-card .card-left { min-width:0 } - #sentinel-grid.layout-row .node-card .card-mid { display:flex;gap:16px;flex-wrap:wrap } - #sentinel-grid.layout-row .node-card .card-mid .chart-box { flex:1;min-width:120px;height:60px } - #sentinel-grid.layout-row .node-card .card-right { text-align:right } + #sentinel-grid.layout-row .node-card { display:flex;flex-wrap:wrap;gap:12px;align-items:start } + #sentinel-grid.layout-row .row-extra { display:flex;gap:12px;flex-wrap:wrap;flex:1;min-width:0 } + #sentinel-grid.layout-row .chart-row { display:flex;gap:8px;flex-wrap:wrap } + #sentinel-grid.layout-row .chart-row canvas { border-radius:4px;background:var(--md-sys-color-surface-container-lowest) } + #sentinel-grid.layout-row .info-right { min-width:140px;text-align:right } #sentinel-grid.layout-row .metric-bar { display:none } - #sentinel-grid.layout-row .metric-row { margin-bottom:0 } .metric-row { display:flex; gap:12px; margin-bottom:8px } .metric { flex:1 } .metric-label { font-size:.7rem; color:var(--text-dim); text-transform:uppercase } @@ -177,40 +176,26 @@ card.setAttribute('data-id', id); var plat = n.platform || {}; var sysInfo = (plat.system||'') + (plat.release ? ' ' + plat.release : '') + (plat.machine ? ' | ' + plat.machine : ''); + // 两种模式用同一套 DOM, CSS 控制布局 + card.innerHTML = + '
'+(n.online?'🟢':'🔴')+' '+esc(n.name)+'
'+ + (sysInfo.trim() ? '
'+esc(sysInfo)+'
' : '')+ + '
'+esc(n.url||'')+'
'+ + (n.notes ? '
📝 '+esc(n.notes)+'
' : '')+ + '
'+ + '
'; if (isRow) { - card.innerHTML = - '
'+ - '
'+(n.online?'🟢':'🔴')+' '+esc(n.name)+'
'+ - (sysInfo.trim() ? '
'+esc(sysInfo)+'
' : '')+ - '
'+esc(n.url||'')+'
'+ - (n.notes ? '
📝 '+esc(n.notes)+'
' : '')+ + // 横版: 额外加折线图 canvas + 右侧信息区 + var rowExtra = document.createElement('div'); + rowExtra.className = 'row-extra'; + rowExtra.innerHTML = + '
'+ + ''+ + ''+ + ''+ '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
CPU
0%
'+ - '
MEM
0%
'+ - '
NET ↓
'+ - '
NET ↑
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'; - } else { - card.innerHTML = - '
'+(n.online?'🟢':'🔴')+' '+esc(n.name)+'
'+ - (sysInfo.trim() ? '
'+esc(sysInfo)+'
' : '')+ - '
'+esc(n.url||'')+'
'+ - (n.notes ? '
📝 '+esc(n.notes)+'
' : '')+ - '
'+ - '
'; + '
'; + card.appendChild(rowExtra); } grid.appendChild(card); _cardCache[id] = card; @@ -252,14 +237,8 @@ if (charts && charts[0]) { try { charts[0].update(cpuVal); charts[1].update(memVal); charts[2].update(net.rx_bytes_sec||0); } catch(e) {} } - 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 = + var infoR = card.querySelector('.info-right'); + if (infoR) infoR.innerHTML = '
CPU '+(cpuVal).toFixed(1)+'%
'+ '
MEM '+(memVal).toFixed(1)+'%
'+ '
'+(mem.used_gb||0).toFixed(1)+'/'+(mem.total_gb||0).toFixed(1)+' GB
'+