From c88fe74e251233a951608baf0e732a147a680cb1 Mon Sep 17 00:00:00 2001 From: plakkara Date: Tue, 4 Aug 2026 18:26:58 -0400 Subject: [PATCH 1/4] updated filters for job column --- frontend/src/components/JobMonitoringTab.tsx | 27 +++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/JobMonitoringTab.tsx b/frontend/src/components/JobMonitoringTab.tsx index 206655f5..71dfce7c 100644 --- a/frontend/src/components/JobMonitoringTab.tsx +++ b/frontend/src/components/JobMonitoringTab.tsx @@ -60,7 +60,6 @@ const STATUS_TO_API: Record = { Running: 'RUNNING', Failed: 'FAILED', } -const TRIGGER_OPTIONS = ['SYSTEM', 'USER'] const ACTIVITY_SEVERITIES = ['ERROR', 'WARNING', 'CRITICAL'] const ACTIVITY_TYPES = ['DATA_QUALITY', 'JOB', 'CRA', 'WKL', 'ICM', 'BATCH'] const ACTIVITY_TYPE_LABELS: Record = { @@ -110,7 +109,7 @@ const normalizeStatus = (status: string): string => { const matchesTriggerFilter = (triggeredBy: string, filter: string): boolean => { if (!filter) return true if (filter === 'USER') return triggeredBy !== 'SYSTEM' - return triggeredBy === filter + return triggeredBy.toUpperCase() === filter.toUpperCase() } const normalizeSeverity = (severity: string): string => { @@ -619,6 +618,26 @@ export default function JobMonitoringTab() { actSortField !== 'when' || actSortOrder !== 'desc' + // Build trigger filter options from loaded monitoring data. + // Keep SYSTEM first, followed by discovered IDIRs in alphabetical order. + const triggerOptions = (() => { + const found = new Set() + const add = (value: string | null | undefined) => { + const normalized = (value || '').trim().toUpperCase() + if (!normalized) return + found.add(normalized) + } + + jobListData.forEach((row) => add(row.triggeredBy)) + jobHistoryData.forEach((row) => add(row.triggeredBy)) + + const sortedIdirs = Array.from(found) + .filter((v) => v !== 'SYSTEM') + .sort((a, b) => a.localeCompare(b)) + + return found.has('SYSTEM') ? ['SYSTEM', ...sortedIdirs] : sortedIdirs + })() + // ── Job List: client-side filter + sort ────────────────────────────────── const filteredJobList = jobListData .filter((row) => { @@ -863,7 +882,7 @@ export default function JobMonitoringTab() { All - {TRIGGER_OPTIONS.map((t) => ( + {triggerOptions.map((t) => ( {t} @@ -1137,7 +1156,7 @@ export default function JobMonitoringTab() { All - {TRIGGER_OPTIONS.map((t) => ( + {triggerOptions.map((t) => ( {t} From 995741d1d27384ec6c831b3be066ab167f31d951 Mon Sep 17 00:00:00 2001 From: plakkara Date: Tue, 4 Aug 2026 18:56:49 -0400 Subject: [PATCH 2/4] modified job filter in job list table --- frontend/src/components/JobMonitoringTab.tsx | 25 +++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/JobMonitoringTab.tsx b/frontend/src/components/JobMonitoringTab.tsx index 71dfce7c..ae21aa4e 100644 --- a/frontend/src/components/JobMonitoringTab.tsx +++ b/frontend/src/components/JobMonitoringTab.tsx @@ -642,8 +642,7 @@ export default function JobMonitoringTab() { const filteredJobList = jobListData .filter((row) => { if (jlFilterId && !String(row.id).includes(jlFilterId)) return false - if (jlFilterName && !row.jobName.toLowerCase().includes(jlFilterName.toLowerCase())) - return false + if (jlFilterName && row.jobName !== jlFilterName) return false if (jlFilterStatus && row.status !== jlFilterStatus) return false if (!matchesTriggerFilter(row.triggeredBy, jlFilterTrigger)) return false return true @@ -838,12 +837,26 @@ export default function JobMonitoringTab() { /> )} {jlFilterAnchor.column === 'jobName' && ( - setJlFilterName(e.target.value)} - /> + displayEmpty + onChange={(e) => { + setJlFilterName(e.target.value) + closeJlFilter() + }} + sx={{ ...filterSelectSx, minWidth: 140 }} + > + + All + + {MONITORED_JOB_NAMES.map((n) => ( + + {n} + + ))} + )} {jlFilterAnchor.column === 'status' && (