diff --git a/frontend/src/pages/Weekly.tsx b/frontend/src/pages/Weekly.tsx index 67e0a9e..8139f70 100644 --- a/frontend/src/pages/Weekly.tsx +++ b/frontend/src/pages/Weekly.tsx @@ -198,7 +198,8 @@ export default function Weekly() { department_name: string wtdCost: number // actual WTD (or full week for past weeks) forecastFull: number // full week forecast via prior-week same-day actuals - prevCost: number // prev week same elapsed days (or full prev week for past weeks) + prevCost: number // prev week same elapsed days (or full prev week for past weeks) — for WTD-vs-WTD comparisons + prevFullCost: number // full prev week (Mon-Sun) — for comparing against the full-week forecast } const deptRows: DeptRow[] = depts.map(dep => { const wtdCost = Object.entries(dep.days) @@ -223,12 +224,17 @@ export default function Weekly() { .filter(([d]) => d >= prevWeekFrom && d <= prevCutoff) .reduce((s, [, v]) => s + v.cost, 0) - return { department_id: dep.department_id, department_name: dep.department_name, wtdCost, forecastFull, prevCost } + const prevFullCost = Object.entries(dep.days) + .filter(([d]) => d >= prevWeekFrom && d <= prevWeekTo) + .reduce((s, [, v]) => s + v.cost, 0) + + return { department_id: dep.department_id, department_name: dep.department_name, wtdCost, forecastFull, prevCost, prevFullCost } }).sort((a, b) => b.forecastFull - a.forecastFull) const totalWTD = deptRows.reduce((s, d) => s + d.wtdCost, 0) const totalForecast = deptRows.reduce((s, d) => s + d.forecastFull, 0) const totalPrev = deptRows.reduce((s, d) => s + d.prevCost, 0) + const totalPrevFull = deptRows.reduce((s, d) => s + d.prevFullCost, 0) const totalPyWages = pyWages ?? 0 const pctBudgWTD = budgetWTD != null && budgetWTD > 0 ? (totalWTD / budgetWTD) * 100 : null @@ -320,7 +326,7 @@ export default function Weekly() {