Enhances event layout engine with advanced rendering logic

Introduces sophisticated event layout algorithm for handling complex scheduling scenarios

Adds support for:
- Grid and stacked event rendering
- Automatic column allocation
- Nested event stacking
- Threshold-based event grouping

Improves visual representation of overlapping and concurrent events
This commit is contained in:
Janus C. H. Knudsen 2025-12-11 18:11:11 +01:00
parent 4e22fbc948
commit 70172e8f10
26 changed files with 2108 additions and 44 deletions

View file

@ -25,6 +25,8 @@ interface DragState {
targetY: number;
currentY: number;
animationId: number;
sourceDateKey: string; // Source column date (where drag started)
sourceResourceId?: string; // Source column resource (where drag started)
}
/**
@ -144,7 +146,7 @@ export class DragDropManager {
// Remove ghost
this.dragState.ghostElement.remove();
// Get column data
// Get column data (target = current column, source = where drag started)
const dateKey = this.dragState.columnElement.dataset.date || '';
const resourceId = this.dragState.columnElement.dataset.resourceId;
@ -155,7 +157,9 @@ export class DragDropManager {
snappedY,
columnElement: this.dragState.columnElement,
dateKey,
resourceId
resourceId,
sourceDateKey: this.dragState.sourceDateKey,
sourceResourceId: this.dragState.sourceResourceId
};
this.eventBus.emit(CoreEvents.EVENT_DRAG_END, payload);
@ -200,7 +204,9 @@ export class DragDropManager {
currentColumn: columnElement,
targetY: Math.max(0, targetY),
currentY: startY,
animationId: 0
animationId: 0,
sourceDateKey: columnElement.dataset.date || '',
sourceResourceId: columnElement.dataset.resourceId
};
// Emit drag:start