Refactors date handling in calendar components
Updates event and column date parsing to use identifier instead of data attribute Improves date handling consistency across multiple calendar managers and renderers Replaces direct Date casting with dateService.parseISO() for more robust date parsing
This commit is contained in:
parent
8e52d670d6
commit
0f10d44037
3 changed files with 14 additions and 14 deletions
|
|
@ -165,8 +165,8 @@ export class AllDayManager {
|
|||
eventBus.on('header:ready', async (event: Event) => {
|
||||
let headerReadyEventPayload = (event as CustomEvent<IHeaderReadyEventPayload>).detail;
|
||||
|
||||
let startDate = new Date(headerReadyEventPayload.headerElements.at(0)!.data as Date);
|
||||
let endDate = new Date(headerReadyEventPayload.headerElements.at(-1)!.data as Date);
|
||||
let startDate = this.dateService.parseISO(headerReadyEventPayload.headerElements.at(0)!.identifier);
|
||||
let endDate = this.dateService.parseISO(headerReadyEventPayload.headerElements.at(-1)!.identifier);
|
||||
|
||||
let events: ICalendarEvent[] = await this.eventManager.getEventsForPeriod(startDate, endDate);
|
||||
// Filter for all-day events
|
||||
|
|
@ -398,7 +398,7 @@ export class AllDayManager {
|
|||
this.currentWeekDates = dayHeaders;
|
||||
|
||||
// Initialize layout engine with provided week dates
|
||||
let layoutEngine = new AllDayLayoutEngine(dayHeaders.map(column => column.data as Date));
|
||||
let layoutEngine = new AllDayLayoutEngine(dayHeaders.map(column => column.identifier));
|
||||
|
||||
// Calculate layout for all events together - AllDayLayoutEngine handles CalendarEvents directly
|
||||
return layoutEngine.calculateLayout(events);
|
||||
|
|
@ -489,7 +489,7 @@ export class AllDayManager {
|
|||
|
||||
const clone = dragEndEvent.draggedClone as SwpAllDayEventElement;
|
||||
const eventId = clone.eventId.replace('clone-', '');
|
||||
const targetDate = dragEndEvent.finalPosition.column.data as Date;
|
||||
const targetDate = this.dateService.parseISO(dragEndEvent.finalPosition.column.identifier);
|
||||
|
||||
console.log('🔄 AllDayManager: Converting timed event to all-day', { eventId, targetDate });
|
||||
|
||||
|
|
@ -537,7 +537,7 @@ export class AllDayManager {
|
|||
|
||||
const clone = dragEndEvent.draggedClone as SwpAllDayEventElement;
|
||||
const eventId = clone.eventId.replace('clone-', '');
|
||||
const targetDate = dragEndEvent.finalPosition.column.data as Date;
|
||||
const targetDate = this.dateService.parseISO(dragEndEvent.finalPosition.column.identifier);
|
||||
|
||||
// Calculate duration in days
|
||||
const durationDays = this.dateService.differenceInCalendarDays(clone.end, clone.start);
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ export class DateEventRenderer implements IEventRenderer {
|
|||
public handleDragMove(payload: IDragMoveEventPayload): void {
|
||||
|
||||
const swpEvent = payload.draggedClone as SwpEventElement;
|
||||
const columnDate = this.dateService.parseISO(payload.columnBounds!!.data as Date);
|
||||
const columnDate = this.dateService.parseISO(payload.columnBounds!!.identifier);
|
||||
swpEvent.updatePosition(columnDate, payload.snappedY);
|
||||
}
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ export class DateEventRenderer implements IEventRenderer {
|
|||
// Recalculate timestamps with new column date
|
||||
const currentTop = parseFloat(payload.draggedClone.style.top) || 0;
|
||||
const swpEvent = payload.draggedClone as SwpEventElement;
|
||||
const columnDate = this.dateService.parseISO(payload.newColumn.data as Date);
|
||||
const columnDate = this.dateService.parseISO(payload.newColumn.identifier);
|
||||
swpEvent.updatePosition(columnDate, currentTop);
|
||||
}
|
||||
}
|
||||
|
|
@ -130,7 +130,7 @@ export class DateEventRenderer implements IEventRenderer {
|
|||
|
||||
console.log('🎯 DateEventRenderer: Converting all-day to timed event', {
|
||||
eventId: payload.calendarEvent.id,
|
||||
targetColumn: payload.targetColumn.data as Date,
|
||||
targetColumn: payload.targetColumn.identifier,
|
||||
snappedY: payload.snappedY
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -216,7 +216,7 @@ export class EventRenderingService {
|
|||
cloneElement.style.display = '';
|
||||
|
||||
console.log('🚪 EventRendererManager: Received drag:mouseleave-header', {
|
||||
targetDate,
|
||||
targetColumn: targetColumn?.identifier,
|
||||
originalElement: originalElement,
|
||||
cloneElement: cloneElement
|
||||
});
|
||||
|
|
@ -296,7 +296,7 @@ export class EventRenderingService {
|
|||
}
|
||||
|
||||
// Re-render target column if exists and different from source
|
||||
if (targetColumn && (targetColumn.data as Date) !== (originalSourceColumn?.data as Date)) {
|
||||
if (targetColumn && targetColumn.identifier !== originalSourceColumn?.identifier) {
|
||||
await this.renderSingleColumn(targetColumn);
|
||||
}
|
||||
}
|
||||
|
|
@ -317,7 +317,7 @@ export class EventRenderingService {
|
|||
*/
|
||||
private async renderSingleColumn(column: IColumnBounds): Promise<void> {
|
||||
// Get events for just this column's date
|
||||
const dateString = (column.data as Date).toISOString().split('T')[0];
|
||||
const dateString = column.identifier;
|
||||
const columnStart = this.dateService.parseISO(`${dateString}T00:00:00`);
|
||||
const columnEnd = this.dateService.parseISO(`${dateString}T23:59:59.999`);
|
||||
|
||||
|
|
@ -343,7 +343,7 @@ export class EventRenderingService {
|
|||
}
|
||||
|
||||
console.log('🔄 EventRendererManager: Re-rendered single column', {
|
||||
columnDate: column.data as Date,
|
||||
columnDate: column.identifier,
|
||||
eventsCount: timedEvents.length
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue