Calendar/wwwroot/js/utils/PositionUtils.d.ts

102 lines
3.1 KiB
TypeScript
Raw Normal View History

2026-02-03 00:02:25 +01:00
import { Configuration } from '../configurations/CalendarConfig';
import { IColumnBounds } from './ColumnDetectionUtils';
import { DateService } from './DateService';
/**
* PositionUtils - Positioning utilities with dependency injection
* Focuses on pixel/position calculations while delegating date operations
*
* Note: Uses DateService with date-fns for all date/time operations
*/
export declare class PositionUtils {
private dateService;
private config;
constructor(dateService: DateService, config: Configuration);
/**
* Convert minutes to pixels
*/
minutesToPixels(minutes: number): number;
/**
* Convert pixels to minutes
*/
pixelsToMinutes(pixels: number): number;
/**
* Convert time (HH:MM) to pixels from day start using DateService
*/
timeToPixels(timeString: string): number;
/**
* Convert Date object to pixels from day start using DateService
*/
dateToPixels(date: Date): number;
/**
* Convert pixels to time using DateService
*/
pixelsToTime(pixels: number): string;
/**
* Beregn event position og størrelse
*/
calculateEventPosition(startTime: string | Date, endTime: string | Date): {
top: number;
height: number;
duration: number;
};
/**
* Snap position til grid interval
*/
snapToGrid(pixels: number): number;
/**
* Snap time to interval using DateService
*/
snapTimeToInterval(timeString: string): string;
/**
* Beregn kolonne position for overlappende events
*/
calculateColumnPosition(eventIndex: number, totalColumns: number, containerWidth: number): {
left: number;
width: number;
};
/**
* Check om to events overlapper i tid
*/
eventsOverlap(start1: string | Date, end1: string | Date, start2: string | Date, end2: string | Date): boolean;
/**
* Beregn Y position fra mouse/touch koordinat
*/
getPositionFromCoordinate(clientY: number, column: IColumnBounds): number;
/**
* Valider at tid er inden for arbejdstimer
*/
isWithinWorkHours(timeString: string): boolean;
/**
* Valider at tid er inden for dag grænser
*/
isWithinDayBounds(timeString: string): boolean;
/**
* Hent minimum event højde i pixels
*/
getMinimumEventHeight(): number;
/**
* Hent maksimum event højde i pixels (hele dagen)
*/
getMaximumEventHeight(): number;
/**
* Beregn total kalender højde
*/
getTotalCalendarHeight(): number;
/**
* Convert ISO datetime to time string with UTC-to-local conversion
*/
isoToTimeString(isoString: string): string;
/**
* Convert time string to ISO datetime using DateService with timezone handling
*/
timeStringToIso(timeString: string, date?: Date): string;
/**
* Calculate event duration using DateService
*/
calculateDuration(startTime: string | Date, endTime: string | Date): number;
/**
* Format duration to readable text (Danish)
*/
formatDuration(minutes: number): string;
}