Files
strava-mcp/client/src/app/activities/activity-format.ts
Bastian Wagner 7423920f34 details
2026-06-17 15:41:49 +02:00

89 lines
2.3 KiB
TypeScript

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));
};