From 0c9c3b551481b1ec668932ea3199423417032a0b Mon Sep 17 00:00:00 2001 From: jramos Date: Tue, 10 Feb 2026 12:09:38 -0700 Subject: [PATCH] added panels --- frontend/src/App.js | 533 +++++++++++++++++++++++++++----------------- 1 file changed, 333 insertions(+), 200 deletions(-) diff --git a/frontend/src/App.js b/frontend/src/App.js index e57fb04..8efc080 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -1255,212 +1255,206 @@ export default function App() { )} - {/* Quick Check */} -
-
-

Quick CVE Lookup

-
- setQuickCheckCVE(e.target.value)} - onKeyPress={(e) => e.key === 'Enter' && quickCheckCVEStatus()} - className="flex-1 intel-input" - /> - + {/* Three Column Layout */} +
+ {/* LEFT PANEL - Wiki/Knowledge Base */} +
+
+

+ Knowledge Base +

+ + {/* Wiki/Blog Style Entries */} +
+
+

CVE Response Procedures

+

Standard operating procedures for vulnerability response and escalation...

+ Last updated: 2024-02-08 +
+ +
+

Vendor Contact Matrix

+

Emergency contacts and escalation paths for security vendors...

+ Last updated: 2024-02-05 +
+ +
+

Severity Classification Guide

+

Guidelines for assessing and classifying vulnerability severity levels...

+ Last updated: 2024-01-28 +
+ +
+

Patching Policy

+

Enterprise patch management timelines and approval workflow...

+ Last updated: 2024-01-15 +
+ +
+

Documentation Standards

+

Required documentation for vulnerability tracking and audit compliance...

+ Last updated: 2024-01-10 +
+
+
- {quickCheckResult && ( -
- {quickCheckResult.error ? ( -
- -
-

Error

-

{quickCheckResult.error}

-
-
- ) : quickCheckResult.exists ? ( -
- -
-

✓ CVE Addressed ({quickCheckResult.vendors.length} vendor{quickCheckResult.vendors.length > 1 ? 's' : ''})

-
- {quickCheckResult.vendors.map((vendorInfo, idx) => ( -
-

{vendorInfo.vendor}

-
-

Severity: {vendorInfo.severity}

-

Status: {vendorInfo.status}

-

Documents: {vendorInfo.total_documents} attached

-
-
- ))} -
-
-
- ) : ( -
- -
-

Not Found

-

This CVE has not been addressed yet. No entry exists in the database.

-
-
- )} -
- )} -
- - {/* Open Vendor Tickets Dashboard */} - {jiraTickets.filter(t => t.status !== 'Closed').length > 0 && ( -
-
-

- - Open Tickets ({jiraTickets.filter(t => t.status !== 'Closed').length}) -

- {canWrite() && ( + {/* CENTER PANEL - Main Content */} +
+ {/* Quick Check */} +
+
+

Quick CVE Lookup

+
+ setQuickCheckCVE(e.target.value)} + onKeyPress={(e) => e.key === 'Enter' && quickCheckCVEStatus()} + className="flex-1 intel-input" + /> - )} -
-
- {jiraTickets.filter(t => t.status !== 'Closed').map(ticket => ( -
-
- - {ticket.ticket_key} - - {ticket.cve_id} - ({ticket.vendor}) - {ticket.summary && {ticket.summary}} - - - {ticket.status} - -
- {canWrite() && ( -
- - +
+ + {quickCheckResult && ( +
+ {quickCheckResult.error ? ( +
+ +
+

Error

+

{quickCheckResult.error}

+
+
+ ) : quickCheckResult.exists ? ( +
+ +
+

✓ CVE Addressed ({quickCheckResult.vendors.length} vendor{quickCheckResult.vendors.length > 1 ? 's' : ''})

+
+ {quickCheckResult.vendors.map((vendorInfo, idx) => ( +
+

{vendorInfo.vendor}

+
+

Severity: {vendorInfo.severity}

+

Status: {vendorInfo.status}

+

Documents: {vendorInfo.total_documents} attached

+
+
+ ))} +
+
+
+ ) : ( +
+ +
+

Not Found

+

This CVE has not been addressed yet. No entry exists in the database.

+
)}
- ))} -
-
- )} - - {/* Search and Filters */} -
-
-
- - setSearchQuery(e.target.value)} - className="intel-input w-full" - /> + )}
-
- - + {/* Search and Filters */} +
+
+
+ + setSearchQuery(e.target.value)} + className="intel-input w-full" + /> +
+ +
+
+ + +
+ +
+ + +
+
+
-
- - + {/* Results Summary */} +
+

