strava-frontend/src/pages/workouts/Definitions.vue

67 lines
1.8 KiB
Vue

<script lang="ts">
export type Attachment = {
url: string;
}
export type WorkoutLinkItem = {
type: string;
value: string;
}
export type WorkoutLink = {
values: Array<WorkoutLinkItem>;
}
export type WorkoutItem = {
id: string;
name: string;
created_by: string;
created_at: string;
updated_at: string;
description: string;
cadence: number;
heart_rate: number;
max_cadence: number;
max_heart_rate: number;
temperature: number;
speed: number;
power: number;
max_speed: number;
max_power: number;
duraion_sec: number;
distantion: number;
attachment: Attachment;
latitude: number;
longitude: number;
is_public: boolean;
workouted_at: string;
external_links?: WorkoutLink;
}
export const secondsToDuration = (seconds: number) => {
let hours = Math.floor(seconds / 3600);
let minutes = Math.floor((seconds % 3600) / 60);
return `${hours} ч. ${minutes} мин.`;
}
export const formatTime = (isoString: string): string => {
const date = new Date(isoString);
if (Number.isNaN(date.valueOf())) {
throw new Error('Invalid date string');
}
const day = date.getDate();
const month = date.getMonth() + 1; // Months are 0-based
const year = date.getFullYear();
return `${pad(day)}.${pad(month)}.${year}`;
}
const pad = (n: number): string => {
return `${Math.floor(Math.abs(n))}`.padStart(2, '0');
}
export const distConvert = (speed: number) => {
return Math.round(speed/1000)
}
export const speedConvert = (speed: number) => {
return Math.round(speed*3.6)
}
export default {}
</script>