101 lines
3.1 KiB
TypeScript
101 lines
3.1 KiB
TypeScript
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;
|
|
}
|