+ {Object.keys(filteredGroupedCVEs).length} CVE{Object.keys(filteredGroupedCVEs).length !== 1 ? 's' : ''} + + {cves.length} vendor entr{cves.length !== 1 ? 'ies' : 'y'} +

+ {selectedDocuments.length > 0 && ( + + )}
-
-
- {/* Results Summary */} -
-

- {Object.keys(filteredGroupedCVEs).length} CVE{Object.keys(filteredGroupedCVEs).length !== 1 ? 's' : ''} - - {cves.length} vendor entr{cves.length !== 1 ? 'ies' : 'y'} -

- {selectedDocuments.length > 0 && ( - - )} -
- - {/* CVE List - Grouped by CVE ID */} - {loading ? ( -
-
-

Scanning Vulnerabilities...

-
- ) : error ? ( -
- -

Error Loading CVEs

-

{error}

- -
- ) : ( -
+ {/* CVE List - Grouped by CVE ID */} + {loading ? ( +
+
+

Scanning Vulnerabilities...

+
+ ) : error ? ( +
+ +

Error Loading CVEs

+

{error}

+ +
+ ) : ( +
{Object.entries(filteredGroupedCVEs).map(([cveId, vendorEntries]) => { const isCVEExpanded = expandedCVEs[cveId]; const severityOrder = { 'Critical': 0, 'High': 1, 'Medium': 2, 'Low': 3 }; @@ -1733,16 +1727,155 @@ export default function App() {
); })} -
- )} +
+ )} - {Object.keys(filteredGroupedCVEs).length === 0 && !loading && ( -
- -

No CVEs Found

-

Try adjusting your search criteria or filters

+ {Object.keys(filteredGroupedCVEs).length === 0 && !loading && ( +
+ +

No CVEs Found

+

Try adjusting your search criteria or filters

+
+ )}
- )} + {/* End Center Panel */} + + {/* RIGHT PANEL - Calendar & Open Tickets */} +
+ {/* Calendar Widget */} +
+

+ Calendar +

+ + {/* Simple Calendar Grid */} +
+
+ February 2024 +
+
+
Su
+
Mo
+
Tu
+
We
+
Th
+
Fr
+
Sa
+
+
+ {/* Week 1 */} +
28
+
29
+
30
+
31
+
1
+
2
+
3
+ {/* Week 2 */} +
4
+
5
+
6
+
7
+
8
+
9
+
10
+ {/* Week 3 */} +
11
+
12
+
13
+
14
+
15
+
16
+
17
+ {/* Week 4 */} +
18
+
19
+
20
+
21
+
22
+
23
+
24
+ {/* Week 5 */} +
25
+
26
+
27
+
28
+
29
+
1
+
2
+
+
+
+ + {/* Open Vendor Tickets */} +
+
+

+ + Open Tickets +

+ {canWrite() && ( + + )} +
+
+
+ {jiraTickets.filter(t => t.status !== 'Closed').length} +
+
Active
+
+
+ {jiraTickets.filter(t => t.status !== 'Closed').slice(0, 10).map(ticket => ( +
+
+ + {ticket.ticket_key} + + {canWrite() && ( +
+ + +
+ )} +
+
{ticket.cve_id}
+
{ticket.vendor}
+ {ticket.summary &&
{ticket.summary}
} +
+ + + {ticket.status} + +
+
+ ))} + {jiraTickets.filter(t => t.status !== 'Closed').length === 0 && ( +
+ +

No open tickets

+
+ )} +
+
+
+ {/* End Right Panel */} + +
+ {/* End Three Column Layout */}
);