Refactor workweek preset change handling
Simplifies workweek change event propagation across managers Removes redundant grid rerendering logic and focuses on clean event communication Prepares infrastructure for more flexible workweek configuration updates Relates to debug-gridstyle branch
This commit is contained in:
parent
1fa7aa26e5
commit
024ad45bfd
5 changed files with 300 additions and 39 deletions
|
|
@ -111,7 +111,7 @@ export class CalendarManager {
|
|||
|
||||
/**
|
||||
* Setup event listeners for at håndtere events fra andre managers
|
||||
*/
|
||||
*/
|
||||
private setupEventListeners(): void {
|
||||
// Listen for workweek changes only
|
||||
this.eventBus.on(CoreEvents.WORKWEEK_CHANGED, (event: Event) => {
|
||||
|
|
@ -185,22 +185,6 @@ export class CalendarManager {
|
|||
*/
|
||||
private handleWorkweekChange(): void {
|
||||
|
||||
// Force a complete grid rebuild by clearing existing structure
|
||||
const container = document.querySelector('swp-calendar-container');
|
||||
if (container) {
|
||||
container.innerHTML = ''; // Clear everything to force full rebuild
|
||||
}
|
||||
|
||||
// Re-render the grid with new workweek settings (will now rebuild everything)
|
||||
this.gridManager.render();
|
||||
|
||||
// Re-initialize scroll manager after grid rebuild
|
||||
this.scrollManager.initialize();
|
||||
|
||||
// Re-render events in the new grid structure
|
||||
this.rerenderEvents();
|
||||
|
||||
// Notify HeaderManager with correct current date after grid rebuild
|
||||
this.eventBus.emit('workweek:header-update', {
|
||||
currentDate: this.currentDate,
|
||||
currentView: this.currentView,
|
||||
|
|
@ -208,26 +192,4 @@ export class CalendarManager {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-render events after grid structure changes
|
||||
*/
|
||||
private async rerenderEvents(): Promise<void> {
|
||||
|
||||
// Get current period data to determine date range
|
||||
const periodData = this.calculateCurrentPeriod();
|
||||
|
||||
// Find the grid container to render events in
|
||||
const container = document.querySelector('swp-calendar-container');
|
||||
if (!container) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Trigger event rendering for the current date range using correct method
|
||||
await this.eventRenderer.renderEvents({
|
||||
container: container as HTMLElement,
|
||||
startDate: new Date(periodData.start),
|
||||
endDate: new Date(periodData.end)
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,6 +83,9 @@ export class HeaderManager {
|
|||
});
|
||||
|
||||
// Listen for workweek header updates after grid rebuild
|
||||
//currentDate: this.currentDate,
|
||||
//currentView: this.currentView,
|
||||
//workweek: this.config.currentWorkWeek
|
||||
eventBus.on('workweek:header-update', (event) => {
|
||||
const { currentDate } = (event as CustomEvent).detail;
|
||||
this.updateHeader(currentDate);
|
||||
|
|
|
|||
|
|
@ -102,6 +102,11 @@ export class ViewManager {
|
|||
this.updateAllButtons();
|
||||
|
||||
const settings = this.config.getWorkWeekSettings();
|
||||
|
||||
//currentDate: this.currentDate,
|
||||
//currentView: this.currentView,
|
||||
//workweek: this.config.currentWorkWeek
|
||||
|
||||
this.eventBus.emit(CoreEvents.WORKWEEK_CHANGED, {
|
||||
workWeekId: workweekId,
|
||||
settings: settings
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue