// ReportingPage.jsx — full-page assembly using only RPT primitives. // Mirrors frontend/src/components/pages/ReportingPage.js after the KB pass. const { useState: useRPSt } = React; const { COLORS: RC, PageHeader, RptButton, KbCard, PillTab, FilterChip, StatusBanner, ToolbarLabel, SeverityDot, SlaPill, WorkflowBadge, DonutSample, RptIcon: RI, } = window.RPT; /* Sample findings rows. Static — purely for layout. */ const SAMPLE_ROWS = [ { id: 'F-10241', host: 'web-prod-04.steam.local', os: 'Ubuntu 22.04', sev: 'Critical', cve: 'CVE-2024-3094', age: 4, sla: 'OVERDUE', state: 'OPEN', action: 'Patch', owner: 'platform' }, { id: 'F-10238', host: 'kafka-broker-2.steam.local',os: 'RHEL 9.3', sev: 'Critical', cve: 'CVE-2024-21626', age: 11, sla: 'OVERDUE', state: 'FP', action: 'Investigate',owner: 'data-eng' }, { id: 'F-10202', host: 'auth-prod-01.steam.local', os: 'Ubuntu 22.04', sev: 'High', cve: 'CVE-2024-1086', age: 3, sla: 'AT_RISK', state: 'OPEN', action: 'Patch', owner: 'platform' }, { id: 'F-10197', host: 'edge-cdn-09.steam.local', os: 'Alpine 3.19', sev: 'High', cve: 'CVE-2024-23222', age: 2, sla: 'AT_RISK', state: 'EXC', action: 'Accept', owner: 'edge' }, { id: 'F-10185', host: 'analytics-w-3.steam.local',os: 'Ubuntu 20.04', sev: 'Medium', cve: 'CVE-2023-50387', age: 14, sla: 'WITHIN_SLA', state: 'OPEN', action: 'Mitigate', owner: 'analytics' }, { id: 'F-10180', host: 'mail-relay-1.steam.local', os: 'Debian 12', sev: 'Medium', cve: 'CVE-2024-22195', age: 9, sla: 'WITHIN_SLA', state: 'REMEDIATED', action: 'Patch', owner: 'platform' }, { id: 'F-10164', host: 'jumphost-2.steam.local', os: 'Ubuntu 22.04', sev: 'Low', cve: 'CVE-2023-45288', age: 22, sla: 'WITHIN_SLA', state: 'OPEN', action: 'Defer', owner: 'sre' }, ]; /* Tiny anomaly bar chart placeholder for the trend section. */ function TrendChartPlaceholder() { const data = [22, 28, 21, 24, 30, 27, 26, 25, 31, 38, 42, 45, 41, 36, 33]; const closed = [10, 14, 12, 13, 18, 20, 22, 21, 24, 26, 28, 30, 31, 30, 29]; const max = Math.max(...data); return (
{data.map((d, i) => (
))}
); } function ReportingPage() { const [tab, setTab] = useRPSt('ivanti'); const [actionFilter, setActionFilter] = useRPSt(null); /* Donut data (illustrative) */ const ivantiDonuts = [ { label: 'Open vs Closed', donut: , }, { label: 'Action Coverage', labelExtra: actionFilter && ( ● filtered ), donut: , }, { label: 'FP Finding Status', donut: , }, { label: 'FP Workflow Status', donut: , }, ]; const atlasDonuts = [ { label: 'Host Coverage', donut: , }, { label: 'Plan Types', donut: , }, { label: 'Plan Status', donut: , }, ]; const donuts = tab === 'ivanti' ? ivantiDonuts : atlasDonuts; return (
{/* Page header */} Last sync: 2 minutes ago · 184 of 896 findings (3 filters active) } > }>Atlas }>Sync {/* Header-level error */} Atlas: connection refused — retry in 30s {/* Metrics tabs */}
setTab('ivanti')}>Ivanti Findings setTab('atlas')}>Atlas Coverage
{/* Donut grid */}
{donuts.map((d) => (
{d.donut}
))}
{/* Trend section */} spike detected day 12 }>
Open Closed
{/* Findings table panel */}
{/* Toolbar */}
Host Findings
}>Export }>Queue }>Columns }>Rows
{/* Search + filter chip row */}
Severity: Critical, High Action: Patch SLA: Overdue
{/* Table */}
{['ID', 'Host', 'OS', 'Severity', 'CVE', 'Age', 'SLA', 'State', 'Action', 'Owner'].map((h) => ( ))} {SAMPLE_ROWS.map((r, i) => ( ))}
{h}
{r.id} {r.host} {r.os} {r.cve} {r.age}d {r.action} {r.owner}
{/* Pagination footer */}
Showing 1–{SAMPLE_ROWS.length} of 184
‹ Prev Next ›
); } window.RPT_PAGE = { ReportingPage };