Refactors calendar configuration and DI container setup
Removes singleton export for CalendarConfig Updates dependency injection to use type registration Adds more flexible renderer and service configuration Integrates CalendarConfig with DateService initialization
This commit is contained in:
parent
10cb3792f4
commit
fb48e410ea
3 changed files with 18 additions and 25 deletions
|
|
@ -573,6 +573,3 @@ export class CalendarConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create singleton instance
|
|
||||||
export const calendarConfig = new CalendarConfig();
|
|
||||||
31
src/index.ts
31
src/index.ts
|
|
@ -1,7 +1,7 @@
|
||||||
// Main entry point for Calendar Plantempus
|
// Main entry point for Calendar Plantempus
|
||||||
import { Container } from '@novadi/core';
|
import { Container } from '@novadi/core';
|
||||||
import { eventBus } from './core/EventBus';
|
import { eventBus } from './core/EventBus';
|
||||||
import { calendarConfig } from './core/CalendarConfig';
|
import { CalendarConfig } from './core/CalendarConfig';
|
||||||
import { URLManager } from './utils/URLManager';
|
import { URLManager } from './utils/URLManager';
|
||||||
import { IEventBus } from './types/CalendarTypes';
|
import { IEventBus } from './types/CalendarTypes';
|
||||||
|
|
||||||
|
|
@ -25,6 +25,7 @@ import { DateHeaderRenderer, type HeaderRenderer } from './renderers/HeaderRende
|
||||||
import { DateColumnRenderer, type ColumnRenderer } from './renderers/ColumnRenderer';
|
import { DateColumnRenderer, type ColumnRenderer } from './renderers/ColumnRenderer';
|
||||||
import { DateEventRenderer, type EventRendererStrategy } from './renderers/EventRenderer';
|
import { DateEventRenderer, type EventRendererStrategy } from './renderers/EventRenderer';
|
||||||
import { GridRenderer } from './renderers/GridRenderer';
|
import { GridRenderer } from './renderers/GridRenderer';
|
||||||
|
import { DateService } from './utils/DateService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle deep linking functionality after managers are initialized
|
* Handle deep linking functionality after managers are initialized
|
||||||
|
|
@ -56,7 +57,6 @@ async function handleDeepLinking(eventManager: EventManager): Promise<void> {
|
||||||
async function initializeCalendar(): Promise<void> {
|
async function initializeCalendar(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
// Use the singleton calendar configuration
|
// Use the singleton calendar configuration
|
||||||
const config = calendarConfig;
|
|
||||||
|
|
||||||
// Create NovaDI container
|
// Create NovaDI container
|
||||||
const container = new Container();
|
const container = new Container();
|
||||||
|
|
@ -65,27 +65,22 @@ async function initializeCalendar(): Promise<void> {
|
||||||
// Enable debug mode for development
|
// Enable debug mode for development
|
||||||
eventBus.setDebug(true);
|
eventBus.setDebug(true);
|
||||||
|
|
||||||
|
builder.registerType(CalendarConfig).as<CalendarConfig>().singleInstance();
|
||||||
// Bind core services as instances
|
// Bind core services as instances
|
||||||
builder.registerInstance(eventBus).as<IEventBus>();
|
builder.registerInstance(eventBus).as<IEventBus>();
|
||||||
|
|
||||||
// Determine calendar mode and bind appropriate renderers
|
// Register renderers with keyed registration based on calendar mode
|
||||||
const calendarMode = calendarConfig.getCalendarMode();
|
// Date mode renderers
|
||||||
console.log('🔧 DI Container: Calendar mode detected:', calendarMode);
|
builder.registerType(DateHeaderRenderer).as<HeaderRenderer>().keyed('date');
|
||||||
|
builder.registerType(DateColumnRenderer).as<ColumnRenderer>().keyed('date');
|
||||||
|
builder.registerType(DateEventRenderer).as<EventRendererStrategy>().keyed('date');
|
||||||
|
|
||||||
if (calendarMode === 'resource') {
|
// Resource mode renderers (using same renderers for now)
|
||||||
// Resource mode renderers
|
builder.registerType(DateHeaderRenderer).as<HeaderRenderer>().keyed('resource');
|
||||||
console.log('🔧 DI Container: Binding DateHeaderRenderer for resource mode (TEST)');
|
builder.registerType(DateColumnRenderer).as<ColumnRenderer>().keyed('resource');
|
||||||
builder.registerInstance(new DateHeaderRenderer()).as<HeaderRenderer>();
|
builder.registerType(DateEventRenderer).as<EventRendererStrategy>().keyed('resource');
|
||||||
builder.registerInstance(new DateColumnRenderer()).as<ColumnRenderer>();
|
|
||||||
builder.registerInstance(new DateEventRenderer()).as<EventRendererStrategy>();
|
|
||||||
} else {
|
|
||||||
// Date mode renderers (default)
|
|
||||||
console.log('🔧 DI Container: Binding DateHeaderRenderer for date mode');
|
|
||||||
builder.registerInstance(new DateHeaderRenderer()).as<HeaderRenderer>();
|
|
||||||
builder.registerInstance(new DateColumnRenderer()).as<ColumnRenderer>();
|
|
||||||
builder.registerInstance(new DateEventRenderer()).as<EventRendererStrategy>();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
builder.registerType(DateService).as<DateService>().singleInstance();
|
||||||
|
|
||||||
builder.registerType(EventRenderingService).as<EventRenderingService>().singleInstance();
|
builder.registerType(EventRenderingService).as<EventRenderingService>().singleInstance();
|
||||||
builder.registerType(GridRenderer).as<GridRenderer>().singleInstance();
|
builder.registerType(GridRenderer).as<GridRenderer>().singleInstance();
|
||||||
|
|
|
||||||
|
|
@ -29,12 +29,13 @@ import {
|
||||||
fromZonedTime,
|
fromZonedTime,
|
||||||
formatInTimeZone
|
formatInTimeZone
|
||||||
} from 'date-fns-tz';
|
} from 'date-fns-tz';
|
||||||
|
import { CalendarConfig } from '../core/CalendarConfig';
|
||||||
|
|
||||||
export class DateService {
|
export class DateService {
|
||||||
private timezone: string;
|
private timezone: string;
|
||||||
|
|
||||||
constructor(timezone: string = 'Europe/Copenhagen') {
|
constructor(config: CalendarConfig) {
|
||||||
this.timezone = timezone;
|
this.timezone = config.getTimezone();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================
|
// ============================================
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue