export const distanceKm = (meters: number | null | undefined): string => meters === null || meters === undefined ? '-' : `${(meters / 1000).toLocaleString('de-DE', { maximumFractionDigits: 2, })} km`; export const distanceMeters = (meters: number | null | undefined): string => meters === null || meters === undefined ? '-' : `${Math.round(meters).toLocaleString('de-DE')} m`; export const duration = (seconds: number | null | undefined): string => { if (seconds === null || seconds === undefined) { return '-'; } const hours = Math.floor(seconds / 3600); const minutes = Math.floor((seconds % 3600) / 60); const remainingSeconds = Math.round(seconds % 60); if (hours > 0) { return `${hours} h ${minutes.toString().padStart(2, '0')} min`; } return `${minutes}:${remainingSeconds.toString().padStart(2, '0')} min`; }; export const elevation = (meters: number | null | undefined): string => meters === null || meters === undefined ? '-' : `${Math.round(meters).toLocaleString('de-DE')} m`; export const speed = (metersPerSecond: number | null | undefined): string => metersPerSecond ? `${(metersPerSecond * 3.6).toLocaleString('de-DE', { maximumFractionDigits: 1, })} km/h` : '-'; export const pace = ( seconds: number | null | undefined, suffix = '/km', ): string => { if (!seconds) { return '-'; } const minutes = Math.floor(seconds / 60); const remainingSeconds = Math.round(seconds % 60) .toString() .padStart(2, '0'); return `${minutes}:${remainingSeconds} ${suffix}`; }; export const number = ( value: number | null | undefined, suffix = '', maximumFractionDigits = 0, ): string => value === null || value === undefined ? '-' : `${value.toLocaleString('de-DE', { maximumFractionDigits })}${suffix}`; export const shortDate = (value: string | null | undefined): string => { if (!value) { return '-'; } return new Intl.DateTimeFormat('de-DE', { day: '2-digit', month: '2-digit', year: '2-digit', }).format(new Date(value)); }; export const dateTime = (value: string | null | undefined): string => { if (!value) { return '-'; } return new Intl.DateTimeFormat('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', }).format(new Date(value)); };