fix: BEOs und Objekte bleiben beim Wechsel der Art erhalten — Version 1.16.1
Zwei getrennte Ursachen dafür, dass ausgefüllte Felder beim nachträglichen Wählen der Art der Führung verschwanden: - Objekte wurden bei jedem Wechsel der Art unbedingt geleert. Jetzt nur noch, wenn die Objektkategorie tatsächlich umschlägt (SonF ↔ Rest). - currentUserBeo wurde in MainClient bei jedem Rendern neu erzeugt und steht in den Abhängigkeiten des Vorbelegungs-Effekts in LogbuchForm. Dadurch setzte jedes Neurendern der Elternkomponente das ganze Formular zurück — BEOs auf den eigenen Namen, dazu Objekte, Zeiten und Bemerkungen. Ein konkreter Auslöser ist die Backup-Schaltfläche auf demselben Bildschirm. Das Objekt ist jetzt useMemo-stabil. Nebeneffekt: beim Bearbeiten lief das bisherige setObjekte([]) gegen das asynchrone Nachladen der gespeicherten Objekte — dieser Wettlauf entfällt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,7 @@ Next.js 16 App Router application. All pages are server components; interactive
|
||||
|
||||
- **`CustomSelect`**: replaces native `<select>` everywhere — iOS/Android native popups ignore CSS sizing. Supports `keepOpen` prop for multi-select use cases (BEOs, Objekte).
|
||||
- **`TimePicker5`**: custom time picker, no native `<input type="time">`. Shows HH:MM with ▲/▼ buttons, 5-minute steps, auto-repeat on hold (400 ms delay → 1-hour steps at 350 ms). Keyboard: ↑/↓.
|
||||
- **`LogbuchForm`**: Beginn/Ende stored as `"YYYY-MM-DDTHH:MM"` strings. Date and time are split into separate `<input type="date">` + `<TimeInput>`. The single date field is the **Beginn** date; Ende's date is derived, never entered. Rule for sessions crossing midnight: **start time-of-day later than end time-of-day ⇒ Beginn is the previous day**, anchored on Ende (the moment the form is filled in, hence the reliable one) — `beginnAusEnde()` / `endeAusBeginn()`. So typing a start time can move the visible date back a day; a grey line below the row explains it. A duration over 12 h shows a soft hint but never blocks saving. Entries created before 1.16.0 may have `Beginn > Ende`; `migrate_zeiten.sql` fixes them.
|
||||
- **`LogbuchForm`**: Beginn/Ende stored as `"YYYY-MM-DDTHH:MM"` strings. Date and time are split into separate `<input type="date">` + `<TimeInput>`. The single date field is the **Beginn** date; Ende's date is derived, never entered. Rule for sessions crossing midnight: **start time-of-day later than end time-of-day ⇒ Beginn is the previous day**, anchored on Ende (the moment the form is filled in, hence the reliable one) — `beginnAusEnde()` / `endeAusBeginn()`. So typing a start time can move the visible date back a day; a grey line below the row explains it. A duration over 12 h shows a soft hint but never blocks saving. Entries created before 1.16.0 may have `Beginn > Ende`; `migrate_zeiten.sql` fixes them. Changing ArtFuehrung only clears what no longer fits — Objekte just when the category flips (`SonF` ↔ rest), never BEOs. The `currentUserBeo` prop must be referentially stable (it is `useMemo`'d in `MainClient`): it sits in the prefill effect's deps, so a fresh object on every parent render would wipe the form mid-entry.
|
||||
- **`LogbuchList`**: accepts `compact` and `limit` props. Compact mode used for the 5-entry preview below the form on desktop (`hidden lg:block`).
|
||||
|
||||
## Data model
|
||||
|
||||
Reference in New Issue
Block a user