Calendar/src/index.ts

89 lines
3.2 KiB
TypeScript
Raw Normal View History

// Main entry point for Calendar Plantempus
import { eventBus } from './core/EventBus.js';
import { CalendarManager } from './managers/CalendarManager.js';
import { NavigationManager } from './managers/NavigationManager.js';
import { ViewManager } from './managers/ViewManager.js';
import { EventManager } from './managers/EventManager.js';
import { EventRenderer } from './renderers/EventRendererManager.js';
import { GridManager } from './managers/GridManager.js';
import { ScrollManager } from './managers/ScrollManager.js';
2025-08-07 00:15:44 +02:00
import { calendarConfig } from './core/CalendarConfig.js';
import { CalendarTypeFactory } from './factories/CalendarTypeFactory.js';
/**
2025-08-09 01:16:04 +02:00
* Initialize the calendar application with simple direct calls
*/
async function initializeCalendar(): Promise<void> {
2025-08-09 01:16:04 +02:00
console.log('🗓️ Initializing Calendar Plantempus with simple coordination...');
// Declare managers outside try block for global access
let calendarManager: CalendarManager;
let navigationManager: NavigationManager;
let viewManager: ViewManager;
let eventManager: EventManager;
let eventRenderer: EventRenderer;
let gridManager: GridManager;
let scrollManager: ScrollManager;
try {
// Use the singleton calendar configuration
const config = calendarConfig;
// Initialize the CalendarTypeFactory before creating managers
2025-08-09 01:16:04 +02:00
console.log('🏭 Initializing CalendarTypeFactory...');
CalendarTypeFactory.initialize();
2025-08-09 01:16:04 +02:00
// Create all managers
console.log('📋 Creating managers...');
calendarManager = new CalendarManager(eventBus, config);
navigationManager = new NavigationManager(eventBus); // No EventRenderer dependency
viewManager = new ViewManager(eventBus);
eventManager = new EventManager(eventBus);
eventRenderer = new EventRenderer(eventBus, eventManager); // Pass EventManager
2025-08-09 01:16:04 +02:00
gridManager = new GridManager();
scrollManager = new ScrollManager();
2025-08-09 01:16:04 +02:00
// Set manager references in CalendarManager
calendarManager.setManagers(eventManager, gridManager, eventRenderer, scrollManager);
// Enable debug mode for development
eventBus.setDebug(true);
2025-08-09 01:16:04 +02:00
// Initialize using simple direct calls
console.log('🚀 Starting simple initialization...');
await calendarManager.initialize();
console.log('🎊 Calendar Plantempus initialized successfully!');
console.log('📊 Initialization Report:', calendarManager.getInitializationReport());
} catch (error) {
console.error('💥 Calendar initialization failed:', error);
// Could implement fallback or retry logic here
throw error;
}
// Expose to window for debugging
(window as any).calendarDebug = {
eventBus,
calendarManager,
navigationManager,
viewManager,
eventManager,
eventRenderer,
gridManager,
scrollManager
};
}
// Initialize when DOM is ready - now handles async properly
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => {
initializeCalendar().catch(error => {
console.error('Failed to initialize calendar:', error);
});
});
} else {
initializeCalendar().catch(error => {
console.error('Failed to initialize calendar:', error);
});
}