feat: UI improvements — event ages, error badges, PoE bars, mismatch detection
- events table: add Last Seen column; show relative times ("3h ago") with
absolute timestamp on hover; update updateEventsTable() in app.js to match
- links.html: add error/drop/flap alert badges to interface and port card headers
- links.html: PoE power bar (draw/max ratio with colour-coded fill) and poe_mode
- links.html: stale data warning banner when link_stats are >2 minutes old
- links.html: improved error handler shows HTTP status instead of generic message
- links.html: fix collapse state persisted to localStorage (was sessionStorage,
lost on browser restart); fix collapseAll/expandAll to also persist state
- inspector.html: duplex mismatch and speed mismatch warnings in path debug panel
- inspector.html: carrier changes added to server column of path debug
- style.css: new classes — .link-alert-badge, .poe-bar-*, .path-mismatch-alert,
.error-state; fix .stale-banner to use CSS variables
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1453,13 +1453,74 @@ a:hover { text-decoration: underline; text-shadow: var(--glow-amber); }
|
||||
|
||||
/* ── Stale monitoring banner ──────────────────────────────────────── */
|
||||
.stale-banner {
|
||||
background: rgba(255, 160, 0, 0.12);
|
||||
border: 1px solid var(--warning);
|
||||
border-left: 4px solid var(--warning);
|
||||
color: var(--warning);
|
||||
background: var(--amber-dim);
|
||||
border: 1px solid var(--amber);
|
||||
border-left: 4px solid var(--amber);
|
||||
color: var(--amber);
|
||||
padding: 10px 16px;
|
||||
margin: 12px 16px 0;
|
||||
margin: 12px 0 0;
|
||||
font-size: 0.88em;
|
||||
font-family: var(--font-mono);
|
||||
font-family: var(--font);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* ── Link alert badges (error/flap indicators) ────────────────────── */
|
||||
.link-alert-badge {
|
||||
display: inline-block;
|
||||
font-size: .6em;
|
||||
font-weight: bold;
|
||||
padding: 1px 5px;
|
||||
border-radius: 2px;
|
||||
background: var(--red-dim);
|
||||
color: var(--red);
|
||||
border: 1px solid var(--red);
|
||||
margin-left: 4px;
|
||||
vertical-align: middle;
|
||||
letter-spacing: .05em;
|
||||
}
|
||||
|
||||
.link-alert-badge.link-alert-amber {
|
||||
background: var(--amber-dim);
|
||||
color: var(--amber);
|
||||
border-color: var(--amber);
|
||||
}
|
||||
|
||||
/* ── PoE utilisation bar ──────────────────────────────────────────── */
|
||||
.poe-bar-track {
|
||||
height: 3px;
|
||||
background: var(--bg3);
|
||||
border-radius: 2px;
|
||||
margin-top: 3px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.poe-bar-fill {
|
||||
height: 100%;
|
||||
border-radius: 2px;
|
||||
transition: width 0.4s ease;
|
||||
}
|
||||
|
||||
.poe-bar-ok { background: var(--green); }
|
||||
.poe-bar-warn { background: var(--amber); }
|
||||
.poe-bar-crit { background: var(--red); }
|
||||
|
||||
/* ── Path mismatch alert ──────────────────────────────────────────── */
|
||||
.path-mismatch-alert {
|
||||
background: var(--amber-dim);
|
||||
border-left: 3px solid var(--amber);
|
||||
color: var(--amber);
|
||||
padding: 4px 8px;
|
||||
margin-bottom: 6px;
|
||||
font-size: .72em;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* ── Error state for data containers ─────────────────────────────── */
|
||||
.error-state {
|
||||
padding: 16px 20px;
|
||||
border-left: 3px solid var(--red);
|
||||
background: var(--red-dim);
|
||||
color: var(--red);
|
||||
border-radius: 2px;
|
||||
font-size: .88em;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user