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

64 lines
1.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<h1 class="page-title">Tренировка</h1>
<WorkoutItemComponent
v-if="workoutItem"
:workoutItem="workoutItem"
:data="data"
:mapCenter="mapCenter"
:lineCoordinates="lineCoordinates"
:distances="distances"
:dzenLink="dzenLink"
:isPrivate="true"
@vpCalculated="initWorkout(route.params.id as string)"
/>
<div v-else>
<VaInnerLoading loading :size="60"> </VaInnerLoading>
</div>
</template>
<script setup lang="ts">
import { AxiosError } from "axios";
import { ref } from "vue";
import { useRoute } from "vue-router";
import { useToast } from "vuestic-ui/web-components";
import WorkoutItemComponent from "./components/WorkoutItem.vue";
import { WorkoutItem, ChartDataByMetric } from "./Definitions.vue";
import { GetWorkout, InitWorkoutItem } from "./components/GetWorkout";
const { init } = useToast();
const route = useRoute();
const mapCenter = ref<Array<number>>([37.617644, 55.755819]);
const lineCoordinates = ref<Array<Array<number>>>([]);
const distances = ref<Array<number>>([]);
const workoutItem = ref<WorkoutItem>();
const data = ref<ChartDataByMetric>({});
const dzenLink = ref("");
const initWorkout = (id: string) => {
GetWorkout(`/api/v0/workouts/${id}`)
.then((d: InitWorkoutItem) => {
mapCenter.value = d.mapCenter;
lineCoordinates.value = d.lineCoordinates;
distances.value = d.distances;
workoutItem.value = d.workoutItem;
data.value = d.data;
if (d.dzenLink != undefined) {
dzenLink.value = d.dzenLink;
}
})
.catch((_error: AxiosError) => {
init({
message: "Что-то пошло не так.",
color: "error",
});
});
};
initWorkout(route.params.id as string);
</script>
<style>
.page-title {
color: #555;
}
</style>