,
- workoutId: string | string[]
+ payload: IWorkoutPayload
): void
}
diff --git a/fittrackee_client/src/types/workouts.ts b/fittrackee_client/src/types/workouts.ts
index 18e03fb8..d6df77f3 100644
--- a/fittrackee_client/src/types/workouts.ts
+++ b/fittrackee_client/src/types/workouts.ts
@@ -73,6 +73,35 @@ export interface IWorkout {
workout_date: string
}
+export interface IWorkoutObject {
+ ascent: number | null
+ aveSpeed: number
+ descent: number | null
+ distance: number
+ duration: string
+ maxAlt: number | null
+ maxSpeed: number
+ minAlt: number | null
+ moving: string
+ nextUrl: string | null
+ pauses: string | null
+ previousUrl: string | null
+ records: IRecord[]
+ segmentId: number | null
+ title: string
+ type: string
+ workoutDate: string
+ weatherEnd: IWeather | null
+ workoutId: string
+ weatherStart: IWeather | null
+ workoutTime: string
+}
+
+export interface IWorkoutPayload {
+ workoutId: string | string[]
+ segmentId?: string | string[]
+}
+
export interface IWorkoutsPayload {
from?: string
to?: string
diff --git a/fittrackee_client/src/views/Workout.vue b/fittrackee_client/src/views/Workout.vue
index a1c8476d..b1a6c4f4 100644
--- a/fittrackee_client/src/views/Workout.vue
+++ b/fittrackee_client/src/views/Workout.vue
@@ -14,6 +14,7 @@
:sports="sports"
:authUser="authUser"
:markerCoordinates="markerCoordinates"
+ :displaySegment="displaySegment"
/>
-
+
+
@@ -40,6 +49,7 @@
computed,
defineComponent,
ref,
+ watch,
onBeforeMount,
onUnmounted,
} from 'vue'
@@ -50,9 +60,10 @@
import WorkoutChart from '@/components/Workout/WorkoutChart/index.vue'
import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'
import WorkoutNotes from '@/components/Workout/WorkoutNotes.vue'
+ import WorkoutSegments from '@/components/Workout/WorkoutSegments.vue'
import { SPORTS_STORE, USER_STORE, WORKOUTS_STORE } from '@/store/constants'
import { IAuthUserProfile } from '@/types/user'
- import { IWorkoutData, TCoordinates } from '@/types/workouts'
+ import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'
import { useStore } from '@/use/useStore'
export default defineComponent({
@@ -63,16 +74,25 @@
WorkoutChart,
WorkoutDetail,
WorkoutNotes,
+ WorkoutSegments,
},
- setup() {
+ props: {
+ displaySegment: {
+ type: Boolean,
+ required: true,
+ },
+ },
+ setup(props) {
const route = useRoute()
const store = useStore()
- onBeforeMount(() =>
- store.dispatch(
- WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA,
- route.params.workoutId
- )
- )
+
+ onBeforeMount(() => {
+ const payload: IWorkoutPayload = { workoutId: route.params.workoutId }
+ if (props.displaySegment) {
+ payload.segmentId = route.params.segmentId
+ }
+ store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)
+ })
const workoutData: ComputedRef = computed(
() => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]
@@ -93,9 +113,31 @@
}
}
+ watch(
+ () => route.params.workoutId,
+ async (newWorkoutId) => {
+ store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {
+ workoutId: newWorkoutId,
+ })
+ }
+ )
+ watch(
+ () => route.params.segmentId,
+ async (newSegmentId) => {
+ const payload: IWorkoutPayload = {
+ workoutId: route.params.workoutId,
+ }
+ if (newSegmentId) {
+ payload.segmentId = newSegmentId
+ }
+ store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)
+ }
+ )
+
onUnmounted(() => {
store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)
})
+
return {
authUser,
markerCoordinates,