Calendar/docs/calendar-command-system-spec.md
Janus C. H. Knudsen 7f9d0129bf Refactors calendar view configuration management
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
2025-12-16 17:13:27 +01:00

98 lines
2.3 KiB
Markdown

# 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 |
```typescript
interface IRenderCommandPayload {
viewConfig: ViewConfig;
}
```
**Eksempel:**
```typescript
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 |
```typescript
interface IRenderedStatusPayload {
templateId: string;
}
interface IErrorStatusPayload {
message: string;
code: 'INVALID_PAYLOAD' | 'RENDER_FAILED';
}
```
---
## 4. CalendarApp
### 4.1 Initialisering
```typescript
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:ready` ved init
- Emit `calendar:status:rendered` efter render
- Emit `calendar:status:error` ved 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 |