32 lines
4.8 KiB
Markdown
32 lines
4.8 KiB
Markdown
# Vortag und Folgetag auf der Startseite
|
||
|
||
Die Startseite (`TodayView`, Route `""`) zeigte ausschließlich das Gerätedatum. Wer einen vergangenen Tag ansehen oder nachtragen wollte, musste über `/work` gehen. Sie führt jetzt dieselbe Tagesnavigation wie die Arbeitsseite.
|
||
|
||
## Umsetzung
|
||
|
||
- `TodayView` ist `BeforeEnterObserver` und liest `?date=` als ISO-Datum. Ein unlesbarer Wert und ein Datum nach heute landen auf heute; die Zukunft hält auf dieser Seite nichts zu zeigen, und ein Habit-Zähler würde dort ohnehin `habit.futureDate` melden.
|
||
- `dayNavigation` baut dieselben Pillen und dasselbe Datumsfeld wie `WorkView`: Vortag, „Heute“ (abgeschaltet, wenn heute schon gezeigt wird), Folgetag (abgeschaltet am heutigen Tag) und `wj-day-picker` mit `max = heute`. Beschriftungen, `aria-label` und Tooltips stammen aus den vorhandenen Schlüsseln `work.previousDay`, `work.todayDay`, `work.nextDay` und `work.showDate`; die Klassen `wj-day-nav`, `wj-day-step` und `wj-day-picker` bestehen bereits im Stylesheet.
|
||
- Der gezeigte Tag trägt alles, was die Seite rechnet: Tagessumme, Kundenchips, Wocheneinnahme, Kalendermonat, Einträge, Erfassungslink und die Habit-Zähler. Drei Beschriftungen wechseln, damit die Seite nicht „heute“ behauptet: `journal.workDay` statt `journal.workToday`, `journal.entries` statt `journal.todayEntries`, `work.noEntries` statt `today.noWork`. Für die Wochensumme kommt `journal.dayWeek` hinzu, weil „Diese Woche“ an einem Tag aus einer früheren Woche falsch wäre.
|
||
- Heute bleibt ungemerkt: nur ein ausdrücklich gewählter anderer Tag wird festgehalten. Eine über Mitternacht offene Seite folgt damit weiter der Uhr, statt den Vortag als „heute“ auszugeben.
|
||
- Der Fenstertitel nennt an einem anderen Tag dessen Datum statt „Heute“, damit ein zweiter Tab erkennbar bleibt.
|
||
- Die Adresse wird beim Blättern nicht umgeschrieben — wie auf `/work`. `?date=` ist der Einstieg (Lesezeichen, Link, Erinnerung), die Pillen sind die Bedienung.
|
||
|
||
Neue Schlüssel in beiden Bundles: `journal.workDay`, `journal.dayWeek`.
|
||
|
||
## Nachweise
|
||
|
||
- `gherkin/ux-tests.feature` WJ-076 „Reach the day before and after from the home page“, angebunden in `BrowserCucumberTest`: zwei Tage mit unterschiedlichen Stunden erfasst, einen Tag zurück geblättert (eigene Stunden, eigener Eintrag, „That week“, der Eintrag von heute ist nicht dabei), ein Habit von dort gezählt — die Datenbank schreibt den Zähler auf den gezeigten Tag —, wieder vorwärts auf heute (Folgetag und „Heute“ abgeschaltet), über `?date=` direkt auf den früheren Tag und mit einem Datum nach heute zurück auf heute.
|
||
- Der gezeigte Tag wird im Test aus dem Datumsfeld der Seite gelesen, nicht aus der Testuhr: der Server besitzt „heute“, und die Vorbereitung bleibt über Mitternacht hinweg richtig.
|
||
|
||
## Kopf in einer Zeile (2026-10-23)
|
||
|
||
Der Kopf nahm drei Zeilen: Datum als Eyebrow, Spruch als Überschrift, Tagesnavigation darunter. Alles, was die Seite eigentlich zeigt, rutschte dadurch nach unten.
|
||
|
||
- Der Spruch „Jeden Tag ein bisschen.“ entfällt, `journal.todayHeading` ist aus beiden Bundles entfernt. Das Datum ist die Überschrift (`H2`) wie auf der Arbeitsseite; die Eyebrow-Zeile fällt damit weg.
|
||
- `.journal-today .journal-heading` ist eine Flexzeile: Datum links, Tagesnavigation rechts, Umbruch erst bei zu wenig Breite — auf dem Telefon also zwei Zeilen statt vier. Die Überschrift misst dort 26 px, unter 600 px 22 px.
|
||
- Das Datumsfeld ist auf der Startseite ein Kalendersymbol: Klasse `wj-day-jump` statt `wj-day-picker`. Der `DatePicker` trägt keine Beschriftung mehr, seine Eingabe steht auf Breite 0, sichtbar bleibt der eigene Umschaltknopf der Komponente. Er öffnet das Kalender-Overlay, in dem der Tag gewählt wird; `aria-label` und Tooltip nennen weiter `work.showDate`, `max = heute` und der Wertwechsel bleiben wie zuvor. Die Pille ist 40 × 36 px groß wie ein Schritt daneben.
|
||
- Begründung: ein Datum unmittelbar zu nennen ist hier selten, die Regel sind Vortag und Folgetag. Auf `/work`, wo gezielt ein Tag gesucht wird, bleibt das Feld unverändert.
|
||
- Für die Tests heißt das: der Spruch war der Sentinel „angemeldet und auf der Startseite“ in einem Dutzend Szenarien. An seine Stelle tritt `atHome()` (`.journal-today .journal-heading h2`); die beiden Sprachprüfungen nennen jetzt die Überschrift der Arbeitskarte („Deine Arbeit heute“ / „Your work, today“), die sprachabhängig bleibt.
|
||
|
||
Nachweis: WJ-077 „Pick a day on the home page without a date field“ — die Überschrift nennt den gezeigten Tag, keine Eyebrow-Zeile und kein Spruch mehr, die vier Bedienelemente der Tagesnavigation teilen sich eine Zeile (gleiche Oberkante) und das Datumsfeld ist nicht breiter als ein Schritt; der Kalenderknopf öffnet das Overlay, der Erste des Monats wird daraus gewählt und die Seite zeigt diesen Tag.
|