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
33
src/index.ts
33
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<void> {
|
|||
async function initializeCalendar(): Promise<void> {
|
||||
try {
|
||||
// Use the singleton calendar configuration
|
||||
const config = calendarConfig;
|
||||
|
||||
// Create NovaDI container
|
||||
const container = new Container();
|
||||
|
|
@ -65,28 +65,23 @@ async function initializeCalendar(): Promise<void> {
|
|||
// Enable debug mode for development
|
||||
eventBus.setDebug(true);
|
||||
|
||||
builder.registerType(CalendarConfig).as<CalendarConfig>().singleInstance();
|
||||
// Bind core services as instances
|
||||
builder.registerInstance(eventBus).as<IEventBus>();
|
||||
|
||||
// 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<HeaderRenderer>();
|
||||
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>();
|
||||
}
|
||||
// Register renderers with keyed registration based on calendar mode
|
||||
// Date mode renderers
|
||||
builder.registerType(DateHeaderRenderer).as<HeaderRenderer>().keyed('date');
|
||||
builder.registerType(DateColumnRenderer).as<ColumnRenderer>().keyed('date');
|
||||
builder.registerType(DateEventRenderer).as<EventRendererStrategy>().keyed('date');
|
||||
|
||||
// Resource mode renderers (using same renderers for now)
|
||||
builder.registerType(DateHeaderRenderer).as<HeaderRenderer>().keyed('resource');
|
||||
builder.registerType(DateColumnRenderer).as<ColumnRenderer>().keyed('resource');
|
||||
builder.registerType(DateEventRenderer).as<EventRendererStrategy>().keyed('resource');
|
||||
|
||||
builder.registerType(DateService).as<DateService>().singleInstance();
|
||||
|
||||
builder.registerType(EventRenderingService).as<EventRenderingService>().singleInstance();
|
||||
builder.registerType(GridRenderer).as<GridRenderer>().singleInstance();
|
||||
builder.registerType(GridManager).as<GridManager>().singleInstance();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue