This commit is contained in:
Janus Knudsen 2025-08-09 01:16:04 +02:00
parent 59b3c64c55
commit b111f121ba
9 changed files with 200 additions and 694 deletions

View file

@ -36,9 +36,14 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
if (column) {
const eventsLayer = column.querySelector('swp-events-layer');
if (eventsLayer) {
console.log(`BaseEventRenderer: Rendering event "${event.title}" in events layer`);
this.renderEvent(event, eventsLayer, config);
// Debug: Verify event was actually added
const renderedEvents = eventsLayer.querySelectorAll('swp-event');
console.log(`BaseEventRenderer: Events layer now has ${renderedEvents.length} events`);
} else {
console.warn('BaseEventRenderer: No events layer found in column for event', event.title);
console.warn('BaseEventRenderer: No events layer found in column for event', event.title, 'Column:', column);
}
} else {
console.warn('BaseEventRenderer: No column found for event', event.title);
@ -71,14 +76,23 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
`;
container.appendChild(eventElement);
console.log(`BaseEventRenderer: Created event element for "${event.title}":`, {
top: eventElement.style.top,
height: eventElement.style.height,
backgroundColor: eventElement.style.backgroundColor,
position: eventElement.style.position,
innerHTML: eventElement.innerHTML
});
}
protected calculateEventPosition(event: CalendarEvent, config: CalendarConfig): { top: number; height: number } {
const startDate = new Date(event.start);
const endDate = new Date(event.end);
const dayStartHour = config.get('dayStartHour');
const hourHeight = config.get('hourHeight');
const gridSettings = config.getGridSettings();
const dayStartHour = gridSettings.dayStartHour;
const hourHeight = gridSettings.hourHeight;
// Calculate minutes from visible day start
const startMinutes = startDate.getHours() * 60 + startDate.getMinutes();
@ -92,6 +106,17 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
const durationMinutes = endMinutes - startMinutes;
const height = (durationMinutes / 60) * hourHeight;
console.log('Event positioning calculation:', {
eventTime: `${startDate.getHours()}:${startDate.getMinutes()}`,
startMinutes,
endMinutes,
dayStartMinutes,
dayStartHour,
hourHeight,
top,
height
});
return { top, height };
}
@ -107,6 +132,9 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
clearEvents(): void {
const existingEvents = document.querySelectorAll('swp-event');
if (existingEvents.length > 0) {
console.warn(`🗑️ BaseEventRenderer: REMOVING ${existingEvents.length} events from DOM! Stack trace:`, new Error().stack);
}
existingEvents.forEach(event => event.remove());
}
}
@ -119,7 +147,16 @@ export class DateEventRenderer extends BaseEventRenderer {
const eventDate = new Date(event.start);
const dateStr = DateUtils.formatDate(eventDate);
const dayColumn = document.querySelector(`swp-day-column[data-date="${dateStr}"]`) as HTMLElement;
console.log('DateEventRenderer: Looking for day column with date', dateStr, 'found:', !!dayColumn);
// Debug: Check all available columns
const allColumns = document.querySelectorAll('swp-day-column');
const availableDates = Array.from(allColumns).map(col => (col as HTMLElement).dataset.date);
console.log('DateEventRenderer: Event', event.title, 'start:', event.start);
console.log('DateEventRenderer: Looking for date:', dateStr);
console.log('DateEventRenderer: Available columns with dates:', availableDates);
console.log('DateEventRenderer: Found column:', !!dayColumn);
return dayColumn;
}
}