diff --git a/static/style.css b/static/style.css index ef97346..160403e 100644 --- a/static/style.css +++ b/static/style.css @@ -724,20 +724,6 @@ background: linear-gradient(90deg, transparent, var(--cyan), transparent); } -/* Link health summary */ -.link-summary-panel { - background: var(--bg2); - border: 1px solid var(--border-color); - 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; } .link-loading { padding: 20px; text-align: center; color: var(--text-muted); font-size: .8em; } .link-loading::after { content: ' ...'; animation: blink 1s step-end infinite; } diff --git a/templates/index.html b/templates/index.html index 2a9663d..7670724 100644 --- a/templates/index.html +++ b/templates/index.html @@ -270,44 +270,49 @@

UniFi Devices

-
- - - - - - - - - - - - - - {% for d in snapshot.unifi %} - - - - - - - - - {% endfor %} - -
UniFi network devices
StatusNameTypeModelIPActions
- - {{ 'ONLINE' if d.connected else 'OFFLINE' }} - {{ d.name }}{{ d.type }}{{ d.model }}{{ d.ip }} - {% if not d.connected %} - - {% endif %} -
+
+ + +
Device Inventory
+
+ + + + + + + + + + + + + + {% for d in snapshot.unifi %} + + + + + + + + + {% endfor %} + +
UniFi network devices
StatusNameTypeModelIPActions
+ + {{ 'ONLINE' if d.connected else 'OFFLINE' }} + {{ d.name }}{{ d.type }}{{ d.model }}{{ d.ip }} + {% if not d.connected %} + + {% endif %} +
+
{% endif %} diff --git a/templates/links.html b/templates/links.html index 701930c..f4749dc 100644 --- a/templates/links.html +++ b/templates/links.html @@ -13,6 +13,19 @@
+ + @@ -439,10 +452,6 @@ function renderLinks(data) { const parts = []; parts.push(buildLinkSummary(hosts, unifiSwitches)); - parts.push(``); parts.push(''); document.getElementById('links-container').innerHTML = parts.join(''); restoreCollapseState(); + document.getElementById('links-toolbar').style.display = ''; + applyLinksSearch(); +} + +// ── Host/switch search filter ───────────────────────────────────── +function applyLinksSearch() { + const q = (document.getElementById('links-search')?.value || '').trim().toLowerCase(); + document.querySelectorAll('.link-host-panel').forEach(panel => { + const text = (panel.querySelector('.link-host-name')?.textContent || '').toLowerCase(); + panel.style.display = (!q || text.includes(q)) ? '' : 'none'; + }); } function collapseAll() { @@ -552,5 +572,7 @@ document.addEventListener('click', e => { if (e.target.closest('[data-action="collapse-all"]')) { collapseAll(); return; } if (e.target.closest('[data-action="expand-all"]')) { expandAll(); return; } }); + +document.getElementById('links-search')?.addEventListener('input', applyLinksSearch); {% endblock %} diff --git a/templates/suppressions.html b/templates/suppressions.html index 48f2239..ca2cf32 100644 --- a/templates/suppressions.html +++ b/templates/suppressions.html @@ -184,20 +184,27 @@

Available Targets

-
- {% for name, host in snapshot.hosts.items() %} -
-
{{ name }}
-
{{ 'Proxmox Host (prometheus)' if host.source == 'prometheus' else 'Ping-only host' }}
- {% if host.interfaces %} -
- {% for iface in host.interfaces.keys() | sort %} - {{ iface }} +
+ + +
Host & Interface Reference
+
+
+ {% for name, host in snapshot.hosts.items() %} +
+
{{ name }}
+
{{ 'Proxmox Host (prometheus)' if host.source == 'prometheus' else 'Ping-only host' }}
+ {% if host.interfaces %} +
+ {% for iface in host.interfaces.keys() | sort %} + {{ iface }} + {% endfor %} +
+ {% endif %} +
{% endfor %}
- {% endif %}
- {% endfor %}