From 6b9d8cdf49d9a46049d5a0c7d1ba2049fa1b552b Mon Sep 17 00:00:00 2001 From: Andreas Weyer Date: Thu, 4 Dec 2025 02:03:37 +0000 Subject: [PATCH] Update day schedule and simulation chart labels, enhance defaults --- src/App.tsx | 1 + src/components/day-schedule.tsx | 2 +- src/components/simulation-chart.tsx | 26 ++++++++++++++++++++++++-- src/constants/defaults.ts | 4 ++-- src/locales/de.ts | 4 ++++ src/locales/en.ts | 4 ++++ 6 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index ae33384..ed1f42f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -113,6 +113,7 @@ const MedPlanAssistant = () => { displayedDays={displayedDays} yAxisMin={yAxisMin} yAxisMax={yAxisMax} + days={days} t={t} /> diff --git a/src/components/day-schedule.tsx b/src/components/day-schedule.tsx index a63ba17..a390b8b 100644 --- a/src/components/day-schedule.tsx +++ b/src/components/day-schedule.tsx @@ -107,7 +107,7 @@ const DaySchedule: React.FC = ({ )} - {day.isTemplate ? t('regularPlan') : t('deviatingPlan')} + {day.isTemplate ? t('regularPlan') : t('alternativePlan')} {t('day')} {dayIndex + 1} diff --git a/src/components/simulation-chart.tsx b/src/components/simulation-chart.tsx index da2d05f..1b25095 100644 --- a/src/components/simulation-chart.tsx +++ b/src/components/simulation-chart.tsx @@ -46,6 +46,7 @@ const SimulationChart = ({ displayedDays, yAxisMin, yAxisMax, + days, t }: any) => { const totalHours = (parseInt(simulationDays, 10) || 3) * 24; @@ -113,6 +114,28 @@ const SimulationChart = ({ return deviatingDays; }, [combinedProfile, templateProfile, simulationDays]); + // Determine label for each day's reference line + const getDayLabel = React.useCallback((dayNumber: number) => { + if (dayNumber === 1) return t('refLineRegularPlan'); + + // Check if this day has an actual schedule entry (not auto-filled) + const hasSchedule = days && days.length >= dayNumber; + + // Check if this day deviates from template + const hasDeviation = daysWithDeviations.has(dayNumber); + + if (!hasDeviation) { + // Matches template + return t('refLineNoDeviation'); + } else if (!hasSchedule) { + // Deviates but no schedule = recovering + return t('refLineRecovering'); + } else { + // Has deviation and has schedule = actual irregular intake + return t('refLineIrregularIntake'); + } + }, [days, daysWithDeviations, t]); + // Merge all profiles into a single dataset for proper tooltip synchronization const mergedData = React.useMemo(() => { const dataMap = new Map(); @@ -358,9 +381,8 @@ const SimulationChart = ({ ({ chartView: 'damph', yAxisMin: '8', yAxisMax: '13', - simulationDays: '4', - displayedDays: '3', + simulationDays: '5', + displayedDays: '5', } }); diff --git a/src/locales/de.ts b/src/locales/de.ts index e41b264..066ce12 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -45,6 +45,9 @@ export const de = { tickNoon: "Mittag", refLineRegularPlan: "Regulärer Plan", refLineDeviatingPlan: "Abweichung vom Plan", + refLineNoDeviation: "Keine Abweichung", + refLineRecovering: "Erholung", + refLineIrregularIntake: "Irreguläre Einnahme", refLineDayX: "Tag {{x}}", refLineMin: "Min", refLineMax: "Max", @@ -98,6 +101,7 @@ export const de = { // Day-based schedule regularPlan: "Regulärer Plan", deviatingPlan: "Abweichung vom Plan", + alternativePlan: "Alternativer Plan", regularPlanOverlay: "Regulär", dayNumber: "Tag {{number}}", cloneDay: "Tag klonen", diff --git a/src/locales/en.ts b/src/locales/en.ts index 3e45987..56c1c30 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -45,6 +45,9 @@ export const en = { tickNoon: "Noon", refLineRegularPlan: "Regular Plan", refLineDeviatingPlan: "Deviation from Plan", + refLineNoDeviation: "No Deviation", + refLineRecovering: "Recovering", + refLineIrregularIntake: "Irregular Intake", refLineDayX: "Day {{x}}", refLineMin: "Min", refLineMax: "Max", @@ -107,6 +110,7 @@ export const en = { // Day-based schedule regularPlan: "Regular Plan", deviatingPlan: "Deviation from Plan", + alternativePlan: "Alternative Plan", regularPlanOverlay: "Regular", dayNumber: "Day {{number}}", cloneDay: "Clone day",