feat: link health summary, recently resolved panel, event duration
- dashboard: pass recent_resolved (last 24h, limit 10) to index template; render "Recently Resolved" section showing type, target, resolved time, and calculated duration (first_seen → resolved_at) - dashboard: event-age spans now also update via setInterval; duration shown for resolved events (e.g. "2h 15m") - links page: link health summary panel shows server iface count, error/flap counts, switch port up/down, PoE total draw/capacity bar; only shows problematic stats if non-zero; shows "All OK ✔" when clean - style.css: new classes for summary panel, resolved row/badge Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1524,3 +1524,73 @@ a:hover { text-decoration: underline; text-shadow: var(--glow-amber); }
|
||||
border-radius: 2px;
|
||||
font-size: .88em;
|
||||
}
|
||||
|
||||
/* ── Link health summary panel ────────────────────────────────────── */
|
||||
.link-summary-panel {
|
||||
background: var(--bg2);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 2px;
|
||||
padding: 12px 16px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.link-summary-panel.link-summary-has-alerts {
|
||||
border-color: var(--amber);
|
||||
}
|
||||
|
||||
.link-summary-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 20px;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.link-summary-stat {
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
.link-summary-stat.lss-alert .lss-label {
|
||||
color: var(--amber);
|
||||
}
|
||||
|
||||
.lss-label {
|
||||
display: block;
|
||||
font-size: .62em;
|
||||
color: var(--text-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: .05em;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.lss-value {
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.lss-sub {
|
||||
font-size: .7em;
|
||||
color: var(--text-muted);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* ── Recently resolved table ──────────────────────────────────────── */
|
||||
.row-resolved td {
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
.badge-resolved {
|
||||
background: var(--bg3);
|
||||
color: var(--text-muted);
|
||||
border-color: var(--border);
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.section-badge-resolved {
|
||||
background: var(--bg3);
|
||||
color: var(--text-muted);
|
||||
border: 1px solid var(--border);
|
||||
font-size: .65em;
|
||||
padding: 2px 7px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user