diff --git a/frontend/src/pages/Atemschutz.tsx b/frontend/src/pages/Atemschutz.tsx index dfe273b..8f1e1fe 100644 --- a/frontend/src/pages/Atemschutz.tsx +++ b/frontend/src/pages/Atemschutz.tsx @@ -268,36 +268,6 @@ function Atemschutz() { return `${year}-${m[2]}-${m[3]}`; }; - // Ref to the dialog content — used to read date inputs directly from DOM on submit - const dialogContentRef = React.useRef(null); - - /** Read all date inputs from DOM at submit time — bulletproof Safari workaround */ - const readDatesFromDOM = (): Record => { - const result: Record = {}; - const dateFieldNames = [ - 'lehrgang_datum', - 'untersuchung_datum', - 'untersuchung_gueltig_bis', - 'leistungstest_datum', - 'leistungstest_gueltig_bis', - ]; - if (!dialogContentRef.current) { - // Fallback: read from React state - for (const name of dateFieldNames) { - result[name] = normalizeDate((form as any)[name] || undefined); - } - return result; - } - for (const name of dateFieldNames) { - const input = dialogContentRef.current.querySelector(`input[name="${name}"]`) as HTMLInputElement | null; - const domVal = input?.value || ''; - const stateVal = (form as any)[name] || ''; - // Use DOM value if available, otherwise fall back to React state - result[name] = normalizeDate(domVal || stateVal || undefined); - } - return result; - }; - const handleSubmit = async () => { setDialogError(null); @@ -308,29 +278,15 @@ function Atemschutz() { setDialogLoading(true); try { - // Read date values directly from DOM (Safari workaround) - const dates = readDatesFromDOM(); - - // DEBUG: remove after confirming it works - const debugInfo: Record = {}; - const ref = dialogContentRef.current; - if (ref) { - for (const n of ['lehrgang_datum', 'leistungstest_gueltig_bis']) { - const el = ref.querySelector(`input[name="${n}"]`) as HTMLInputElement | null; - debugInfo[n] = el ? `found, value="${el.value}"` : 'NOT FOUND in DOM'; - } - } - alert('DOM dates:\n' + JSON.stringify(dates, null, 2) + '\n\nDebug:\n' + JSON.stringify(debugInfo, null, 2)); - if (editingId) { const payload: UpdateAtemschutzPayload = { atemschutz_lehrgang: form.atemschutz_lehrgang, - lehrgang_datum: dates.lehrgang_datum, - untersuchung_datum: dates.untersuchung_datum, - untersuchung_gueltig_bis: dates.untersuchung_gueltig_bis, + lehrgang_datum: normalizeDate(form.lehrgang_datum || undefined), + untersuchung_datum: normalizeDate(form.untersuchung_datum || undefined), + untersuchung_gueltig_bis: normalizeDate(form.untersuchung_gueltig_bis || undefined), untersuchung_ergebnis: (form.untersuchung_ergebnis as UntersuchungErgebnis) || undefined, - leistungstest_datum: dates.leistungstest_datum, - leistungstest_gueltig_bis: dates.leistungstest_gueltig_bis, + leistungstest_datum: normalizeDate(form.leistungstest_datum || undefined), + leistungstest_gueltig_bis: normalizeDate(form.leistungstest_gueltig_bis || undefined), leistungstest_bestanden: form.leistungstest_bestanden, bemerkung: form.bemerkung || undefined, }; @@ -340,12 +296,12 @@ function Atemschutz() { const payload: CreateAtemschutzPayload = { user_id: form.user_id, atemschutz_lehrgang: form.atemschutz_lehrgang, - lehrgang_datum: dates.lehrgang_datum, - untersuchung_datum: dates.untersuchung_datum, - untersuchung_gueltig_bis: dates.untersuchung_gueltig_bis, + lehrgang_datum: normalizeDate(form.lehrgang_datum || undefined), + untersuchung_datum: normalizeDate(form.untersuchung_datum || undefined), + untersuchung_gueltig_bis: normalizeDate(form.untersuchung_gueltig_bis || undefined), untersuchung_ergebnis: (form.untersuchung_ergebnis as UntersuchungErgebnis) || undefined, - leistungstest_datum: dates.leistungstest_datum, - leistungstest_gueltig_bis: dates.leistungstest_gueltig_bis, + leistungstest_datum: normalizeDate(form.leistungstest_datum || undefined), + leistungstest_gueltig_bis: normalizeDate(form.leistungstest_gueltig_bis || undefined), leistungstest_bestanden: form.leistungstest_bestanden, bemerkung: form.bemerkung || undefined, }; @@ -626,7 +582,7 @@ function Atemschutz() { {editingId ? 'Atemschutzträger bearbeiten' : 'Neuen Atemschutzträger anlegen'} - + {dialogError && ( {dialogError} @@ -685,11 +641,12 @@ function Atemschutz() { handleFormChange('lehrgang_datum', e.target.value)} + helperText="Format: 2025-03-01" InputLabelProps={{ shrink: true }} /> @@ -703,22 +660,24 @@ function Atemschutz() { handleFormChange('untersuchung_datum', e.target.value)} + helperText="Format: 2023-02-08" InputLabelProps={{ shrink: true }} /> handleFormChange('untersuchung_gueltig_bis', e.target.value)} + helperText="Format: 2028-02-08" InputLabelProps={{ shrink: true }} /> @@ -751,22 +710,24 @@ function Atemschutz() { handleFormChange('leistungstest_datum', e.target.value)} + helperText="Format: 2025-08-25" InputLabelProps={{ shrink: true }} /> handleFormChange('leistungstest_gueltig_bis', e.target.value)} + helperText="Format: 2026-08-25" InputLabelProps={{ shrink: true }} />