Major refactor into type safe TS
With a risk oof rolling it all back
This commit is contained in:
parent
c08fa02c29
commit
48d1fd681c
19 changed files with 449 additions and 81 deletions
92
src/types/ManagerTypes.ts
Normal file
92
src/types/ManagerTypes.ts
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
import { IEventBus, CalendarEvent, CalendarView } from './CalendarTypes';
|
||||
import { IManager } from '../interfaces/IManager';
|
||||
|
||||
/**
|
||||
* Complete type definition for all managers returned by ManagerFactory
|
||||
*/
|
||||
export interface CalendarManagers {
|
||||
eventManager: EventManager;
|
||||
eventRenderer: EventRenderingService;
|
||||
gridManager: GridManager;
|
||||
scrollManager: ScrollManager;
|
||||
navigationManager: unknown; // Avoid interface conflicts
|
||||
viewManager: ViewManager;
|
||||
calendarManager: CalendarManager;
|
||||
dragDropManager: unknown; // Avoid interface conflicts
|
||||
allDayManager: unknown; // Avoid interface conflicts
|
||||
}
|
||||
|
||||
export interface EventManager extends IManager {
|
||||
loadData(): Promise<void>;
|
||||
getEvents(): CalendarEvent[];
|
||||
getEventsForPeriod(startDate: Date, endDate: Date): CalendarEvent[];
|
||||
getResourceData(): ResourceData | null;
|
||||
navigateToEvent(eventId: string): boolean;
|
||||
}
|
||||
|
||||
export interface EventRenderingService extends IManager {
|
||||
// EventRenderingService doesn't have a render method in current implementation
|
||||
}
|
||||
|
||||
export interface GridManager extends IManager {
|
||||
render(): Promise<void>;
|
||||
getDisplayDates(): Date[];
|
||||
setResourceData(resourceData: import('./CalendarTypes').ResourceCalendarData | null): void;
|
||||
}
|
||||
|
||||
export interface ScrollManager extends IManager {
|
||||
scrollTo(scrollTop: number): void;
|
||||
scrollToHour(hour: number): void;
|
||||
}
|
||||
|
||||
// Use a more flexible interface that matches actual implementation
|
||||
export interface NavigationManager extends IManager {
|
||||
[key: string]: unknown; // Allow any properties from actual implementation
|
||||
}
|
||||
|
||||
export interface ViewManager extends IManager {
|
||||
// ViewManager doesn't have setView in current implementation
|
||||
getCurrentView?(): CalendarView;
|
||||
}
|
||||
|
||||
export interface CalendarManager extends IManager {
|
||||
setView(view: CalendarView): void;
|
||||
setCurrentDate(date: Date): void;
|
||||
getInitializationReport(): InitializationReport;
|
||||
}
|
||||
|
||||
export interface DragDropManager extends IManager {
|
||||
// DragDropManager has different interface in current implementation
|
||||
}
|
||||
|
||||
export interface AllDayManager extends IManager {
|
||||
[key: string]: unknown; // Allow any properties from actual implementation
|
||||
}
|
||||
|
||||
export interface ResourceData {
|
||||
resources: Resource[];
|
||||
assignments?: ResourceAssignment[];
|
||||
}
|
||||
|
||||
export interface Resource {
|
||||
id: string;
|
||||
name: string;
|
||||
type?: string;
|
||||
color?: string;
|
||||
}
|
||||
|
||||
export interface ResourceAssignment {
|
||||
resourceId: string;
|
||||
eventId: string;
|
||||
}
|
||||
|
||||
export interface InitializationReport {
|
||||
initialized: boolean;
|
||||
timestamp: number;
|
||||
managers: {
|
||||
[key: string]: {
|
||||
initialized: boolean;
|
||||
error?: string;
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue