Refactors rendering pipeline with flexible data handling

Removes hardcoded data from render context, allowing more dynamic renderer implementation

Changes include:
- Decoupling data retrieval from render context
- Simplifying renderer interface
- Supporting more flexible data traversal strategies

Prepares for more modular and adaptable rendering approach
This commit is contained in:
Janus C. H. Knudsen 2025-12-09 15:24:19 +01:00
parent a3a1b9a421
commit c16e432b29
5 changed files with 517 additions and 22 deletions

View file

@ -2,7 +2,7 @@ import { from } from 'ts-linq-light';
import { ViewConfig } from './ViewConfig';
import { IGroupingRenderer, RenderContext } from './IGroupingRenderer';
import { IGroupingStore } from './IGroupingStore';
import { RenderBuilder, RenderData } from './RenderBuilder';
import { RenderBuilder } from './RenderBuilder';
import { EventRenderer } from '../features/event/EventRenderer';
export class CalendarOrchestrator {
@ -37,15 +37,8 @@ export class CalendarOrchestrator {
const types = from(viewConfig.groupings).select(g => g.type).toArray();
headerContainer.dataset.levels = types.join(' ');
// Hent alt data
const data: RenderData = {
teams: this.getItems('team', viewConfig),
resources: this.getItems('resource', viewConfig),
dates: this.getItems('date', viewConfig)
};
// Byg renderer chain
const builder = new RenderBuilder(context, data);
const builder = new RenderBuilder(context);
for (const grouping of viewConfig.groupings) {
const renderer = this.getRenderer(grouping.type);