Refactors calendar data management and sync infrastructure

Introduces comprehensive data management system for calendar V2
- Adds IndexedDB storage with pluggable entity services
- Implements EventBus for decoupled event communication
- Creates data seeding mechanism for initial application setup
- Establishes sync and repository abstractions for flexible data handling
This commit is contained in:
Janus C. H. Knudsen 2025-12-08 00:26:16 +01:00
parent dee977d4df
commit e581039b62
17 changed files with 1076 additions and 4 deletions

View file

@ -5,6 +5,8 @@ import { DateService } from '../core/DateService';
import { ScrollManager } from '../core/ScrollManager';
import { HeaderDrawerManager } from '../core/HeaderDrawerManager';
import { ViewConfig } from '../core/ViewConfig';
import { IndexedDBContext } from '../storage/IndexedDBContext';
import { DataSeeder } from '../workers/DataSeeder';
export class DemoApp {
private animator!: NavigationAnimator;
@ -17,10 +19,20 @@ export class DemoApp {
private timeAxisRenderer: TimeAxisRenderer,
private dateService: DateService,
private scrollManager: ScrollManager,
private headerDrawerManager: HeaderDrawerManager
private headerDrawerManager: HeaderDrawerManager,
private indexedDBContext: IndexedDBContext,
private dataSeeder: DataSeeder
) {}
init(): void {
async init(): Promise<void> {
// Initialize IndexedDB
await this.indexedDBContext.initialize();
console.log('[DemoApp] IndexedDB initialized');
// Seed data if empty
await this.dataSeeder.seedIfEmpty();
console.log('[DemoApp] Data seeding complete');
this.container = document.querySelector('swp-calendar-container') as HTMLElement;
// NavigationAnimator har DOM-dependencies - tilladt med new

View file

@ -1,5 +1,5 @@
import { createV2Container } from '../V2CompositionRoot';
import { DemoApp } from './DemoApp';
const app = createV2Container();
app.resolveType<DemoApp>().init();
const container = createV2Container();
container.resolveType<DemoApp>().init().catch(console.error);