diff --git a/src/constants/CoreEvents.ts b/src/constants/CoreEvents.ts index 06d4b6f..52b285d 100644 --- a/src/constants/CoreEvents.ts +++ b/src/constants/CoreEvents.ts @@ -13,11 +13,10 @@ export const CoreEvents = { VIEW_RENDERED: 'view:rendered', WORKWEEK_CHANGED: 'workweek:changed', - // Navigation events (5) + // Navigation events (4) NAV_BUTTON_CLICKED: 'nav:button-clicked', DATE_CHANGED: 'nav:date-changed', NAVIGATION_COMPLETED: 'nav:navigation-completed', - PERIOD_INFO_UPDATE: 'nav:period-info-update', NAVIGATE_TO_EVENT: 'nav:navigate-to-event', // Data events (5) diff --git a/src/managers/NavigationManager.ts b/src/managers/NavigationManager.ts index da415eb..5f9693f 100644 --- a/src/managers/NavigationManager.ts +++ b/src/managers/NavigationManager.ts @@ -47,10 +47,6 @@ export class NavigationManager { private setupEventListeners(): void { - // Initial DOM update when calendar is initialized - this.eventBus.on(CoreEvents.INITIALIZED, () => { - this.updateWeekInfo(); - }); // Listen for filter changes and apply to pre-rendered grids this.eventBus.on(CoreEvents.FILTER_CHANGED, (e: Event) => { @@ -239,29 +235,12 @@ export class NavigationManager { this.currentWeek = new Date(this.targetWeek); } - // Update week info and notify other managers - this.updateWeekInfo(); - - // Emit period change event for ScrollManager + // Emit navigation completed event this.eventBus.emit(CoreEvents.NAVIGATION_COMPLETED, { direction, - currentDate: this.currentWeek + newDate: this.currentWeek }); }); } - - private updateWeekInfo(): void { - const weekNumber = this.dateService.getWeekNumber(this.currentWeek); - const weekEnd = this.dateService.addDays(this.currentWeek, 6); - const dateRange = this.dateService.formatDateRange(this.currentWeek, weekEnd); - - // Notify other managers about week info update - DOM manipulation should happen via events - this.eventBus.emit(CoreEvents.PERIOD_INFO_UPDATE, { - weekNumber, - dateRange, - weekStart: this.currentWeek, - weekEnd - }); - } } \ No newline at end of file diff --git a/src/renderers/WeekInfoRenderer.ts b/src/renderers/WeekInfoRenderer.ts index 5ee6149..bcf516a 100644 --- a/src/renderers/WeekInfoRenderer.ts +++ b/src/renderers/WeekInfoRenderer.ts @@ -1,6 +1,7 @@ import { IEventBus } from '../types/CalendarTypes'; import { CoreEvents } from '../constants/CoreEvents'; import { EventRenderingService } from './EventRendererManager'; +import { DateService } from '../utils/DateService'; /** * WeekInfoRenderer - Handles DOM rendering for week info display @@ -11,9 +12,15 @@ import { EventRenderingService } from './EventRendererManager'; export class WeekInfoRenderer { private eventBus: IEventBus; + private dateService: DateService; - constructor(eventBus: IEventBus, eventRenderer: EventRenderingService) { + constructor( + eventBus: IEventBus, + eventRenderer: EventRenderingService, + dateService: DateService + ) { this.eventBus = eventBus; + this.dateService = dateService; this.setupEventListeners(); } @@ -23,9 +30,15 @@ export class WeekInfoRenderer { * Setup event listeners for DOM updates */ private setupEventListeners(): void { - this.eventBus.on(CoreEvents.PERIOD_INFO_UPDATE, (event: Event) => { + this.eventBus.on(CoreEvents.NAVIGATION_COMPLETED, (event: Event) => { const customEvent = event as CustomEvent; - const { weekNumber, dateRange } = customEvent.detail; + const { newDate } = customEvent.detail; + + // Calculate week number and date range from the new date + const weekNumber = this.dateService.getWeekNumber(newDate); + const weekEnd = this.dateService.addDays(newDate, 6); + const dateRange = this.dateService.formatDateRange(newDate, weekEnd); + this.updateWeekInfoInDOM(weekNumber, dateRange); }); }