2025-07-24 22:17:38 +02:00
|
|
|
// 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 './managers/EventRenderer.js';
|
2025-07-25 00:24:15 +02:00
|
|
|
import { GridManager } from './managers/GridManager.js';
|
2025-07-29 00:52:01 +02:00
|
|
|
import { ScrollManager } from './managers/ScrollManager.js';
|
2025-08-07 00:15:44 +02:00
|
|
|
import { calendarConfig } from './core/CalendarConfig.js';
|
2025-08-09 00:31:44 +02:00
|
|
|
import { CalendarTypeFactory } from './factories/CalendarTypeFactory.js';
|
2025-07-24 22:17:38 +02:00
|
|
|
|
|
|
|
|
/**
|
2025-08-09 01:16:04 +02:00
|
|
|
* Initialize the calendar application with simple direct calls
|
2025-07-24 22:17:38 +02:00
|
|
|
*/
|
2025-08-09 00:31:44 +02:00
|
|
|
async function initializeCalendar(): Promise<void> {
|
2025-08-09 01:16:04 +02:00
|
|
|
console.log('🗓️ Initializing Calendar Plantempus with simple coordination...');
|
2025-07-24 22:17:38 +02:00
|
|
|
|
2025-08-09 00:31:44 +02:00
|
|
|
// 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;
|
2025-07-24 22:17:38 +02:00
|
|
|
|
2025-08-09 00:31:44 +02:00
|
|
|
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...');
|
2025-08-09 00:31:44 +02:00
|
|
|
CalendarTypeFactory.initialize();
|
|
|
|
|
|
2025-08-09 01:16:04 +02:00
|
|
|
// Create all managers
|
|
|
|
|
console.log('📋 Creating managers...');
|
2025-08-09 00:31:44 +02:00
|
|
|
calendarManager = new CalendarManager(eventBus, config);
|
2025-08-16 00:51:12 +02:00
|
|
|
navigationManager = new NavigationManager(eventBus); // No EventRenderer dependency
|
2025-08-09 00:31:44 +02:00
|
|
|
viewManager = new ViewManager(eventBus);
|
|
|
|
|
eventManager = new EventManager(eventBus);
|
2025-08-16 00:51:12 +02:00
|
|
|
eventRenderer = new EventRenderer(eventBus, eventManager); // Pass EventManager
|
2025-08-09 01:16:04 +02:00
|
|
|
gridManager = new GridManager();
|
|
|
|
|
scrollManager = new ScrollManager();
|
2025-08-09 00:31:44 +02:00
|
|
|
|
2025-08-09 01:16:04 +02:00
|
|
|
// Set manager references in CalendarManager
|
|
|
|
|
calendarManager.setManagers(eventManager, gridManager, eventRenderer, scrollManager);
|
2025-08-09 00:31:44 +02:00
|
|
|
|
|
|
|
|
// 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();
|
2025-08-09 00:31:44 +02:00
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
2025-07-24 22:17:38 +02:00
|
|
|
|
|
|
|
|
// Expose to window for debugging
|
|
|
|
|
(window as any).calendarDebug = {
|
|
|
|
|
eventBus,
|
|
|
|
|
calendarManager,
|
|
|
|
|
navigationManager,
|
|
|
|
|
viewManager,
|
|
|
|
|
eventManager,
|
2025-07-25 00:24:15 +02:00
|
|
|
eventRenderer,
|
2025-07-29 00:52:01 +02:00
|
|
|
gridManager,
|
|
|
|
|
scrollManager
|
2025-07-24 22:17:38 +02:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-09 00:31:44 +02:00
|
|
|
// Initialize when DOM is ready - now handles async properly
|
2025-07-24 22:17:38 +02:00
|
|
|
if (document.readyState === 'loading') {
|
2025-08-09 00:31:44 +02:00
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
|
|
|
initializeCalendar().catch(error => {
|
|
|
|
|
console.error('Failed to initialize calendar:', error);
|
|
|
|
|
});
|
|
|
|
|
});
|
2025-07-24 22:17:38 +02:00
|
|
|
} else {
|
2025-08-09 00:31:44 +02:00
|
|
|
initializeCalendar().catch(error => {
|
|
|
|
|
console.error('Failed to initialize calendar:', error);
|
|
|
|
|
});
|
2025-07-24 22:17:38 +02:00
|
|
|
}
|