Improves date handling and event stacking
Enhances date validation and timezone handling using DateService, ensuring data integrity and consistency. Refactors event rendering and dragging to correctly handle date transformations. Adds a test plan for event stacking and z-index management. Fixes edge cases in navigation and date calculations for week/year boundaries and DST transitions.
This commit is contained in:
parent
a86a736340
commit
9bc082eed4
20 changed files with 1641 additions and 41 deletions
|
|
@ -3,6 +3,7 @@ import { calendarConfig } from '../core/CalendarConfig';
|
|||
import { TimeFormatter } from '../utils/TimeFormatter';
|
||||
import { PositionUtils } from '../utils/PositionUtils';
|
||||
import { EventLayout } from '../utils/AllDayLayoutEngine';
|
||||
import { DateService } from '../utils/DateService';
|
||||
|
||||
/**
|
||||
* Abstract base class for event DOM elements
|
||||
|
|
@ -10,9 +11,12 @@ import { EventLayout } from '../utils/AllDayLayoutEngine';
|
|||
export abstract class BaseEventElement {
|
||||
protected element: HTMLElement;
|
||||
protected event: CalendarEvent;
|
||||
protected dateService: DateService;
|
||||
|
||||
protected constructor(event: CalendarEvent) {
|
||||
this.event = event;
|
||||
const timezone = calendarConfig.getTimezone?.();
|
||||
this.dateService = new DateService(timezone);
|
||||
this.element = this.createElement();
|
||||
this.setDataAttributes();
|
||||
}
|
||||
|
|
@ -28,8 +32,8 @@ export abstract class BaseEventElement {
|
|||
protected setDataAttributes(): void {
|
||||
this.element.dataset.eventId = this.event.id;
|
||||
this.element.dataset.title = this.event.title;
|
||||
this.element.dataset.start = this.event.start.toISOString();
|
||||
this.element.dataset.end = this.event.end.toISOString();
|
||||
this.element.dataset.start = this.dateService.toUTC(this.event.start);
|
||||
this.element.dataset.end = this.dateService.toUTC(this.event.end);
|
||||
this.element.dataset.type = this.event.type;
|
||||
this.element.dataset.duration = this.event.metadata?.duration?.toString() || '60';
|
||||
}
|
||||
|
|
@ -245,8 +249,8 @@ export class SwpAllDayEventElement extends BaseEventElement {
|
|||
*/
|
||||
private setAllDayAttributes(): void {
|
||||
this.element.dataset.allday = "true";
|
||||
this.element.dataset.start = this.event.start.toISOString();
|
||||
this.element.dataset.end = this.event.end.toISOString();
|
||||
this.element.dataset.start = this.dateService.toUTC(this.event.start);
|
||||
this.element.dataset.end = this.dateService.toUTC(this.event.end);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue