diff --git a/src/core/CalendarConfig.ts b/src/core/CalendarConfig.ts index 76e10c7..fd07177 100644 --- a/src/core/CalendarConfig.ts +++ b/src/core/CalendarConfig.ts @@ -572,7 +572,4 @@ export class CalendarConfig { return this.timeFormatConfig.dateFormat; } -} - -// Create singleton instance -export const calendarConfig = new CalendarConfig(); \ No newline at end of file +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 4f8a197..5f3a9fe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ // Main entry point for Calendar Plantempus import { Container } from '@novadi/core'; import { eventBus } from './core/EventBus'; -import { calendarConfig } from './core/CalendarConfig'; +import { CalendarConfig } from './core/CalendarConfig'; import { URLManager } from './utils/URLManager'; import { IEventBus } from './types/CalendarTypes'; @@ -25,6 +25,7 @@ import { DateHeaderRenderer, type HeaderRenderer } from './renderers/HeaderRende import { DateColumnRenderer, type ColumnRenderer } from './renderers/ColumnRenderer'; import { DateEventRenderer, type EventRendererStrategy } from './renderers/EventRenderer'; import { GridRenderer } from './renderers/GridRenderer'; +import { DateService } from './utils/DateService'; /** * Handle deep linking functionality after managers are initialized @@ -56,7 +57,6 @@ async function handleDeepLinking(eventManager: EventManager): Promise { async function initializeCalendar(): Promise { try { // Use the singleton calendar configuration - const config = calendarConfig; // Create NovaDI container const container = new Container(); @@ -65,28 +65,23 @@ async function initializeCalendar(): Promise { // Enable debug mode for development eventBus.setDebug(true); + builder.registerType(CalendarConfig).as().singleInstance(); // Bind core services as instances builder.registerInstance(eventBus).as(); - // Determine calendar mode and bind appropriate renderers - const calendarMode = calendarConfig.getCalendarMode(); - console.log('🔧 DI Container: Calendar mode detected:', calendarMode); - - if (calendarMode === 'resource') { - // Resource mode renderers - console.log('🔧 DI Container: Binding DateHeaderRenderer for resource mode (TEST)'); - builder.registerInstance(new DateHeaderRenderer()).as(); - builder.registerInstance(new DateColumnRenderer()).as(); - builder.registerInstance(new DateEventRenderer()).as(); - } else { - // Date mode renderers (default) - console.log('🔧 DI Container: Binding DateHeaderRenderer for date mode'); - builder.registerInstance(new DateHeaderRenderer()).as(); - builder.registerInstance(new DateColumnRenderer()).as(); - builder.registerInstance(new DateEventRenderer()).as(); - } + // Register renderers with keyed registration based on calendar mode + // Date mode renderers + builder.registerType(DateHeaderRenderer).as().keyed('date'); + builder.registerType(DateColumnRenderer).as().keyed('date'); + builder.registerType(DateEventRenderer).as().keyed('date'); + // Resource mode renderers (using same renderers for now) + builder.registerType(DateHeaderRenderer).as().keyed('resource'); + builder.registerType(DateColumnRenderer).as().keyed('resource'); + builder.registerType(DateEventRenderer).as().keyed('resource'); + builder.registerType(DateService).as().singleInstance(); + builder.registerType(EventRenderingService).as().singleInstance(); builder.registerType(GridRenderer).as().singleInstance(); builder.registerType(GridManager).as().singleInstance(); diff --git a/src/utils/DateService.ts b/src/utils/DateService.ts index cdd6e2b..5059955 100644 --- a/src/utils/DateService.ts +++ b/src/utils/DateService.ts @@ -29,12 +29,13 @@ import { fromZonedTime, formatInTimeZone } from 'date-fns-tz'; +import { CalendarConfig } from '../core/CalendarConfig'; export class DateService { private timezone: string; - constructor(timezone: string = 'Europe/Copenhagen') { - this.timezone = timezone; + constructor(config: CalendarConfig) { + this.timezone = config.getTimezone(); } // ============================================