Calendar/src/v2/features/date/DateRenderer.ts

39 lines
1.3 KiB
TypeScript
Raw Normal View History

2025-12-09 21:02:44 +01:00
import { Renderer, RenderContext } from '../../core/IGroupingRenderer';
import { DateService } from '../../core/DateService';
2025-12-06 01:22:04 +01:00
2025-12-09 21:02:44 +01:00
export class DateRenderer implements Renderer {
2025-12-06 01:22:04 +01:00
readonly type = 'date';
2025-12-09 21:02:44 +01:00
next: Renderer | null = null;
2025-12-06 01:22:04 +01:00
constructor(private dateService: DateService) {}
2025-12-06 01:22:04 +01:00
2025-12-09 21:02:44 +01:00
render(context: RenderContext): void {
const dates = context.filter['date'] || [];
const resourceCount = context.filter['resource']?.length || 1;
2025-12-06 01:22:04 +01:00
2025-12-09 21:02:44 +01:00
// Render dates for HVER resource (resourceCount gange)
for (let r = 0; r < resourceCount; r++) {
for (const dateStr of dates) {
const date = this.dateService.parseISO(dateStr);
2025-12-06 01:22:04 +01:00
2025-12-09 21:02:44 +01:00
// Header
const header = document.createElement('swp-day-header');
header.dataset.date = dateStr;
header.innerHTML = `
<swp-day-name>${this.dateService.getDayName(date, 'short')}</swp-day-name>
<swp-day-date>${date.getDate()}</swp-day-date>
`;
context.headerContainer.appendChild(header);
2025-12-09 21:02:44 +01:00
// Column
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-06 01:22:04 +01:00
}
2025-12-09 21:02:44 +01:00
// Leaf - ingen next
2025-12-06 01:22:04 +01:00
}
}