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:
@@ -833,8 +833,12 @@ html[data-theme="light"] .host-metric-bar {
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
border-radius: inherit;
|
||||
background: #3b82f6;
|
||||
transition: width 0.35s ease;
|
||||
background: #22c55e;
|
||||
transition: width 0.35s ease, background 0.2s ease;
|
||||
}
|
||||
|
||||
.host-metric-fill.ok {
|
||||
background: #22c55e;
|
||||
}
|
||||
|
||||
.host-metric-fill.warn {
|
||||
|
||||
@@ -112,8 +112,16 @@
|
||||
function hostMetricLevel(percent) {
|
||||
const p = Number(percent);
|
||||
if (!Number.isFinite(p)) return "ok";
|
||||
if (p >= 90) return "bad";
|
||||
if (p >= 75) return "warn";
|
||||
if (p >= HOST_RESOURCE_ALERT_THRESHOLD) return "bad";
|
||||
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";
|
||||
}
|
||||
|
||||
@@ -122,9 +130,8 @@
|
||||
const p = Math.max(0, Math.min(100, Number(percent) || 0));
|
||||
const level = hostMetricLevel(p);
|
||||
fillEl.style.width = p + "%";
|
||||
fillEl.classList.remove("warn", "bad");
|
||||
if (level === "warn") fillEl.classList.add("warn");
|
||||
if (level === "bad") fillEl.classList.add("bad");
|
||||
fillEl.classList.remove("warn", "bad", "ok");
|
||||
fillEl.classList.add(level === "bad" ? "bad" : "ok");
|
||||
}
|
||||
|
||||
function checkHostResourceAlert(cpu, mem) {
|
||||
@@ -225,14 +232,7 @@
|
||||
const disk = data.disk || {};
|
||||
const net = data.network || {};
|
||||
checkHostResourceAlert(cpu, mem);
|
||||
const levels = [
|
||||
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";
|
||||
const overall = hostOverallLevel(cpu, mem, disk);
|
||||
if (dot) dot.className = "host-status-dot " + overall;
|
||||
const hostname = data.hostname || "服务器";
|
||||
if (name) {
|
||||
|
||||
@@ -653,6 +653,6 @@
|
||||
<script src="/assets/dashboard.js?v=20260612-dash-monitor-count"></script>
|
||||
<script src="/assets/ai_review_render.js?v=3"></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>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user