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%;
|
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 {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user