diff --git a/resources/js/components/budgets/budget-spending-chart.tsx b/resources/js/components/budgets/budget-spending-chart.tsx index bc54e309..5d599f57 100644 --- a/resources/js/components/budgets/budget-spending-chart.tsx +++ b/resources/js/components/budgets/budget-spending-chart.tsx @@ -16,7 +16,7 @@ import { formatCurrency } from '@/utils/currency'; import { formatDate } from '@/utils/date'; import { __ } from '@/utils/i18n'; import { useMemo } from 'react'; -import { Area, AreaChart, Line, XAxis } from 'recharts'; +import { Area, AreaChart, Line, ReferenceLine, XAxis } from 'recharts'; interface Props { currentPeriod: BudgetPeriod; @@ -217,6 +217,26 @@ export function BudgetSpendingChart({ }), } satisfies ChartConfig; + const todayMarker = useMemo(() => { + const today = new Date(); + today.setHours(0, 0, 0, 0); + const start = new Date(currentPeriod.start_date); + start.setHours(0, 0, 0, 0); + const end = new Date(currentPeriod.end_date); + end.setHours(0, 0, 0, 0); + + if (today < start || today > end) { + return null; + } + + if (hasPreviousPeriod) { + const diffMs = today.getTime() - start.getTime(); + return Math.floor(diffMs / (1000 * 60 * 60 * 24)) + 1; + } + + return today.toISOString().split('T')[0]; + }, [currentPeriod, hasPreviousPeriod]); + const periodLabel = useMemo(() => { const start = formatDate(currentPeriod.start_date, 'MMM d', locale); const end = formatDate(currentPeriod.end_date, 'MMM d, yyyy', locale); @@ -317,6 +337,21 @@ export function BudgetSpendingChart({ } /> + {todayMarker !== null && ( + + )} +