From ee4b9b3707ef6d6a8fbe78fe47529c71fceed0db Mon Sep 17 00:00:00 2001 From: "Janus C. H. Knudsen" Date: Tue, 14 Oct 2025 18:10:51 +0200 Subject: [PATCH] Refactors event emission for date and workweek changes Moves event emission responsibilities for date and workweek changes to the calling components. This allows for consolidated updates and optimized event handling, avoiding redundant emissions and ensuring that events are triggered with the correct payload. --- src/core/CalendarConfig.ts | 15 +++------------ src/managers/GridManager.ts | 14 -------------- src/managers/ViewManager.ts | 14 +++++++++----- 3 files changed, 12 insertions(+), 31 deletions(-) diff --git a/src/core/CalendarConfig.ts b/src/core/CalendarConfig.ts index 20d1b31..76e10c7 100644 --- a/src/core/CalendarConfig.ts +++ b/src/core/CalendarConfig.ts @@ -420,14 +420,10 @@ export class CalendarConfig { /** * Set selected date + * Note: Does not emit events - caller is responsible for event emission */ setSelectedDate(date: Date): void { this.selectedDate = date; - - // Emit date change event - eventBus.emit(CoreEvents.DATE_CHANGED, { - date: date - }); } /** @@ -478,20 +474,15 @@ export class CalendarConfig { /** * Set work week preset + * Note: Does not emit events - caller is responsible for event emission */ setWorkWeek(workWeekId: string): void { const presets = this.getWorkWeekPresets(); if (presets[workWeekId]) { this.currentWorkWeek = workWeekId; - + // Update dateViewSettings to match work week this.dateViewSettings.weekDays = presets[workWeekId].totalDays; - - // Emit work week change event - eventBus.emit(CoreEvents.WORKWEEK_CHANGED, { - workWeekId: workWeekId, - settings: presets[workWeekId] - }); } } diff --git a/src/managers/GridManager.ts b/src/managers/GridManager.ts index 435b9c5..30ffe92 100644 --- a/src/managers/GridManager.ts +++ b/src/managers/GridManager.ts @@ -207,20 +207,6 @@ export class GridManager { this.render(); } - /** - * Navigate to today - */ - public navigateToToday(): void { - this.currentDate = new Date(); - - eventBus.emit(CoreEvents.DATE_CHANGED, { - newDate: this.currentDate, - periodLabel: this.getCurrentPeriodLabel() - }); - - this.render(); - } - /** * Get current view's display dates */ diff --git a/src/managers/ViewManager.ts b/src/managers/ViewManager.ts index 489cfae..21cf563 100644 --- a/src/managers/ViewManager.ts +++ b/src/managers/ViewManager.ts @@ -139,14 +139,18 @@ export class ViewManager { * Optimized workweek change with consolidated updates */ private changeWorkweek(workweekId: string): void { - // Update the calendar config + // Update the calendar config (does not emit events) calendarConfig.setWorkWeek(workweekId); - + // Update button states using cached elements this.updateAllButtons(); - - // Trigger a workweek change to apply the new workweek - this.eventBus.emit(CoreEvents.WORKWEEK_CHANGED); + + // Emit workweek change event with full payload + const settings = calendarConfig.getWorkWeekSettings(); + this.eventBus.emit(CoreEvents.WORKWEEK_CHANGED, { + workWeekId: workweekId, + settings: settings + }); } /**