From a91f2905955387c4e8467862e5e6da19d4c90cf4 Mon Sep 17 00:00:00 2001 From: CarterPerez-dev Date: Sun, 3 May 2026 07:15:16 -0400 Subject: [PATCH] feat(monitor/frontend): DShield panel (top ports + top source IPs, dense tables) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two side-by-side tables fed from snapshot.scan_firehose: Top Ports (port + 24h hits) and Top Sources (IP + CC + hits). Below them a one-line muted mono summary "Xk records · Yk sources · Z targets — last 24h." Tables, not bar charts — operator wants to read the port number 22 / 3389, not stare at a horizontal bar. Port and IP and hit counts are mono with tabular-nums (digit alignment matters). Country code stays sans (text label, not a number). Hover row background var(--bg-row-hover) — subtle, no transform / no transition / no theatre. Defensive empty-state — when snapshot has no scan_firehose yet, tables render as empty (per ethos: no "no data" message). PORT_ROW_LIMIT / SOURCE_ROW_LIMIT / THOUSAND / MILLION constants at module scope (no inline magic). Renders in the right column as the bottom panel per spec §11.1 column ordering. --- .../src/pages/dashboard/Dashboard.tsx | 5 +- .../src/pages/panels/DShieldPanel.module.scss | 48 +++++++++ .../src/pages/panels/DShieldPanel.tsx | 102 ++++++++++++++++++ 3 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 PROJECTS/advanced/monitor-the-situation-dashboard/frontend/src/pages/panels/DShieldPanel.module.scss create mode 100644 PROJECTS/advanced/monitor-the-situation-dashboard/frontend/src/pages/panels/DShieldPanel.tsx diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/src/pages/dashboard/Dashboard.tsx b/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/src/pages/dashboard/Dashboard.tsx index e45468c5..e865c673 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/src/pages/dashboard/Dashboard.tsx +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/src/pages/dashboard/Dashboard.tsx @@ -2,6 +2,7 @@ // Dashboard.tsx import { Globe } from '@/pages/globe/Globe' +import { DShieldPanel } from '@/pages/panels/DShieldPanel' import { useUIStore } from '@/stores/ui' import { AlertBanner } from './AlertBanner' import { BottomTicker } from './BottomTicker' @@ -26,7 +27,9 @@ export function Dashboard(): React.ReactElement {
-