Refactors renderer interfaces and implementations
Converts renderer interfaces to use 'I' prefix for better type clarity Adds async support for rendering pipeline Updates resource rendering to use ResourceService Removes hardcoded resource data Improves type safety and flexibility of rendering system
This commit is contained in:
parent
7f6279a6f3
commit
400de8c9d5
10 changed files with 46 additions and 47 deletions
|
|
@ -1,11 +1,11 @@
|
|||
import { Renderer, RenderContext } from './IGroupingRenderer';
|
||||
import { IRenderer, IRenderContext } from './IGroupingRenderer';
|
||||
import { buildPipeline } from './RenderBuilder';
|
||||
import { EventRenderer } from '../features/event/EventRenderer';
|
||||
import { ViewConfig } from './ViewConfig';
|
||||
|
||||
export class CalendarOrchestrator {
|
||||
constructor(
|
||||
private allRenderers: Renderer[],
|
||||
private allRenderers: IRenderer[],
|
||||
private eventRenderer: EventRenderer
|
||||
) {}
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ export class CalendarOrchestrator {
|
|||
filter[grouping.type] = grouping.values;
|
||||
}
|
||||
|
||||
const context: RenderContext = { headerContainer, columnContainer, filter };
|
||||
const context: IRenderContext = { headerContainer, columnContainer, filter };
|
||||
|
||||
// Clear
|
||||
headerContainer.innerHTML = '';
|
||||
|
|
@ -41,18 +41,18 @@ export class CalendarOrchestrator {
|
|||
|
||||
// Byg og kør pipeline
|
||||
const pipeline = buildPipeline(activeRenderers);
|
||||
pipeline.run(context);
|
||||
await pipeline.run(context);
|
||||
|
||||
// Render events med hele filter (date + resource)
|
||||
await this.eventRenderer.render(container, filter);
|
||||
}
|
||||
|
||||
private selectRenderers(viewConfig: ViewConfig): Renderer[] {
|
||||
private selectRenderers(viewConfig: ViewConfig): IRenderer[] {
|
||||
const types = viewConfig.groupings.map(g => g.type);
|
||||
// Sortér renderers i samme rækkefølge som viewConfig.groupings
|
||||
return types
|
||||
.map(type => this.allRenderers.find(r => r.type === type))
|
||||
.filter((r): r is Renderer => r !== undefined);
|
||||
.filter((r): r is IRenderer => r !== undefined);
|
||||
}
|
||||
|
||||
private calculateTotalColumns(viewConfig: ViewConfig): number {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue