Refactors event rendering and display
Improves event rendering by introducing dedicated event renderers and streamlining event display logic. - Adds a base event renderer and specialized date and resource-based renderers to handle event display logic. - Renders all-day events within a dedicated container in the calendar header. - Removes the direct filtering of all-day events from the `GridManager`. - Fixes an issue where the 'Summer Festival' event started on the wrong date. The changes enhance the flexibility and maintainability of the calendar, provide dedicated containers and styling for allday events and fix date issues related to certain events
This commit is contained in:
parent
25522bfe17
commit
9c65143df2
11 changed files with 190 additions and 121 deletions
|
|
@ -3,7 +3,6 @@ import { ResourceCalendarData } from '../types/CalendarTypes';
|
|||
import { CalendarTypeFactory } from '../factories/CalendarTypeFactory';
|
||||
import { HeaderRenderContext } from './HeaderRenderer';
|
||||
import { ColumnRenderContext } from './ColumnRenderer';
|
||||
import { AllDayEvent } from '../types/EventTypes';
|
||||
/**
|
||||
* GridRenderer - Handles DOM rendering for the calendar grid
|
||||
* Separated from GridManager to follow Single Responsibility Principle
|
||||
|
|
@ -21,8 +20,7 @@ export class GridRenderer {
|
|||
public renderGrid(
|
||||
grid: HTMLElement,
|
||||
currentWeek: Date,
|
||||
resourceData: ResourceCalendarData | null,
|
||||
allDayEvents: AllDayEvent[]
|
||||
resourceData: ResourceCalendarData | null
|
||||
): void {
|
||||
console.log('GridRenderer: renderGrid called', {
|
||||
hasGrid: !!grid,
|
||||
|
|
@ -41,11 +39,11 @@ export class GridRenderer {
|
|||
// Create POC structure: header-spacer + time-axis + grid-container
|
||||
this.createHeaderSpacer(grid);
|
||||
this.createTimeAxis(grid);
|
||||
this.createGridContainer(grid, currentWeek, resourceData, allDayEvents);
|
||||
this.createGridContainer(grid, currentWeek, resourceData);
|
||||
} else {
|
||||
console.log('GridRenderer: Re-render - updating existing structure');
|
||||
// Just update the calendar header for all-day events
|
||||
this.updateCalendarHeader(grid, currentWeek, resourceData, allDayEvents);
|
||||
this.updateCalendarHeader(grid, currentWeek, resourceData);
|
||||
}
|
||||
|
||||
console.log('GridRenderer: Grid rendered successfully with POC structure');
|
||||
|
|
@ -89,14 +87,13 @@ export class GridRenderer {
|
|||
private createGridContainer(
|
||||
grid: HTMLElement,
|
||||
currentWeek: Date,
|
||||
resourceData: ResourceCalendarData | null,
|
||||
allDayEvents: AllDayEvent[]
|
||||
resourceData: ResourceCalendarData | null
|
||||
): void {
|
||||
const gridContainer = document.createElement('swp-grid-container');
|
||||
|
||||
// Create calendar header using Strategy Pattern
|
||||
const calendarHeader = document.createElement('swp-calendar-header');
|
||||
this.renderCalendarHeader(calendarHeader, currentWeek, resourceData, allDayEvents);
|
||||
this.renderCalendarHeader(calendarHeader, currentWeek, resourceData);
|
||||
gridContainer.appendChild(calendarHeader);
|
||||
|
||||
// Create scrollable content
|
||||
|
|
@ -124,8 +121,7 @@ export class GridRenderer {
|
|||
private renderCalendarHeader(
|
||||
calendarHeader: HTMLElement,
|
||||
currentWeek: Date,
|
||||
resourceData: ResourceCalendarData | null,
|
||||
allDayEvents: AllDayEvent[]
|
||||
resourceData: ResourceCalendarData | null
|
||||
): void {
|
||||
const calendarType = this.config.getCalendarMode();
|
||||
const headerRenderer = CalendarTypeFactory.getHeaderRenderer(calendarType);
|
||||
|
|
@ -133,7 +129,6 @@ export class GridRenderer {
|
|||
const context: HeaderRenderContext = {
|
||||
currentWeek: currentWeek,
|
||||
config: this.config,
|
||||
allDayEvents: allDayEvents,
|
||||
resourceData: resourceData
|
||||
};
|
||||
|
||||
|
|
@ -167,8 +162,7 @@ export class GridRenderer {
|
|||
private updateCalendarHeader(
|
||||
grid: HTMLElement,
|
||||
currentWeek: Date,
|
||||
resourceData: ResourceCalendarData | null,
|
||||
allDayEvents: AllDayEvent[]
|
||||
resourceData: ResourceCalendarData | null
|
||||
): void {
|
||||
const calendarHeader = grid.querySelector('swp-calendar-header');
|
||||
if (!calendarHeader) return;
|
||||
|
|
@ -177,6 +171,6 @@ export class GridRenderer {
|
|||
calendarHeader.innerHTML = '';
|
||||
|
||||
// Re-render headers using Strategy Pattern
|
||||
this.renderCalendarHeader(calendarHeader as HTMLElement, currentWeek, resourceData, allDayEvents);
|
||||
this.renderCalendarHeader(calendarHeader as HTMLElement, currentWeek, resourceData);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue