2025-12-09 00:51:41 +01:00
|
|
|
import { IEnumerable } from 'ts-linq-light';
|
|
|
|
|
import { IGroupingRenderer, RenderContext } from '../../core/IGroupingRenderer';
|
|
|
|
|
import { NextFunction, RenderData } from '../../core/RenderBuilder';
|
2025-12-07 14:31:16 +01:00
|
|
|
import { DateService } from '../../core/DateService';
|
2025-12-06 01:22:04 +01:00
|
|
|
|
2025-12-09 00:51:41 +01:00
|
|
|
export class DateRenderer implements IGroupingRenderer<string> {
|
2025-12-06 01:22:04 +01:00
|
|
|
readonly type = 'date';
|
|
|
|
|
|
2025-12-07 14:31:16 +01:00
|
|
|
constructor(private dateService: DateService) {}
|
2025-12-06 01:22:04 +01:00
|
|
|
|
2025-12-09 00:51:41 +01:00
|
|
|
render(
|
|
|
|
|
dates: IEnumerable<string>,
|
|
|
|
|
_data: RenderData,
|
|
|
|
|
_next: NextFunction,
|
|
|
|
|
context: RenderContext
|
|
|
|
|
): void {
|
|
|
|
|
for (const dateStr of dates) {
|
2025-12-06 01:22:04 +01:00
|
|
|
const date = this.dateService.parseISO(dateStr);
|
|
|
|
|
|
|
|
|
|
const headerCell = document.createElement('swp-day-header');
|
|
|
|
|
headerCell.dataset.date = dateStr;
|
|
|
|
|
headerCell.innerHTML = `
|
|
|
|
|
<swp-day-name>${this.dateService.getDayName(date, 'short')}</swp-day-name>
|
|
|
|
|
<swp-day-date>${date.getDate()}</swp-day-date>
|
|
|
|
|
`;
|
|
|
|
|
context.headerContainer.appendChild(headerCell);
|
|
|
|
|
|
|
|
|
|
const column = document.createElement('swp-day-column');
|
|
|
|
|
column.dataset.date = dateStr;
|
|
|
|
|
column.innerHTML = '<swp-events-layer></swp-events-layer>';
|
|
|
|
|
context.columnContainer.appendChild(column);
|
2025-12-09 00:51:41 +01:00
|
|
|
|
|
|
|
|
// Leaf renderer - ingen next.render() kald
|
2025-12-06 01:22:04 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|