Refactors calendar architecture for month view
Prepares the calendar component for month view implementation by introducing a strategy pattern for view management, splitting configuration settings, and consolidating events into a core set. It also removes dead code and enforces type safety, improving overall code quality and maintainability. Addresses critical issues identified in the code review, laying the groundwork for efficient feature addition.
This commit is contained in:
parent
7d513600d8
commit
3ddc6352f2
17 changed files with 1347 additions and 428 deletions
84
src/constants/CoreEvents.ts
Normal file
84
src/constants/CoreEvents.ts
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
/**
|
||||
* CoreEvents - Consolidated essential events for the calendar
|
||||
* Reduces complexity from 102+ events to ~20 core events
|
||||
*/
|
||||
export const CoreEvents = {
|
||||
// Lifecycle events (3)
|
||||
INITIALIZED: 'core:initialized',
|
||||
READY: 'core:ready',
|
||||
DESTROYED: 'core:destroyed',
|
||||
|
||||
// View events (3)
|
||||
VIEW_CHANGED: 'view:changed',
|
||||
VIEW_RENDERED: 'view:rendered',
|
||||
WORKWEEK_CHANGED: 'workweek:changed',
|
||||
|
||||
// Navigation events (3)
|
||||
DATE_CHANGED: 'nav:date-changed',
|
||||
PERIOD_CHANGED: 'nav:period-changed',
|
||||
WEEK_CHANGED: 'nav:week-changed',
|
||||
|
||||
// Data events (4)
|
||||
DATA_LOADING: 'data:loading',
|
||||
DATA_LOADED: 'data:loaded',
|
||||
DATA_ERROR: 'data:error',
|
||||
EVENTS_FILTERED: 'data:events-filtered',
|
||||
|
||||
// Grid events (3)
|
||||
GRID_RENDERED: 'grid:rendered',
|
||||
GRID_CLICKED: 'grid:clicked',
|
||||
CELL_SELECTED: 'grid:cell-selected',
|
||||
|
||||
// Event management (4)
|
||||
EVENT_CREATED: 'event:created',
|
||||
EVENT_UPDATED: 'event:updated',
|
||||
EVENT_DELETED: 'event:deleted',
|
||||
EVENT_SELECTED: 'event:selected',
|
||||
|
||||
// System events (2)
|
||||
ERROR: 'system:error',
|
||||
REFRESH_REQUESTED: 'system:refresh'
|
||||
} as const;
|
||||
|
||||
// Type for the event values
|
||||
export type CoreEventType = typeof CoreEvents[keyof typeof CoreEvents];
|
||||
|
||||
/**
|
||||
* Migration map from old EventTypes to CoreEvents
|
||||
* This helps transition existing code gradually
|
||||
*/
|
||||
export const EVENT_MIGRATION_MAP: Record<string, string> = {
|
||||
// Lifecycle
|
||||
'calendar:initialized': CoreEvents.INITIALIZED,
|
||||
'calendar:ready': CoreEvents.READY,
|
||||
|
||||
// View
|
||||
'calendar:viewchanged': CoreEvents.VIEW_CHANGED,
|
||||
'calendar:viewrendered': CoreEvents.VIEW_RENDERED,
|
||||
'calendar:workweekchanged': CoreEvents.WORKWEEK_CHANGED,
|
||||
|
||||
// Navigation
|
||||
'calendar:datechanged': CoreEvents.DATE_CHANGED,
|
||||
'calendar:periodchange': CoreEvents.PERIOD_CHANGED,
|
||||
'calendar:weekchanged': CoreEvents.WEEK_CHANGED,
|
||||
|
||||
// Data
|
||||
'calendar:datafetchstart': CoreEvents.DATA_LOADING,
|
||||
'calendar:datafetchsuccess': CoreEvents.DATA_LOADED,
|
||||
'calendar:datafetcherror': CoreEvents.DATA_ERROR,
|
||||
'calendar:eventsloaded': CoreEvents.DATA_LOADED,
|
||||
|
||||
// Grid
|
||||
'calendar:gridrendered': CoreEvents.GRID_RENDERED,
|
||||
'calendar:gridclick': CoreEvents.GRID_CLICKED,
|
||||
|
||||
// Event management
|
||||
'calendar:eventcreated': CoreEvents.EVENT_CREATED,
|
||||
'calendar:eventupdated': CoreEvents.EVENT_UPDATED,
|
||||
'calendar:eventdeleted': CoreEvents.EVENT_DELETED,
|
||||
'calendar:eventselected': CoreEvents.EVENT_SELECTED,
|
||||
|
||||
// System
|
||||
'calendar:error': CoreEvents.ERROR,
|
||||
'calendar:refreshrequested': CoreEvents.REFRESH_REQUESTED
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue