Decouples view configuration from DemoApp logic by: - Introducing ViewConfigService and MockViewConfigRepository - Moving view configuration to centralized JSON data - Simplifying DemoApp rendering process Improves separation of concerns and makes view configurations more maintainable
2.3 KiB
2.3 KiB
CalendarApp Event Specification
1. Oversigt
CalendarApp initialiseres med CalendarApp.create(container).
Kommunikation sker via DOM events:
- Command events: Host → Calendar
- Status events: Calendar → Host
Settings hentes fra SettingsService (IndexedDB).
2. Command Events (Host → Calendar)
| Event | Payload | Beskrivelse |
|---|---|---|
calendar:cmd:render |
{ viewConfig } |
Render kalenderen med ViewConfig |
interface IRenderCommandPayload {
viewConfig: ViewConfig;
}
Eksempel:
document.dispatchEvent(new CustomEvent('calendar:cmd:render', {
detail: {
viewConfig: {
templateId: 'team',
groupings: [
{ type: 'team', values: ['team1', 'team2'] },
{ type: 'resource', values: ['EMP001', 'EMP002'], idProperty: 'resourceId', belongsTo: 'team.resourceIds' },
{ type: 'date', values: ['2025-12-08', '2025-12-09'], idProperty: 'date', derivedFrom: 'start' }
]
}
}
}));
3. Status Events (Calendar → Host)
| Event | Payload | Beskrivelse |
|---|---|---|
calendar:status:ready |
{} |
Calendar initialiseret |
calendar:status:rendered |
{ templateId } |
Rendering færdig |
calendar:status:error |
{ message, code } |
Fejl opstået |
interface IRenderedStatusPayload {
templateId: string;
}
interface IErrorStatusPayload {
message: string;
code: 'INVALID_PAYLOAD' | 'RENDER_FAILED';
}
4. CalendarApp
4.1 Initialisering
await CalendarApp.create(container);
4.2 Dependencies (via DI)
- CalendarOrchestrator
- SettingsService
- TimeAxisRenderer
- ScrollManager
- DragDropManager
- EdgeScrollManager
- ResizeManager
- HeaderDrawerManager
- EventBus
4.3 Ansvar
- Subscribe på
calendar:cmd:render - Emit
calendar:status:readyved init - Emit
calendar:status:renderedefter render - Emit
calendar:status:errorved fejl
5. Filer
| Fil | Beskrivelse |
|---|---|
src/v2/CalendarApp.ts |
Entry point |
src/v2/types/CommandTypes.ts |
Payload interfaces |
src/v2/constants/CommandEvents.ts |
Event konstanter |