feat(web): Kalender-Plakette in der Farbe des Kalenders, Farbpunkt je Tooltip-Zeile
- groupEventsByDate sortiert jede Tagesgruppe jetzt nach Start aufsteigend - Zaehl-Plakette im Monatsraster traegt die Farbe des Kalenders des fruehesten Termins (weisse Schrift), ohne Farbe unveraendert bg-primary - Tooltip-Zeilen bekommen denselben Farbpunkt wie die Liste "Naechste Termine" (Rueckfall var(--muted-foreground)) - 3 neue Tests: calendar-month Test 2b, calendar-widget Test 3b/3c Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,9 @@
|
||||
* Starttag-Regel: mehrtaegige und ganztaegige Termine werden im Monatsraster
|
||||
* bewusst NUR am Starttag gezaehlt/angezeigt (`groupEventsByDate` gruppiert
|
||||
* ausschliesslich nach `event.start`) — eine Terminleiste ueber mehrere Tage
|
||||
* ist nicht Teil dieses Auftrags.
|
||||
* ist nicht Teil dieses Auftrags. Jede Tagesgruppe ist zusaetzlich nach Start
|
||||
* aufsteigend sortiert, damit die Plakettenfarbe (Farbe des ERSTEN Termins)
|
||||
* und die Tooltip-Reihenfolge deterministisch uebereinstimmen (quick-260916-jvj).
|
||||
*/
|
||||
|
||||
import type { CalendarEvent } from '@/lib/calendar-api';
|
||||
@@ -101,7 +103,9 @@ export interface CalendarDay {
|
||||
|
||||
/**
|
||||
* Gruppiert Termine nach lokalem Startdatum. Mehrtaegige/ganztaegige Termine
|
||||
* zaehlen bewusst nur am Starttag (siehe Kopfkommentar).
|
||||
* zaehlen bewusst nur am Starttag (siehe Kopfkommentar). Jede Tagesgruppe
|
||||
* wird nach Start aufsteigend sortiert (quick-260916-jvj), damit der erste
|
||||
* Eintrag zuverlaessig der fruehesten Termin des Tages ist.
|
||||
*/
|
||||
export function groupEventsByDate(events: CalendarEvent[]): Map<string, CalendarEvent[]> {
|
||||
const groupedEvents = new Map<string, CalendarEvent[]>();
|
||||
@@ -110,6 +114,9 @@ export function groupEventsByDate(events: CalendarEvent[]): Map<string, Calendar
|
||||
const existingEvents = groupedEvents.get(key) ?? [];
|
||||
groupedEvents.set(key, [...existingEvents, event]);
|
||||
}
|
||||
for (const dayEvents of groupedEvents.values()) {
|
||||
dayEvents.sort((a, b) => new Date(a.start).getTime() - new Date(b.start).getTime());
|
||||
}
|
||||
return groupedEvents;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user