54 lines
2.1 KiB
TypeScript
54 lines
2.1 KiB
TypeScript
|
|
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();
|
||
|
|
}
|