# Calendar Initialization Sequence Diagram Dette diagram viser den aktuelle initialization sekvens baseret på koden. ```mermaid sequenceDiagram participant Browser participant Index as index.ts participant MF as ManagerFactory participant CTF as CalendarTypeFactory participant EB as EventBus participant CM as CalendarManager participant EM as EventManager participant ERS as EventRenderingService participant GM as GridManager participant GSM as GridStyleManager participant GR as GridRenderer participant SM as ScrollManager participant NM as NavigationManager participant NR as NavigationRenderer participant VM as ViewManager Browser->>Index: DOMContentLoaded Index->>Index: initializeCalendar() Index->>CTF: initialize() CTF-->>Index: Factory ready Index->>MF: getInstance() MF-->>Index: Factory instance Index->>MF: createManagers(eventBus, config) MF->>EM: new EventManager(eventBus) EM->>EB: setupEventListeners() EM-->>MF: EventManager ready MF->>ERS: new EventRenderingService(eventBus, eventManager) ERS->>EB: setupEventListeners() ERS-->>MF: EventRenderingService ready MF->>GM: new GridManager() GM->>GSM: new GridStyleManager(config) GM->>GR: new GridRenderer(config) GM->>EB: subscribeToEvents() GM-->>MF: GridManager ready MF->>SM: new ScrollManager() SM->>EB: subscribeToEvents() SM-->>MF: ScrollManager ready MF->>NM: new NavigationManager(eventBus) NM->>NR: new NavigationRenderer(eventBus) NR->>EB: setupEventListeners() NM->>EB: setupEventListeners() NM-->>MF: NavigationManager ready MF->>VM: new ViewManager(eventBus) VM->>EB: setupEventListeners() VM-->>MF: ViewManager ready MF->>CM: new CalendarManager(eventBus, config, deps...) CM->>EB: setupEventListeners() CM-->>MF: CalendarManager ready MF-->>Index: All managers created Index->>EB: setDebug(true) Index->>MF: initializeManagers(managers) MF->>CM: initialize() CM->>EM: loadData() EM->>EM: loadMockData() EM->>EM: processCalendarData() EM-->>CM: Data loaded CM->>GM: setResourceData(resourceData) GM-->>CM: Resource data set CM->>GM: render() GM->>GSM: updateGridStyles(resourceData) GM->>GR: renderGrid(grid, currentWeek, resourceData, allDayEvents) GR-->>GM: Grid rendered GM->>EB: emit(GRID_RENDERED, context) EB-->>ERS: GRID_RENDERED event ERS->>EM: getEventsForPeriod(startDate, endDate) EM-->>ERS: Filtered events ERS->>ERS: strategy.renderEvents() CM->>SM: initialize() SM->>SM: setupScrolling() CM->>CM: setView(currentView) CM->>EB: emit(VIEW_CHANGED, viewData) CM->>CM: setCurrentDate(currentDate) CM->>EB: emit(DATE_CHANGED, dateData) CM->>EB: emit(CALENDAR_INITIALIZED, initData) EB-->>NM: CALENDAR_INITIALIZED NM->>NM: updateWeekInfo() NM->>EB: emit(WEEK_INFO_UPDATED, weekInfo) EB-->>NR: WEEK_INFO_UPDATED NR->>NR: updateWeekInfoInDOM() EB-->>VM: CALENDAR_INITIALIZED VM->>VM: initializeView() VM->>EB: emit(VIEW_RENDERED, viewData) CM-->>MF: Initialization complete MF-->>Index: All managers initialized Index->>Browser: Calendar ready ``` ## Aktuel Arkitektur Status ### Factory Pattern - ManagerFactory håndterer manager instantiering - Proper dependency injection via constructor ### Event-Driven Communication - EventBus koordinerer kommunikation mellem managers - NavigationRenderer lytter til WEEK_INFO_UPDATED events - EventRenderingService reagerer på GRID_RENDERED events ### Separation of Concerns - Managers håndterer business logic - Renderers håndterer DOM manipulation - EventBus håndterer kommunikation