details
This commit is contained in:
88
client/src/app/activities/activity-format.ts
Normal file
88
client/src/app/activities/activity-format.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
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));
|
||||
};
|
||||
Reference in New Issue
Block a user