Zum Hauptinhalt springen

Kalender (Calendar)

Zweck

/calendar liefert eine Multi-View-Kalender-Ansicht mit:

  • Monats- (MonthView), Wochen- (WeekView), Tages- (DayView) und Agenda- (AgendaView) Sichten.
  • Sidebar mit verbundenen Mail-Konten (MailboxEmployee) — Microsoft-365-Kalender werden automatisch eingelesen.
  • Standardfarben für Kalender-Einträge aus einem Default-Pool (DEFAULT_CALENDAR_COLORS).
  • Mobile-Default: auf kleinen Bildschirmen wechselt die View automatisch zu agenda (Time-Grid waere unbedienbar).
  • Popout-Modus (/calendar-popout) — Vollbild ohne SpeamCore-Layout, für einen zweiten Bildschirm.

EventFormModal legt neue Termine an oder bearbeitet bestehende — über CalendarEvent-Endpoints.

Voraussetzungen

- Berechtigung `view:CalendarEvent` und `create:CalendarEvent`. - Optional verbundener Microsoft-365-Account (siehe [Mail-Konten](/mail-accounts)) für Outlook-Kalender-Sync.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Calendar, CalendarEventModul aufrufbar
create/update/deleteCalendarEventTermine pflegenAPP_SPEAMCORE_CREATE/UPDATE/DELETE_CALENDAR_EVENT
viewMailboxEmployeeSidebar mit verbundenen KalendernAPP_SPEAMCORE_VIEW_MAILBOX_EMPLOYEE

Schritt-für-Schritt-Anleitung

Termin erstellen

  1. Kalender (/calendar) → in der gewuenschten View einen freien Slot anklicken.
  2. EventFormModal öffnet sich vorbefuellt mit Datum/Zeit.
  3. Titel, Beschreibung, Teilnehmer, Anfangs-/Endzeit, Erinnerung pflegen.
  4. SpeichernPOST /api/calendar-events.

View wechseln

CalendarHeader bietet Buttons für Monats/Wochen/Tages/Agenda. Mobile defaults auf agenda.

Mailbox-Sidebar nutzen

CalendarSidebar listet alle verbundenen Mailboxes — Toggle-Switches blenden die Kalender ein/aus.

Popout-Fenster

/calendar-popout öffnet die Ansicht in einem eigenen Browser-Fenster ohne HomeLayout — geeignet für Dashboards.

Listenansicht — calendar

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:

  • KAL. (Mini-Kalender)
  • ZEIT (Persoenliche Wochen-Arbeitszeit)
  • ARBEIT (Eigene bevorstehende Aufträge)

UI-Elemente

Komponenten

KomponenteFunktion
CalendarHeaderView-Switch und Navigation (vor/zurueck/heute)
MonthView, WeekView, DayView, AgendaViewRender-Komponenten je View
EventFormModalTermin-Erfassung
CalendarSidebarMailbox-Liste mit Toggle

Hooks

HookFunktion
useCalendarNavigationDatum-Navigation und Range-Berechnung
useCalendarEventsDaten-Laden je Datum-Range und aktiven Mailboxes

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • Mail-Konten — Quelle für Outlook-Kalender.
  • Mail — verlinkt mit Calendar-Events über Mail.calendarEvent (Phase 1).
  • Workorders — Termin-Verknuepfungen mit Aufträgen.
  • Mitarbeiter — Teilnehmer.

Häufige Fehler und Lösungen

FehlerLösung
Microsoft-365-Termine fehlenMailboxEmployee nicht aktiviert oder Graph-Token abgelaufen — in Mail-Konten reauthentifizieren.
Mobile-Ansicht zeigt nur AgendaPer Design — Time-Grid waere zu schmal.
Termin im Popout wird nicht gespeichertCookie/Session-Sharing zwischen Fenstern erforderlich.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/calendar-events?startDate&endDateListeview CalendarEvent
POST/api/calendar-eventsAnlegencreate CalendarEvent
PATCH/api/calendar-events/:idÄndernupdate CalendarEvent
DELETE/api/calendar-events/:idSoft-Deletedelete CalendarEvent
GET/api/mailbox-employees?filter[employeeId]Sidebarview MailboxEmployee

Verwandte Module

  • Buchungsseiten (CalendarPage) — Calendly-ähnliche öffentliche Buchungs-Slots pro Mitarbeiter. Buchungen erscheinen automatisch als Termine in diesem Kalender hier.

Versionshinweise

  • 2026-04-30: Initiale Veröffentlichung.
  • 2026-05-21 (Welle 138): Querverweis auf das neue Modul Buchungsseiten (CalendarPage) ergänzt — externe Gäste können seitdem Termine bei Mitarbeitern buchen, die dann hier im Kalender als reguläre Termine erscheinen.