From 889d4658e57df526971faa76ab085d7aec769fee Mon Sep 17 00:00:00 2001 From: Jordan Ramos Date: Mon, 8 Jun 2026 14:36:50 -0600 Subject: [PATCH] Fix Remediate integration in QueuePanel on Reporting Page - Add remediationModalItem state to QueuePanel - Render RemediationModal from QueuePanel for notes access - Add Remediate color to wfColor mapping in renderQueueItem - Add Remediate option to SelectionToolbar workflow type buttons The Notes button and Remediate workflow option were only added to the standalone IvantiTodoQueuePage but not the QueuePanel slide-out on the Reporting Page, which is the primary interface for queue interaction. --- .../src/components/pages/ReportingPage.js | 71 ++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/pages/ReportingPage.js b/frontend/src/components/pages/ReportingPage.js index c3e6489..1a9c0b3 100644 --- a/frontend/src/components/pages/ReportingPage.js +++ b/frontend/src/components/pages/ReportingPage.js @@ -9,6 +9,7 @@ import CveTooltip from '../CveTooltip'; import CardOwnerTooltip from '../CardOwnerTooltip'; import CardDetailModal from '../CardDetailModal'; import RedirectModal from '../RedirectModal'; +import RemediationModal from '../RemediationModal'; import AtlasBadge from '../AtlasBadge'; import LoaderModal from '../LoaderModal'; import CardActionModal from '../CardActionModal'; @@ -1558,6 +1559,9 @@ function QueuePanel({ open, items, onClose, onUpdate, onDelete, onDeleteMany, on const [createJiraOpen, setCreateJiraOpen] = useState(false); const [createJiraForm, setCreateJiraForm] = useState({ summary: '', cve_id: '', vendor: '', source_context: 'ivanti_queue', description: '', project_key: '', issue_type: '' }); const [createJiraError, setCreateJiraError] = useState(null); + + // Remediation Modal state + const [remediationModalItem, setRemediationModalItem] = useState(null); const [createJiraSaving, setCreateJiraSaving] = useState(false); const [createJiraSummaryError, setCreateJiraSummaryError] = useState(null); @@ -1819,6 +1823,7 @@ function QueuePanel({ open, items, onClose, onUpdate, onDelete, onDeleteMany, on : item.workflow_type === 'Archer' ? { col: '#0EA5E9', rgb: '14,165,233' } : item.workflow_type === 'GRANITE' ? { col: '#A1887F', rgb: '161,136,127' } : item.workflow_type === 'DECOM' ? { col: '#EF4444', rgb: '239,68,68' } + : item.workflow_type === 'Remediate' ? { col: '#A855F7', rgb: '168,85,247' } : { col: '#10B981', rgb: '16,185,129' }; const cves = item.cves || []; const cveDisplay = cves.length > 0 @@ -2010,6 +2015,53 @@ function QueuePanel({ open, items, onClose, onUpdate, onDelete, onDeleteMany, on )} + {/* Remediation Notes button — Remediate items only */} + {item.workflow_type === 'Remediate' && ( + + )} + {/* Redirect button — available on all items */} {canWrite && (