'use client'; import { useState, useEffect } from 'react'; import { CreateWerteEntry, WerteEntry } from '@/types/werte'; interface WerteFormProps { onSuccess: () => void; selectedEntry?: WerteEntry | null; } export default function WerteForm({ onSuccess, selectedEntry }: WerteFormProps) { const [formData, setFormData] = useState({ Datum: '', Zeit: '', Zucker: '', Essen: 'nüchtern', Gewicht: '', DruckS: '', DruckD: '', Puls: '', }); const [isSubmitting, setIsSubmitting] = useState(false); const [weekday, setWeekday] = useState(''); const [editId, setEditId] = useState(null); useEffect(() => { if (selectedEntry) { // Load selected entry for editing const dateStr = selectedEntry.Datum.toString().split('T')[0]; const timeStr = selectedEntry.Zeit.toString().substring(0, 5); setFormData({ Datum: dateStr, Zeit: timeStr, Zucker: selectedEntry.Zucker || '', Essen: selectedEntry.Essen || '', Gewicht: selectedEntry.Gewicht || '', DruckS: selectedEntry.DruckS || '', DruckD: selectedEntry.DruckD || '', Puls: selectedEntry.Puls || '', }); setEditId(selectedEntry.ID || null); // Parse date to avoid timezone issues const [year, month, day] = dateStr.split('T')[0].split('-'); const date = new Date(Number(year), Number(month) - 1, Number(day)); updateWeekday(date); } else { // Initialize with current date and time for new entry const now = new Date(); const dateStr = now.toISOString().split('T')[0]; const timeStr = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`; setFormData(prev => ({ ...prev, Datum: dateStr, Zeit: timeStr, })); setEditId(null); updateWeekday(now); } }, [selectedEntry]); const updateWeekday = (date: Date) => { const weekdays = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; setWeekday(weekdays[date.getDay()]); }; const handleDateChange = (dateStr: string) => { setFormData(prev => ({ ...prev, Datum: dateStr })); // Parse date to avoid timezone issues const [year, month, day] = dateStr.split('-'); const date = new Date(Number(year), Number(month) - 1, Number(day)); updateWeekday(date); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); try { const url = editId ? `/api/werte/${editId}` : '/api/werte'; const method = editId ? 'PUT' : 'POST'; const response = await fetch(url, { method: method, headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(formData), }); if (response.ok) { // Reset form but keep date and time const now = new Date(); const timeStr = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`; setFormData(prev => ({ ...prev, Zeit: timeStr, Zucker: '', Essen: 'nüchtern', Gewicht: '', DruckS: '', DruckD: '', Puls: '', })); setEditId(null); onSuccess(); } else { alert('Fehler beim Speichern!'); } } catch (error) { console.error('Error:', error); alert('Fehler beim Speichern!'); } finally { setIsSubmitting(false); } }; const handleReset = () => { const now = new Date(); const dateStr = now.toISOString().split('T')[0]; const timeStr = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`; setFormData({ Datum: dateStr, Zeit: timeStr, Zucker: '', Essen: 'nüchtern', Gewicht: '', DruckS: '', DruckD: '', Puls: '', }); setEditId(null); updateWeekday(now); }; return (
{editId && (
ℹ️ Bearbeitungsmodus: Sie bearbeiten einen bestehenden Eintrag. Klicken Sie auf "Aktualisieren", um die Änderungen zu speichern, oder "Abbrechen", um zur Neuerfassung zurückzukehren.
)}
Datum Zeit Zucker Essen Gewicht Druck sys Druck dia Puls
{weekday} mg/dl kg mmHg mmHg bpm
handleDateChange(e.target.value)} required /> setFormData(prev => ({ ...prev, Zeit: e.target.value }))} required /> setFormData(prev => ({ ...prev, Zucker: e.target.value }))} maxLength={4} />