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

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: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