diff --git a/client/src/pages/Alerts.jsx b/client/src/pages/Alerts.jsx index 197b4ea..24fa682 100644 --- a/client/src/pages/Alerts.jsx +++ b/client/src/pages/Alerts.jsx @@ -49,6 +49,33 @@ const Alerts = () => { } }; + // Group alerts by alert_event_id to show related alerts together + const groupAlertsByEvent = (logs) => { + const grouped = {}; + const ungrouped = []; + + logs.forEach(log => { + if (log.alert_event_id) { + if (!grouped[log.alert_event_id]) { + grouped[log.alert_event_id] = []; + } + grouped[log.alert_event_id].push(log); + } else { + ungrouped.push(log); + } + }); + + // Convert grouped object to array of arrays, sorted by most recent alert in each group + const groupedArrays = Object.values(grouped).map(group => + group.sort((a, b) => new Date(b.sent_at) - new Date(a.sent_at)) + ).sort((a, b) => new Date(b[0].sent_at) - new Date(a[0].sent_at)); + + // Add ungrouped alerts as individual groups + ungrouped.forEach(log => groupedArrays.push([log])); + + return groupedArrays; + }; + const handleDeleteRule = async (ruleId) => { if (window.confirm('Are you sure you want to delete this alert rule?')) { try { @@ -356,72 +383,183 @@ const Alerts = () => {