diff --git a/hbd/server/templates/live.html b/hbd/server/templates/live.html index 8d5474d..e3c3a68 100644 --- a/hbd/server/templates/live.html +++ b/hbd/server/templates/live.html @@ -73,6 +73,7 @@ .tipbox .up { color: var(--st-ok); font-weight: 700; } .tipbox .dn { color: var(--st-crit); font-weight: 700; } .tipbox .ov { color: var(--st-warn); font-weight: 700; } + .tipbox .ab { color: var(--st-faint); font-weight: 700; } .tipbox .meta { margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--st-line-soft); font-size: 11px; color: var(--st-faint); } @media (max-width: 760px) { @@ -134,18 +135,18 @@ function worstConnection(data) { var worst = null; (data.connections || []).forEach(function (c) { - if (!c.state || c.state === 'unknown') return; + if (!c.state || c.state === 'unknown' || c.state === 'absent') return; if (!worst || (STATE_RANK[c.state] || 0) > (STATE_RANK[worst.state] || 0)) worst = c; }); return worst; } function severity(data) { - var w = worstConnection(data); + var st = data.status; if ((data.alert_critical_unacked || 0) > 0 || (data.alert_critical_acked || 0) > 0) return 'crit'; - if (w && w.state === 'down') return 'crit'; + if (st === 'down') return 'crit'; if ((data.alert_warning_unacked || 0) > 0 || (data.alert_warning_acked || 0) > 0) return 'warn'; - if (w && w.state === 'overdue') return 'warn'; + if (st === 'overdue') return 'warn'; return 'ok'; } var SEV_ORDER = { crit: 0, warn: 1, ok: 2 }; @@ -171,17 +172,17 @@ // ---- host row rendering --------------------------------------------- function statusChip(data) { - var w = worstConnection(data); - if (!w) return '—'; - var cls = w.state === 'up' ? 'ok' : (w.state === 'down' ? 'crit' : 'warn'); - return '' + escHtml(w.state) + ''; + var st = data.status; + if (!st || st === 'unknown') return '—'; + var cls = (st === 'up' || st === 'simplex') ? 'ok' : (st === 'down' ? 'crit' : 'warn'); + return '' + escHtml(st) + ''; } function tipCard(data) { var rows = ''; (data.connections || []).forEach(function (c) { if (!c.state || c.state === 'unknown') return; - var cls = c.state === 'up' ? 'up' : (c.state === 'down' ? 'dn' : 'ov'); + var cls = c.state === 'up' ? 'up' : (c.state === 'down' ? 'dn' : (c.state === 'absent' ? 'ab' : 'ov')); var fam = (c.afam || '').replace('IPv', 'v'); var rtt = (c.state === 'up' && c.rtts && c.rtts[0]) ? Math.round(c.rtts[0]) + ' ms' : '—'; rows += '
| Protocol | Internet | ' + + 'Address | Gateway | RTT |
|---|---|---|---|---|
| ${fam === 'ipv4' ? 'IPv4' : 'IPv6'} | +${txt} | +${escHtml(c.addr || '—')} | ${escHtml(c.gateway || '—')} | +${known && c.rtt != null ? Math.round(c.rtt) + ' ms' : '—'} |