diff --git a/frontend/src/pages/ActivityPage.jsx b/frontend/src/pages/ActivityPage.jsx index ec68925..50ea792 100644 --- a/frontend/src/pages/ActivityPage.jsx +++ b/frontend/src/pages/ActivityPage.jsx @@ -38,6 +38,29 @@ function dedupeActivitiesById(rows) { return [...m.values()].sort(compareActivities) } +/** activity_log: Spalten start_time / end_time sind TIME (Uhrzeit zum Kalendertag date), nicht volles Timestamp. */ +function timeInputValueFromApi(t) { + if (t == null || t === '') return '' + const s = String(t) + if (s.includes('T') && s.length >= 16) return s.slice(11, 16) + const m = s.match(/^(\d{1,2}):(\d{2})/) + if (!m) return '' + return `${m[1].padStart(2, '0')}:${m[2]}` +} + +function timePayloadFromInput(v) { + const s = v == null ? '' : String(v).trim() + if (!s) return null + if (/^\d{2}:\d{2}$/.test(s)) return `${s}:00` + if (/^\d{2}:\d{2}:\d{2}$/.test(s)) return s + return s +} + +function formatTimeForList(t) { + const v = timeInputValueFromApi(t) + return v || '' +} + const ACTIVITY_TYPES = [ 'Traditionelles Krafttraining','Matrial Arts','Outdoor Spaziergang', 'Innenräume Spaziergang','Laufen','Radfahren','Schwimmen', @@ -76,6 +99,8 @@ const ACTIVITY_LOG_PAYLOAD_KEYS = new Set([ function empty() { return { date: dayjs().format('YYYY-MM-DD'), + start_time: '', + end_time: '', activity_type: 'Traditionelles Krafttraining', duration_min: '', kcal_active: '', hr_avg: '', hr_max: '', rpe: '', notes: '', @@ -282,6 +307,30 @@ function EntryForm({ set('date',e.target.value)}/> +