Calendar/src/v2/V2CompositionRoot.ts

54 lines
2.1 KiB
TypeScript
Raw Normal View History

import { Container } from '@novadi/core';
import { IGroupingRenderer } from './core/IGroupingRenderer';
import { IGroupingStore } from './core/IGroupingStore';
import { DateRenderer } from './features/date/DateRenderer';
import { DateService } from './core/DateService';
import { ITimeFormatConfig } from './core/ITimeFormatConfig';
import { ResourceRenderer } from './features/resource/ResourceRenderer';
import { TeamRenderer } from './features/team/TeamRenderer';
import { RendererRegistry } from './core/RendererRegistry';
import { CalendarOrchestrator } from './core/CalendarOrchestrator';
import { TimeAxisRenderer } from './features/timeaxis/TimeAxisRenderer';
import { MockTeamStore, MockResourceStore } from './demo/MockStores';
import { DemoApp } from './demo/DemoApp';
const defaultTimeFormatConfig: ITimeFormatConfig = {
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
use24HourFormat: true,
locale: 'da-DK',
dateFormat: 'locale',
showSeconds: false
};
export function createV2Container(): Container {
const container = new Container();
const builder = container.builder();
// Config
builder.registerInstance(defaultTimeFormatConfig).as<ITimeFormatConfig>();
// Services
builder.registerType(DateService).as<DateService>();
// Renderers - registreres som IGroupingRenderer
builder.registerType(DateRenderer).as<IGroupingRenderer>();
builder.registerType(ResourceRenderer).as<IGroupingRenderer>();
builder.registerType(TeamRenderer).as<IGroupingRenderer>();
// RendererRegistry modtager IGroupingRenderer[] automatisk (array injection)
builder.registerType(RendererRegistry).as<RendererRegistry>();
// Stores - registreres som IGroupingStore
builder.registerType(MockTeamStore).as<IGroupingStore>();
builder.registerType(MockResourceStore).as<IGroupingStore>();
// CalendarOrchestrator modtager IGroupingStore[] automatisk (array injection)
builder.registerType(CalendarOrchestrator).as<CalendarOrchestrator>();
builder.registerType(TimeAxisRenderer).as<TimeAxisRenderer>();
// Demo app
builder.registerType(DemoApp).as<DemoApp>();
return builder.build();
}