Renaming part 1
This commit is contained in:
parent
36ac8d18ab
commit
29811fd4b5
20 changed files with 1424 additions and 582 deletions
107
src/factories/CalendarTypeFactory.ts
Normal file
107
src/factories/CalendarTypeFactory.ts
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
// Factory for creating calendar type-specific renderers
|
||||
|
||||
import { CalendarType } from '../types/CalendarTypes';
|
||||
import { HeaderRenderer, DateHeaderRenderer, ResourceHeaderRenderer } from '../renderers/HeaderRenderer';
|
||||
import { ColumnRenderer, DateColumnRenderer, ResourceColumnRenderer } from '../renderers/ColumnRenderer';
|
||||
import { EventRendererStrategy, DateEventRenderer, ResourceEventRenderer } from '../renderers/EventRenderer';
|
||||
|
||||
/**
|
||||
* Renderer configuration for a calendar type
|
||||
*/
|
||||
export interface RendererConfig {
|
||||
headerRenderer: HeaderRenderer;
|
||||
columnRenderer: ColumnRenderer;
|
||||
eventRenderer: EventRendererStrategy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory for creating calendar type-specific renderers
|
||||
*/
|
||||
export class CalendarTypeFactory {
|
||||
private static renderers: Map<CalendarType, RendererConfig> = new Map();
|
||||
|
||||
/**
|
||||
* Initialize the factory with default renderers
|
||||
*/
|
||||
static initialize(): void {
|
||||
// Register default renderers
|
||||
this.registerRenderers('date', {
|
||||
headerRenderer: new DateHeaderRenderer(),
|
||||
columnRenderer: new DateColumnRenderer(),
|
||||
eventRenderer: new DateEventRenderer()
|
||||
});
|
||||
|
||||
this.registerRenderers('resource', {
|
||||
headerRenderer: new ResourceHeaderRenderer(),
|
||||
columnRenderer: new ResourceColumnRenderer(),
|
||||
eventRenderer: new ResourceEventRenderer()
|
||||
});
|
||||
|
||||
console.log('CalendarTypeFactory: Initialized with default renderers', Array.from(this.renderers.keys()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register renderers for a calendar type
|
||||
*/
|
||||
static registerRenderers(type: CalendarType, config: RendererConfig): void {
|
||||
this.renderers.set(type, config);
|
||||
console.log(`CalendarTypeFactory: Registered renderers for type '${type}'`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get renderers for a calendar type
|
||||
*/
|
||||
static getRenderers(type: CalendarType): RendererConfig {
|
||||
const renderers = this.renderers.get(type);
|
||||
|
||||
if (!renderers) {
|
||||
console.warn(`CalendarTypeFactory: No renderers found for type '${type}', falling back to 'date'`);
|
||||
return this.renderers.get('date')!;
|
||||
}
|
||||
|
||||
return renderers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get header renderer for a calendar type
|
||||
*/
|
||||
static getHeaderRenderer(type: CalendarType): HeaderRenderer {
|
||||
return this.getRenderers(type).headerRenderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get column renderer for a calendar type
|
||||
*/
|
||||
static getColumnRenderer(type: CalendarType): ColumnRenderer {
|
||||
return this.getRenderers(type).columnRenderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get event renderer for a calendar type
|
||||
*/
|
||||
static getEventRenderer(type: CalendarType): EventRendererStrategy {
|
||||
return this.getRenderers(type).eventRenderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a calendar type is supported
|
||||
*/
|
||||
static isSupported(type: CalendarType): boolean {
|
||||
return this.renderers.has(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all supported calendar types
|
||||
*/
|
||||
static getSupportedTypes(): CalendarType[] {
|
||||
return Array.from(this.renderers.keys());
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all registered renderers (useful for testing)
|
||||
*/
|
||||
static clear(): void {
|
||||
this.renderers.clear();
|
||||
console.log('CalendarTypeFactory: All renderers cleared');
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue