49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
|
|
import { CalendarEvent } from '../types/CalendarTypes';
|
||
|
|
/**
|
||
|
|
* Base interface for all managers
|
||
|
|
*/
|
||
|
|
export interface IManager {
|
||
|
|
/**
|
||
|
|
* Initialize the manager
|
||
|
|
*/
|
||
|
|
initialize?(): Promise<void> | void;
|
||
|
|
/**
|
||
|
|
* Refresh the manager's state
|
||
|
|
*/
|
||
|
|
refresh?(): void;
|
||
|
|
/**
|
||
|
|
* Destroy the manager and clean up resources
|
||
|
|
*/
|
||
|
|
destroy?(): void;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Interface for managers that handle events
|
||
|
|
*/
|
||
|
|
export interface IEventManager extends IManager {
|
||
|
|
loadData(): Promise<void>;
|
||
|
|
getEvents(): CalendarEvent[];
|
||
|
|
getEventsForPeriod(startDate: Date, endDate: Date): CalendarEvent[];
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Interface for managers that handle rendering
|
||
|
|
*/
|
||
|
|
export interface IRenderingManager extends IManager {
|
||
|
|
render(): Promise<void> | void;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Interface for managers that handle navigation
|
||
|
|
*/
|
||
|
|
export interface INavigationManager extends IManager {
|
||
|
|
getCurrentWeek(): Date;
|
||
|
|
navigateToToday(): void;
|
||
|
|
navigateToNextWeek(): void;
|
||
|
|
navigateToPreviousWeek(): void;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Interface for managers that handle scrolling
|
||
|
|
*/
|
||
|
|
export interface IScrollManager extends IManager {
|
||
|
|
scrollTo(scrollTop: number): void;
|
||
|
|
scrollToHour(hour: number): void;
|
||
|
|
}
|