fix(hub): use green/red host status indicator at 85% CPU memory disk threshold

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-13 14:22:49 +08:00
parent c1e0e52f8c
commit 47910e6cb3
3 changed files with 20 additions and 16 deletions
+6 -2
View File
@@ -833,8 +833,12 @@ html[data-theme="light"] .host-metric-bar {
height: 100%; height: 100%;
width: 0%; width: 0%;
border-radius: inherit; border-radius: inherit;
background: #3b82f6; background: #22c55e;
transition: width 0.35s ease; transition: width 0.35s ease, background 0.2s ease;
}
.host-metric-fill.ok {
background: #22c55e;
} }
.host-metric-fill.warn { .host-metric-fill.warn {
+13 -13
View File
@@ -112,8 +112,16 @@
function hostMetricLevel(percent) { function hostMetricLevel(percent) {
const p = Number(percent); const p = Number(percent);
if (!Number.isFinite(p)) return "ok"; if (!Number.isFinite(p)) return "ok";
if (p >= 90) return "bad"; if (p >= HOST_RESOURCE_ALERT_THRESHOLD) return "bad";
if (p >= 75) return "warn"; return "ok";
}
function hostOverallLevel(cpu, mem, disk) {
const vals = [cpu && cpu.percent, mem && mem.percent, disk && disk.percent];
for (let i = 0; i < vals.length; i++) {
const p = Number(vals[i]);
if (Number.isFinite(p) && p >= HOST_RESOURCE_ALERT_THRESHOLD) return "bad";
}
return "ok"; return "ok";
} }
@@ -122,9 +130,8 @@
const p = Math.max(0, Math.min(100, Number(percent) || 0)); const p = Math.max(0, Math.min(100, Number(percent) || 0));
const level = hostMetricLevel(p); const level = hostMetricLevel(p);
fillEl.style.width = p + "%"; fillEl.style.width = p + "%";
fillEl.classList.remove("warn", "bad"); fillEl.classList.remove("warn", "bad", "ok");
if (level === "warn") fillEl.classList.add("warn"); fillEl.classList.add(level === "bad" ? "bad" : "ok");
if (level === "bad") fillEl.classList.add("bad");
} }
function checkHostResourceAlert(cpu, mem) { function checkHostResourceAlert(cpu, mem) {
@@ -225,14 +232,7 @@
const disk = data.disk || {}; const disk = data.disk || {};
const net = data.network || {}; const net = data.network || {};
checkHostResourceAlert(cpu, mem); checkHostResourceAlert(cpu, mem);
const levels = [ const overall = hostOverallLevel(cpu, mem, disk);
hostMetricLevel(cpu.percent),
hostMetricLevel(mem.percent),
hostMetricLevel(disk.percent),
];
let overall = "ok";
if (levels.includes("bad")) overall = "bad";
else if (levels.includes("warn")) overall = "warn";
if (dot) dot.className = "host-status-dot " + overall; if (dot) dot.className = "host-status-dot " + overall;
const hostname = data.hostname || "服务器"; const hostname = data.hostname || "服务器";
if (name) { if (name) {
+1 -1
View File
@@ -653,6 +653,6 @@
<script src="/assets/dashboard.js?v=20260612-dash-monitor-count"></script> <script src="/assets/dashboard.js?v=20260612-dash-monitor-count"></script>
<script src="/assets/ai_review_render.js?v=3"></script> <script src="/assets/ai_review_render.js?v=3"></script>
<script src="/assets/time_close_ui.js?v=2"></script> <script src="/assets/time_close_ui.js?v=2"></script>
<script src="/assets/app.js?v=20260613-host-status-fix"></script> <script src="/assets/app.js?v=20260613-host-status-threshold"></script>
</body> </body>
</html> </html>