refactor(calendar): Wochentage und Monate aus Intl statt aus sechs Arrays
Sechs handgeschriebene Arrays in drei Dateien, und Intl kam im ganzen Projekt nicht vor – obwohl jeder Browser es seit Jahren mitbringt. Die Doppelpflege war nicht nur lästig, sie war eine Falle: DayDialog begann seine Woche am Sonntag, die anderen am Montag, jeweils passend zu ihrer Indizierung. Beide waren für sich richtig. Wer aber eines der Arrays in eine neue Ansicht kopiert hätte, hätte sich einen Off-by-one gebaut, der nur an sieben Tagen im Jahr auffällt. Jetzt eine Ordnung (Montag zuerst, wie weekdayIndex) plus eine ausdrücklich benannte zweite Liste für alles, was direkt mit getDay() indiziert – statt eines Umrechnens am Aufrufort, wo der Off-by-one sonst entsteht. Verhaltensgleich belegt: Die erzeugten Namen stimmen zeichengenau mit den gelöschten Arrays überein, vor dem Austausch verglichen. Die Sprache ist fest auf 'en' gesetzt, nicht die des Browsers. Intl.DateTimeFormat(undefined, …) nähme die Einstellung des Rechners und setzte auf einem deutschen System „Montag" neben ein englisches „Repeat" – genau der Mischmasch von vorgestern, nur durch die Hintertür. Kommt eine Sprachwahl (IDEAS.md), ist uiLocale die eine Stelle, an der sie andockt. Fünf neue Tests, unter Mutation nachgewiesen: Nimmt man dem Sonntag seinen Platz vorn, wird der Test rot. Geprüft: tsc sauber, 46 Vitest-Tests, alle 234 Prüfungen der sieben Selbsttest-Suiten grün. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8586664fae
commit
e1259dd55c
6 files changed
+174
-26
No files matched your search
+34
@@ -1562,6 +1562,40 @@ bleibt `node` (schnell); wer ein DOM braucht, schreibt
|
||||
|
||||
---
|
||||
|
||||
## Wochentage und Monate aus `Intl` (20.09.2026)
|
||||
|
||||
Sechs handgeschriebene Arrays in drei Dateien, und `Intl` kam im ganzen Projekt
|
||||
nicht vor – obwohl jeder Browser es seit Jahren mitbringt.
|
||||
|
||||
Die Doppelpflege war nicht nur lästig, sie war eine Falle: `DayDialog` begann
|
||||
seine Woche am **Sonntag**, die anderen am **Montag**, jeweils passend zu ihrer
|
||||
Indizierung. Beide waren für sich richtig. Wer aber eines der Arrays in eine
|
||||
neue Ansicht kopiert hätte, hätte sich einen Off-by-one gebaut, der nur an
|
||||
sieben Tagen im Jahr auffällt.
|
||||
|
||||
Jetzt eine Ordnung (Montag zuerst, wie `weekdayIndex`) plus eine ausdrücklich
|
||||
benannte zweite Liste `weekdayLongNamesSun` für alles, was direkt mit
|
||||
`getDay()` indiziert.
|
||||
|
||||
**Verhaltensgleich belegt:** Die erzeugten Namen stimmen zeichengenau mit den
|
||||
gelöschten Arrays überein – vor dem Austausch verglichen, nicht danach gehofft.
|
||||
|
||||
**Die Sprache ist fest auf `en` gesetzt, nicht die des Browsers.**
|
||||
`Intl.DateTimeFormat(undefined, …)` nähme die Einstellung des Rechners und
|
||||
setzte auf einem deutschen System „Montag" neben ein englisches „Repeat" –
|
||||
genau der Mischmasch, der am 18.09. ausgeräumt wurde. Kommt eine Sprachwahl,
|
||||
ist `uiLocale` in `dates.ts` die eine Stelle, an der sie andockt.
|
||||
|
||||
- [x] Fünf Tests in `dates.test.ts`, unter Mutation nachgewiesen: Nimmt man
|
||||
dem Sonntag seinen Platz vorn, wird der Test rot.
|
||||
- [ ] Monatsansicht: Kopfzeile Mon–Sun, Termine am richtigen Tag 🔎
|
||||
- [ ] Wochenansicht: Datumszeile stimmt mit dem Wochentag überein
|
||||
- [ ] Tagesdialog: Überschrift nennt den richtigen Wochentag (der Fall mit
|
||||
der Sonntags-Liste) 🔎
|
||||
- [ ] Serientermin „An diesen Tagen": Beschriftung passt zum gesetzten Tag –
|
||||
anlegen, in DAVx5 prüfen, ob derselbe Wochentag ankommt
|
||||
- [ ] Listenansicht: Datum als „September 18, 2026"
|
||||
|
||||
## Platzhalter und Leerzustände (18.09.2026)
|
||||
|
||||
Beim Laden stand ein Kreisel in der Mitte, danach klappte das Layout um. Jetzt
|
||||
|
||||
Reference in new issue
Block a user