Removes excessive logging statements

Cleans up the codebase by removing unnecessary console log statements.

These logs were primarily used for debugging and are no longer needed in the production code.
This reduces noise in the console and improves overall performance.
This commit is contained in:
Janus Knudsen 2025-08-31 22:39:09 +02:00
parent 383eab7524
commit fafad16926
24 changed files with 4 additions and 275 deletions

View file

@ -39,7 +39,6 @@ export class DateColumnRenderer implements ColumnRenderer {
const dateSettings = config.getDateViewSettings();
const daysToShow = dates.slice(0, dateSettings.weekDays);
console.log('DateColumnRenderer: About to render', daysToShow.length, 'date columns with work hours');
daysToShow.forEach((date) => {
const column = document.createElement('swp-day-column');
@ -61,7 +60,6 @@ export class DateColumnRenderer implements ColumnRenderer {
if (workHours === 'off') {
// No work hours - mark as off day (full day will be colored)
(column as any).dataset.workHours = 'off';
console.log(`DateColumnRenderer: ${this.dateCalculator.formatISODate(date)} is an off day`);
} else {
// Calculate and apply non-work hours overlays (before and after work)
const nonWorkStyle = this.workHoursManager.calculateNonWorkHoursStyle(workHours);
@ -72,7 +70,6 @@ export class DateColumnRenderer implements ColumnRenderer {
// After work overlay (::after pseudo-element)
column.style.setProperty('--after-work-top', `${nonWorkStyle.afterWorkTop}px`);
console.log(`DateColumnRenderer: ${this.dateCalculator.formatISODate(date)} non-work overlays - before: ${nonWorkStyle.beforeWorkHeight}px, after: ${nonWorkStyle.afterWorkTop}px (work hours: ${workHours.start}-${workHours.end})`);
}
}
}
@ -87,11 +84,9 @@ export class ResourceColumnRenderer implements ColumnRenderer {
const { resourceData } = context;
if (!resourceData) {
console.warn('ResourceColumnRenderer: No resource data available for resource columns');
return;
}
console.log('ResourceColumnRenderer: About to render', resourceData.resources.length, 'resource columns');
resourceData.resources.forEach((resource) => {
const column = document.createElement('swp-resource-column');

View file

@ -71,7 +71,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
if (this.draggedClone && targetDate) {
// Scenario 1: Timed event being dragged to header - convert to all-day
if (this.draggedClone.tagName === 'SWP-EVENT') {
console.log('EventRenderer: Converting timed event to all-day for date:', targetDate);
headerRenderer.addToAllDay(element);
this.convertToAllDayPreview(targetDate);
}
@ -80,7 +79,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
else if (this.draggedClone.tagName === 'SWP-ALLDAY-EVENT') {
const currentDate = this.draggedClone.parentElement?.getAttribute('data-date');
if (currentDate !== targetDate) {
console.log('EventRenderer: Moving all-day event from', currentDate, 'to', targetDate);
this.moveAllDayToNewDate(targetDate);
}
}
@ -105,7 +103,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
if (dayHeader) {
const targetDate = dayHeader.dataset.date;
if (targetDate && this.draggedClone.tagName === 'SWP-EVENT') {
console.log(`EventRenderer: Mouse over day header for date ${targetDate}`);
// Find the header renderer from the calendar header
const calendarHeader = dayHeader.closest('swp-calendar-header');
@ -153,13 +150,11 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
const duration = timeElement.getAttribute('data-duration');
if (duration) {
const durationMinutes = parseInt(duration);
console.log(`EventRenderer: Read duration ${durationMinutes} minutes from data-duration attribute`);
return durationMinutes;
}
}
// Fallback to 60 minutes if attribute not found
console.warn('EventRenderer: No data-duration found, using fallback 60 minutes');
return 60;
}
@ -179,7 +174,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
const originalDurationMinutes = this.getOriginalEventDuration(originalEvent);
clone.dataset.originalDuration = originalDurationMinutes.toString();
console.log(`EventRenderer: Clone created with ${originalDurationMinutes} minutes duration from data-duration`);
// Style for dragging
clone.style.position = 'absolute';
@ -221,7 +215,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
const newTimeText = `${this.formatTime(startTotalMinutes)} - ${this.formatTime(endTotalMinutes)}`;
timeElement.textContent = newTimeText;
console.log(`EventRenderer: Updated timestamp to ${newTimeText} (${cachedDuration} min duration)`);
}
}
@ -259,13 +252,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
private handleDragStart(originalElement: HTMLElement, eventId: string, mouseOffset: any, column: string): void {
this.originalEvent = originalElement;
console.log('EventRenderer: Starting drag on element:', {
eventId,
tagName: originalElement.tagName,
currentOpacity: originalElement.style.opacity,
hasDataDuration: !!originalElement.querySelector('swp-event-time')?.getAttribute('data-duration')
});
// Create clone
this.draggedClone = this.createEventClone(originalElement);
@ -279,7 +265,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
originalElement.style.opacity = '0.3';
originalElement.style.userSelect = 'none';
console.log('EventRenderer: Drag started - original set to opacity 0.3, clone created');
}
/**
@ -294,7 +279,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
// Update timestamp display
this.updateCloneTimestamp(this.draggedClone, snappedY);
console.log('EventRenderer: Clone position and timestamp updated');
}
/**
@ -307,7 +291,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
const newColumnElement = document.querySelector(`swp-day-column[data-date="${newColumn}"]`);
if (newColumnElement && this.draggedClone.parentElement !== newColumnElement) {
newColumnElement.appendChild(this.draggedClone);
console.log(`EventRenderer: Clone moved to column ${newColumn}`);
}
}
@ -315,19 +298,12 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
* Handle drag end event
*/
private handleDragEnd(eventId: string, originalElement: HTMLElement, finalColumn: string, finalY: number): void {
console.log('EventRenderer: Handling drag end', {
hasClone: !!this.draggedClone,
hasOriginal: !!this.originalEvent,
originalOpacity: this.originalEvent?.style.opacity
});
if (!this.draggedClone || !this.originalEvent) {
console.warn('EventRenderer: Missing clone or original element at drag end');
return;
}
// Fade out original
console.log('EventRenderer: Fading out original element');
this.fadeOutAndRemove(this.originalEvent);
// Remove clone prefix and normalize clone to be a regular event
@ -342,13 +318,11 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
this.draggedClone.style.userSelect = '';
this.draggedClone.style.zIndex = '';
console.log('EventRenderer: Clone normalized to regular event with ID:', this.draggedClone.dataset.eventId);
// Clean up
this.draggedClone = null;
this.originalEvent = null;
console.log('EventRenderer: Drag completed and cleaned up');
}
/**
@ -366,7 +340,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
// Expand header if needed
headerRenderer.addToAllDay(this.draggedClone.parentElement);
console.log(`EventRenderer: Converted to all-day event for date ${targetDate}`);
}
/**
@ -441,7 +414,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
// Transform clone to all-day format
this.transformCloneToAllDay(this.draggedClone, targetDate);
console.log(`EventRenderer: Converted clone to all-day preview for ${targetDate}`);
}
/**
@ -474,10 +446,8 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
allDayContainer.appendChild(this.draggedClone);
}
console.log(`EventRenderer: Moved all-day event to date ${targetDate}, column ${columnIndex}`);
}
renderEvents(events: CalendarEvent[], container: HTMLElement, config: CalendarConfig): void {
console.log('BaseEventRenderer: renderEvents called with', events.length, 'events');
// NOTE: Removed clearEvents() to support sliding animation
// With sliding animation, multiple grid containers exist simultaneously
@ -488,31 +458,25 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
const allDayEvents = events.filter(event => event.allDay);
const regularEvents = events.filter(event => !event.allDay);
console.log(`BaseEventRenderer: Rendering ${allDayEvents.length} all-day events and ${regularEvents.length} regular events`);
// Always call renderAllDayEvents to ensure height is set correctly (even to 0)
this.renderAllDayEvents(allDayEvents, container, config);
// Find columns in the specific container for regular events
const columns = this.getColumns(container);
console.log(`BaseEventRenderer: Found ${columns.length} columns in container`);
columns.forEach(column => {
const columnEvents = this.getEventsForColumn(column, regularEvents);
console.log(`BaseEventRenderer: Rendering ${columnEvents.length} regular events in column`);
const eventsLayer = column.querySelector('swp-events-layer');
if (eventsLayer) {
columnEvents.forEach(event => {
console.log(`BaseEventRenderer: Rendering event "${event.title}" in events layer`);
this.renderEvent(event, eventsLayer, config);
});
// Debug: Verify events were 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');
}
});
}
@ -525,19 +489,16 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
* Render all-day events in the header row 2
*/
protected renderAllDayEvents(allDayEvents: CalendarEvent[], container: HTMLElement, config: CalendarConfig): void {
console.log(`BaseEventRenderer: Rendering ${allDayEvents.length} all-day events using nested grid`);
// Find the calendar header
const calendarHeader = container.querySelector('swp-calendar-header');
if (!calendarHeader) {
console.warn('BaseEventRenderer: No calendar header found for all-day events');
return;
}
// Find the all-day container
const allDayContainer = calendarHeader.querySelector('swp-allday-container') as HTMLElement;
if (!allDayContainer) {
console.warn('BaseEventRenderer: No swp-allday-container found - HeaderRenderer should create this');
return;
}
@ -617,13 +578,11 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
allDayContainer.appendChild(allDayEvent);
console.log(`BaseEventRenderer: Placed "${event.title}" in row ${row}, columns ${span.startColumn} to ${span.startColumn + span.columnSpan - 1}`);
});
// Update height based on max row
this.updateAllDayHeight(maxRow);
console.log(`BaseEventRenderer: Created ${maxRow} rows with auto-expanding grid`);
}
protected renderEvent(event: CalendarEvent, container: Element, config: CalendarConfig): void {
@ -654,17 +613,8 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
<swp-event-title>${event.title}</swp-event-title>
`;
console.log(`BaseEventRenderer: Rendered "${event.title}" with ${durationMinutes} minutes duration`);
container.appendChild(eventElement);
console.log(`BaseEventRenderer: Created event element for "${event.title}":`, {
top: eventElement.style.top,
height: eventElement.style.height,
dataType: eventElement.dataset.type,
position: eventElement.style.position,
innerHTML: eventElement.innerHTML
});
}
protected calculateEventPosition(event: CalendarEvent, config: CalendarConfig): { top: number; height: number } {
@ -687,16 +637,6 @@ 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 };
}
@ -716,18 +656,17 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
*/
private updateAllDayHeight(maxRows: number): void {
const root = document.documentElement;
const eventHeight = parseInt(getComputedStyle(root).getPropertyValue('--allday-event-height') || '26');
const eventHeight = parseInt(getComputedStyle(root).getPropertyValue('--all-day-event-height'));
const calculatedHeight = maxRows * eventHeight;
root.style.setProperty('--all-day-row-height', `${calculatedHeight}px`);
// Update grid-template-rows for all swp-allday-containers
const allDayContainers = document.querySelectorAll('swp-allday-container');
allDayContainers.forEach(container => {
const gridRows = `repeat(${maxRows}, var(--allday-event-height, 26px))`;
const gridRows = `repeat(${maxRows}, var(--all-day-event-height))`;
(container as HTMLElement).style.gridTemplateRows = gridRows;
});
console.log(`BaseEventRenderer: Set all-day height to ${calculatedHeight}px and grid-template-rows to ${maxRows} rows`);
}
/**
@ -778,10 +717,6 @@ export abstract class BaseEventRenderer implements EventRendererStrategy {
? container.querySelectorAll(selector)
: document.querySelectorAll(selector);
if (existingEvents.length > 0) {
console.log(`BaseEventRenderer: Clearing ${existingEvents.length} events`,
container ? 'from container' : 'globally');
}
existingEvents.forEach(event => event.remove());
}
}
@ -793,19 +728,16 @@ export class DateEventRenderer extends BaseEventRenderer {
constructor(config: CalendarConfig) {
super(config);
this.setupDragEventListeners();
console.log('DateEventRenderer: Drag event listeners setup');
}
protected getColumns(container: HTMLElement): HTMLElement[] {
const columns = container.querySelectorAll('swp-day-column');
console.log('DateEventRenderer: Found', columns.length, 'day columns in container');
return Array.from(columns) as HTMLElement[];
}
protected getEventsForColumn(column: HTMLElement, events: CalendarEvent[]): CalendarEvent[] {
const columnDate = column.dataset.date;
if (!columnDate) {
console.log(`DateEventRenderer: Column has no dataset.date`);
return [];
}
@ -814,15 +746,10 @@ export class DateEventRenderer extends BaseEventRenderer {
const eventDateStr = this.dateCalculator.formatISODate(eventDate);
const matches = eventDateStr === columnDate;
if (!matches) {
if(event.title == 'Architecture Planning')
console.log(`DateEventRenderer: Event ${event.title} (${eventDateStr}) does not match column (${columnDate})`);
}
return matches;
});
console.log(`DateEventRenderer: Column ${columnDate} has ${columnEvents.length} events from ${events.length} total`);
return columnEvents;
}
}
@ -833,7 +760,6 @@ export class DateEventRenderer extends BaseEventRenderer {
export class ResourceEventRenderer extends BaseEventRenderer {
protected getColumns(container: HTMLElement): HTMLElement[] {
const columns = container.querySelectorAll('swp-resource-column');
console.log('ResourceEventRenderer: Found', columns.length, 'resource columns in container');
return Array.from(columns) as HTMLElement[];
}
@ -845,7 +771,6 @@ export class ResourceEventRenderer extends BaseEventRenderer {
return event.resource?.name === resourceName;
});
console.log(`ResourceEventRenderer: Resource ${resourceName} has ${columnEvents.length} events`);
return columnEvents;
}
}

View file

@ -30,11 +30,9 @@ export class EventRenderingService {
* Render events in a specific container for a given period
*/
public renderEvents(context: RenderContext): void {
console.log(` 📅 Getting events for ${context.startDate.toDateString()} - ${context.endDate.toDateString()}`);
// Clear existing events in the specific container first
this.strategy.clearEvents(context.container);
console.log(` 🧹 Cleared existing events in container`);
// Get events from EventManager for the period
const events = this.eventManager.getEventsForPeriod(
@ -42,16 +40,13 @@ export class EventRenderingService {
context.endDate
);
console.log(` 📊 Found ${events.length} events for period`);
if (events.length === 0) {
console.log(' ⚠️ No events to render for this period');
return;
}
// Use cached strategy to render events in the specific container
this.strategy.renderEvents(events, context.container, calendarConfig);
console.log(` ✅ Rendered ${events.length} events successfully`);
// Emit EVENTS_RENDERED event for filtering system
this.eventBus.emit(CoreEvents.EVENTS_RENDERED, {
@ -63,18 +58,15 @@ export class EventRenderingService {
private setupEventListeners(): void {
// Event-driven rendering: React to grid and container events
this.eventBus.on(CoreEvents.GRID_RENDERED, (event: Event) => {
console.log('EventRenderer: Received GRID_RENDERED event');
this.handleGridRendered(event as CustomEvent);
});
// CONTAINER_READY_FOR_EVENTS removed - events are now pre-rendered synchronously
// this.eventBus.on(EventTypes.CONTAINER_READY_FOR_EVENTS, (event: Event) => {
// console.log('EventRenderer: Received CONTAINER_READY_FOR_EVENTS event');
// this.handleContainerReady(event as CustomEvent);
// });
this.eventBus.on(CoreEvents.VIEW_CHANGED, (event: Event) => {
console.log('EventRenderer: Received VIEW_CHANGED event');
this.handleViewChanged(event as CustomEvent);
});
}
@ -87,7 +79,6 @@ export class EventRenderingService {
const { container, startDate, endDate, currentDate } = event.detail;
if (!container) {
console.error('EventRenderer: No container in GRID_RENDERED event', event.detail);
return;
}
@ -99,10 +90,8 @@ export class EventRenderingService {
periodStart = startDate;
periodEnd = endDate;
} else if (currentDate) {
console.error('EventRenderer: GRID_RENDERED events must include explicit startDate and endDate', event.detail);
return;
} else {
console.error('EventRenderer: No date information in GRID_RENDERED event', event.detail);
return;
}
@ -120,7 +109,6 @@ export class EventRenderingService {
const { container, startDate, endDate } = event.detail;
if (!container || !startDate || !endDate) {
console.error('EventRenderer: Invalid CONTAINER_READY_FOR_EVENTS event data', event.detail);
return;
}
@ -139,10 +127,8 @@ export class EventRenderingService {
this.clearEvents();
// New rendering will be triggered by subsequent GRID_RENDERED event
console.log('EventRenderer: Cleared events for view change, waiting for GRID_RENDERED');
}
private clearEvents(container?: HTMLElement): void {
console.log(`EventRenderer: Clearing events`, container ? 'in container' : 'globally');
this.strategy.clearEvents(container);
}

View file

@ -24,31 +24,22 @@ export class GridRenderer {
currentWeek: Date,
resourceData: ResourceCalendarData | null
): void {
console.log('GridRenderer: renderGrid called', {
hasGrid: !!grid,
hasCurrentWeek: !!currentWeek,
currentWeek: currentWeek
});
if (!grid || !currentWeek) {
console.warn('GridRenderer: Cannot render - missing grid or currentWeek');
return;
}
// Only clear and rebuild if grid is empty (first render)
if (grid.children.length === 0) {
console.log('GridRenderer: First render - creating grid structure');
// Create POC structure: header-spacer + time-axis + grid-container
this.createHeaderSpacer(grid);
this.createTimeAxis(grid);
this.createGridContainer(grid, currentWeek, resourceData);
} else {
console.log('GridRenderer: Re-render - updating existing structure');
// Just update the calendar header for all-day events
this.updateCalendarHeader(grid, currentWeek, resourceData);
}
console.log('GridRenderer: Grid rendered successfully with POC structure');
}
/**
@ -69,7 +60,6 @@ export class GridRenderer {
const startHour = gridSettings.dayStartHour;
const endHour = gridSettings.dayEndHour;
console.log('GridRenderer: Creating time axis - startHour:', startHour, 'endHour:', endHour);
for (let hour = startHour; hour < endHour; hour++) {
const marker = document.createElement('swp-hour-marker');
@ -151,7 +141,6 @@ export class GridRenderer {
currentWeek: Date,
resourceData: ResourceCalendarData | null
): void {
console.log('GridRenderer: renderColumnContainer called');
const calendarType = this.config.getCalendarMode();
const columnRenderer = CalendarTypeFactory.getColumnRenderer(calendarType);
@ -223,11 +212,6 @@ export class GridRenderer {
return; // No valid element found
}
console.log('GridRenderer: Detected hover over:', {
elementType: dayHeader ? 'day-header' : 'all-day-container',
targetDate,
element: hoveredElement
});
// Get the header renderer for addToAllDay functionality
const calendarType = this.config.getCalendarMode();

View file

@ -36,7 +36,6 @@ export class GridStyleManager {
calendar.setAttribute('data-fit-to-width', gridSettings.fitToWidth.toString());
}
console.log('GridStyleManager: Updated grid styles with', columnCount, 'columns for', calendarType, 'calendar');
}
/**
@ -99,7 +98,6 @@ export class GridStyleManager {
// Set CSS variable for dynamic spacer height
document.documentElement.style.setProperty('--all-day-row-height', `${allDayHeight}px`);
console.log('GridStyleManager: Updated --all-day-row-height to', `${allDayHeight}px`, 'for', allDayEventCount, 'events');
}
/**

View file

@ -35,7 +35,6 @@ export abstract class BaseHeaderRenderer implements HeaderRenderer {
this.createAllDayMainStructure(calendarHeader);
this.animateHeaderExpansion(calendarHeader);
}
console.log('BaseHeaderRenderer: Header expanded for all-day row');
}
}
@ -44,7 +43,6 @@ export abstract class BaseHeaderRenderer implements HeaderRenderer {
*/
ensureAllDayContainers(calendarHeader: HTMLElement): void {
// Do nothing initially - containers will be created when first needed
console.log('BaseHeaderRenderer: All-day containers will be created lazily when first event is dragged');
}
private animateHeaderExpansion(calendarHeader: HTMLElement): void {
@ -108,7 +106,6 @@ export abstract class BaseHeaderRenderer implements HeaderRenderer {
// Notify ScrollManager about header height change
eventBus.emit('header:height-changed');
console.log('HeaderRenderer: All-day container animated to visible');
});
}
@ -120,9 +117,7 @@ export abstract class BaseHeaderRenderer implements HeaderRenderer {
// Create simple all-day container (initially hidden)
container = document.createElement('swp-allday-container');
calendarHeader.appendChild(container);
console.log('HeaderRenderer: Created swp-allday-container (initially hidden)');
} else {
console.log('HeaderRenderer: swp-allday-container already exists');
}
}
}
@ -179,7 +174,6 @@ export class ResourceHeaderRenderer extends BaseHeaderRenderer {
const { resourceData } = context;
if (!resourceData) {
console.warn('ResourceHeaderRenderer: No resource data available for resource headers');
return;
}
@ -198,6 +192,5 @@ export class ResourceHeaderRenderer extends BaseHeaderRenderer {
calendarHeader.appendChild(header);
});
console.log(`ResourceHeaderRenderer: Rendered ${resourceData.resources.length} resource headers`);
}
}

View file

@ -97,8 +97,6 @@ export class NavigationRenderer {
public renderContainer(parentContainer: HTMLElement, weekStart: Date): HTMLElement {
const weekEnd = this.dateCalculator.addDays(weekStart, 6);
console.group(`🎨 RENDERING CONTAINER: ${weekStart.toDateString()} - ${weekEnd.toDateString()}`);
console.log('1. Creating grid structure...');
// Create new grid container
const newGrid = document.createElement('swp-grid-container');
@ -122,10 +120,8 @@ export class NavigationRenderer {
// Add to parent container
parentContainer.appendChild(newGrid);
console.log('2. Rendering headers and columns...');
this.renderWeekContentInContainer(newGrid, weekStart);
console.log('3. Emitting GRID_RENDERED for navigation container...');
this.eventBus.emit(CoreEvents.GRID_RENDERED, {
container: newGrid, // Specific grid container, not parent
currentDate: weekStart,
@ -134,8 +130,6 @@ export class NavigationRenderer {
isNavigation: true // Flag to indicate this is navigation rendering
});
console.log('✅ Container ready with GRID_RENDERED event emitted');
console.groupEnd();
return newGrid;
}
@ -227,11 +221,6 @@ export class NavigationRenderer {
return; // No valid element found
}
console.log('NavigationRenderer: Detected hover over:', {
elementType: dayHeader ? 'day-header' : 'all-day-container',
targetDate,
element: hoveredElement
});
// Get the header renderer for addToAllDay functionality
const calendarType = this.config.getCalendarMode();