wip
This commit is contained in:
parent
c16e432b29
commit
2ec4b93fa5
9 changed files with 187 additions and 249 deletions
|
|
@ -1,37 +1,37 @@
|
|||
import { from, IEnumerable } from 'ts-linq-light';
|
||||
import { IGroupingRenderer, RenderContext } from '../../core/IGroupingRenderer';
|
||||
import { NextFunction, RenderData } from '../../core/RenderBuilder';
|
||||
import { Renderer, RenderContext } from '../../core/IGroupingRenderer';
|
||||
|
||||
interface Resource {
|
||||
id: string;
|
||||
name?: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
export class ResourceRenderer implements IGroupingRenderer<Resource> {
|
||||
export class ResourceRenderer implements Renderer {
|
||||
readonly type = 'resource';
|
||||
next: Renderer | null = null;
|
||||
|
||||
render(
|
||||
resources: IEnumerable<Resource>,
|
||||
data: RenderData,
|
||||
next: NextFunction,
|
||||
context: RenderContext
|
||||
): void {
|
||||
const dates = data.dates || from([]);
|
||||
// Hardcoded data
|
||||
private resources: Resource[] = [
|
||||
{ id: 'res1', name: 'Anders' },
|
||||
{ id: 'res2', name: 'Bente' },
|
||||
{ id: 'res3', name: 'Carsten' }
|
||||
];
|
||||
|
||||
for (const resource of resources) {
|
||||
const colspan = next.count(dates);
|
||||
render(context: RenderContext): void {
|
||||
const allowedIds = context.filter['resource'] || [];
|
||||
const filteredResources = this.resources.filter(r => allowedIds.includes(r.id));
|
||||
|
||||
const cell = document.createElement('swp-resource-header');
|
||||
cell.dataset.resourceId = resource.id;
|
||||
cell.textContent = resource.name || resource.id;
|
||||
const dateCount = context.filter['date']?.length || 1;
|
||||
|
||||
if (colspan > 1) {
|
||||
cell.style.gridColumn = `span ${colspan}`;
|
||||
}
|
||||
|
||||
context.headerContainer.appendChild(cell);
|
||||
|
||||
next.render(dates);
|
||||
// Render ALLE resource headers
|
||||
for (const resource of filteredResources) {
|
||||
const header = document.createElement('swp-resource-header');
|
||||
header.dataset.resourceId = resource.id;
|
||||
header.textContent = resource.name;
|
||||
header.style.gridColumn = `span ${dateCount}`;
|
||||
context.headerContainer.appendChild(header);
|
||||
}
|
||||
|
||||
// Derefter kald next ÉN gang
|
||||
if (this.next) this.next.render(context);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue