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

@ -6,12 +6,6 @@ export interface NextFunction {
render(items: IEnumerable<unknown>): void;
}
export interface RenderData {
teams?: IEnumerable<unknown>;
resources?: IEnumerable<unknown>;
dates?: IEnumerable<unknown>;
}
interface RenderLevel {
renderer: IGroupingRenderer;
items: IEnumerable<unknown>;
@ -20,10 +14,7 @@ interface RenderLevel {
export class RenderBuilder {
private levels: RenderLevel[] = [];
constructor(
private context: RenderContext,
private data: RenderData
) {}
constructor(private context: RenderContext) {}
add(renderer: IGroupingRenderer, items: IEnumerable<unknown>): this {
this.levels.push({ renderer, items });
@ -66,7 +57,7 @@ export class RenderBuilder {
return total || from(items).count();
},
render: (items) => {
level.renderer.render(items, this.data, nextChain, this.context);
level.renderer.render(items, nextChain, this.context);
}
};
}