From 65b8b2ce2c4b1d97a4f24c09e5207826392679c2 Mon Sep 17 00:00:00 2001 From: Krao Hasanee Date: Fri, 27 Mar 2026 01:08:24 -0400 Subject: [PATCH] Mark superseded request versions as completed on Requests page Co-Authored-By: Claude Sonnet 4.6 --- src/components/StatusBadge.jsx | 1 + src/pages/team/Requests.jsx | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/components/StatusBadge.jsx b/src/components/StatusBadge.jsx index 4a113c1..c7a87ac 100755 --- a/src/components/StatusBadge.jsx +++ b/src/components/StatusBadge.jsx @@ -6,6 +6,7 @@ const labels = { client_approved: 'Client Approved', active: 'Active', completed: 'Completed', + superseded: 'Superseded', initial: 'Initial', revision: 'Revision', amendment: 'Amended', diff --git a/src/pages/team/Requests.jsx b/src/pages/team/Requests.jsx index f3ccfeb..7e24223 100755 --- a/src/pages/team/Requests.jsx +++ b/src/pages/team/Requests.jsx @@ -98,20 +98,32 @@ export default function Requests() { return bMax - aMax; }); + // Build a map of max version per task so we can flag superseded groups + const maxVersionPerTask = {}; + Object.values(groupMap).forEach(g => { + const p = g.find(s => s.type !== 'amendment') || g[0]; + const cur = maxVersionPerTask[p.task_id] || 0; + if (p.version_number > cur) maxVersionPerTask[p.task_id] = p.version_number; + }); + return groups.map(group => { const primary = group.find(s => s.type !== 'amendment') || group[0]; const amendments = group.filter(s => s.type === 'amendment'); const task = tasks.find(t => t.id === primary.task_id); const project = projects.find(p => p.id === task?.project_id); const company = companies.find(co => co.id === project?.company_id); + const isSuperseded = primary.version_number < maxVersionPerTask[primary.task_id]; return ( -
+
{primary.service_type} + {isSuperseded && ( + Superseded + )}
From {primary.submitted_by_name} @@ -122,7 +134,10 @@ export default function Requests() {
- + {isSuperseded + ? Completed + : + } {task && View Job}