Refactors date handling with DateService
Replaces DateCalculator with DateService for improved date and time operations, including timezone handling. This change enhances the calendar's accuracy and flexibility in managing dates, especially concerning timezone configurations. It also corrects a typo in the `allDay` dataset attribute.
This commit is contained in:
parent
4859f42450
commit
6bbf2d8adb
17 changed files with 159 additions and 749 deletions
|
|
@ -1,15 +1,17 @@
|
|||
import { calendarConfig } from '../core/CalendarConfig';
|
||||
import { ColumnBounds } from './ColumnDetectionUtils';
|
||||
import { DateCalculator } from './DateCalculator';
|
||||
import { DateService } from './DateService';
|
||||
import { TimeFormatter } from './TimeFormatter';
|
||||
|
||||
/**
|
||||
* PositionUtils - Static positioning utilities using singleton calendarConfig
|
||||
* Focuses on pixel/position calculations while delegating date operations
|
||||
*
|
||||
* Note: Uses DateCalculator and TimeFormatter which internally use DateService with date-fns
|
||||
* Note: Uses DateService with date-fns for all date/time operations
|
||||
*/
|
||||
export class PositionUtils {
|
||||
private static dateService = new DateService('Europe/Copenhagen');
|
||||
|
||||
/**
|
||||
* Convert minutes to pixels
|
||||
*/
|
||||
|
|
@ -29,10 +31,10 @@ export class PositionUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* Convert time (HH:MM) to pixels from day start using DateCalculator
|
||||
* Convert time (HH:MM) to pixels from day start using DateService
|
||||
*/
|
||||
public static timeToPixels(timeString: string): number {
|
||||
const totalMinutes = DateCalculator.timeToMinutes(timeString);
|
||||
const totalMinutes = PositionUtils.dateService.timeToMinutes(timeString);
|
||||
const gridSettings = calendarConfig.getGridSettings();
|
||||
const dayStartMinutes = gridSettings.dayStartHour * 60;
|
||||
const minutesFromDayStart = totalMinutes - dayStartMinutes;
|
||||
|
|
@ -41,10 +43,10 @@ export class PositionUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* Convert Date object to pixels from day start using DateCalculator
|
||||
* Convert Date object to pixels from day start using DateService
|
||||
*/
|
||||
public static dateToPixels(date: Date): number {
|
||||
const totalMinutes = DateCalculator.getMinutesSinceMidnight(date);
|
||||
const totalMinutes = PositionUtils.dateService.getMinutesSinceMidnight(date);
|
||||
const gridSettings = calendarConfig.getGridSettings();
|
||||
const dayStartMinutes = gridSettings.dayStartHour * 60;
|
||||
const minutesFromDayStart = totalMinutes - dayStartMinutes;
|
||||
|
|
@ -53,7 +55,7 @@ export class PositionUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* Convert pixels to time using DateCalculator
|
||||
* Convert pixels to time using DateService
|
||||
*/
|
||||
public static pixelsToTime(pixels: number): string {
|
||||
const minutes = PositionUtils.pixelsToMinutes(pixels);
|
||||
|
|
@ -61,7 +63,7 @@ export class PositionUtils {
|
|||
const dayStartMinutes = gridSettings.dayStartHour * 60;
|
||||
const totalMinutes = dayStartMinutes + minutes;
|
||||
|
||||
return DateCalculator.minutesToTime(totalMinutes);
|
||||
return PositionUtils.dateService.minutesToTime(totalMinutes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -109,15 +111,15 @@ export class PositionUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* Snap time to interval using DateCalculator
|
||||
* Snap time to interval using DateService
|
||||
*/
|
||||
public static snapTimeToInterval(timeString: string): string {
|
||||
const totalMinutes = DateCalculator.timeToMinutes(timeString);
|
||||
const totalMinutes = PositionUtils.dateService.timeToMinutes(timeString);
|
||||
const gridSettings = calendarConfig.getGridSettings();
|
||||
const snapInterval = gridSettings.snapInterval;
|
||||
|
||||
const snappedMinutes = Math.round(totalMinutes / snapInterval) * snapInterval;
|
||||
return DateCalculator.minutesToTime(snappedMinutes);
|
||||
return PositionUtils.dateService.minutesToTime(snappedMinutes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -220,10 +222,10 @@ export class PositionUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* Convert time string to ISO datetime using DateCalculator
|
||||
* Convert time string to ISO datetime using DateService
|
||||
*/
|
||||
public static timeStringToIso(timeString: string, date: Date = new Date()): string {
|
||||
const totalMinutes = DateCalculator.timeToMinutes(timeString);
|
||||
const totalMinutes = PositionUtils.dateService.timeToMinutes(timeString);
|
||||
const hours = Math.floor(totalMinutes / 60);
|
||||
const minutes = totalMinutes % 60;
|
||||
|
||||
|
|
@ -234,10 +236,10 @@ export class PositionUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* Calculate event duration using DateCalculator
|
||||
* Calculate event duration using DateService
|
||||
*/
|
||||
public static calculateDuration(startTime: string | Date, endTime: string | Date): number {
|
||||
return DateCalculator.getDurationMinutes(startTime, endTime);
|
||||
return PositionUtils.dateService.getDurationMinutes(startTime, endTime);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue