Client - add password reset + refacto
This commit is contained in:
@ -5,8 +5,8 @@
|
||||
:class="{ inactive: !workoutObject.previousUrl }"
|
||||
:title="
|
||||
workoutObject.previousUrl
|
||||
? t(`workouts.PREVIOUS_${workoutObject.type}`)
|
||||
: t(`workouts.NO_PREVIOUS_${workoutObject.type}`)
|
||||
? $t(`workouts.PREVIOUS_${workoutObject.type}`)
|
||||
: $t(`workouts.NO_PREVIOUS_${workoutObject.type}`)
|
||||
"
|
||||
@click="
|
||||
workoutObject.previousUrl
|
||||
@ -42,7 +42,7 @@
|
||||
<span class="workout-segment">
|
||||
—
|
||||
<i class="fa fa-map-marker" aria-hidden="true" />
|
||||
{{ t('workouts.SEGMENT') }}
|
||||
{{ $t('workouts.SEGMENT') }}
|
||||
{{ workoutObject.segmentId + 1 }}
|
||||
</span>
|
||||
</div>
|
||||
@ -57,7 +57,7 @@
|
||||
params: { workoutId: workoutObject.workoutId },
|
||||
}"
|
||||
>
|
||||
> {{ t('workouts.BACK_TO_WORKOUT') }}
|
||||
> {{ $t('workouts.BACK_TO_WORKOUT') }}
|
||||
</router-link></span
|
||||
>
|
||||
</div>
|
||||
@ -68,8 +68,8 @@
|
||||
:class="{ inactive: !workoutObject.nextUrl }"
|
||||
:title="
|
||||
workoutObject.nextUrl
|
||||
? t(`workouts.NEXT_${workoutObject.type}`)
|
||||
: t(`workouts.NO_NEXT_${workoutObject.type}`)
|
||||
? $t(`workouts.NEXT_${workoutObject.type}`)
|
||||
: $t(`workouts.NO_NEXT_${workoutObject.type}`)
|
||||
"
|
||||
@click="
|
||||
workoutObject.nextUrl ? $router.push(workoutObject.nextUrl) : null
|
||||
@ -82,9 +82,8 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { PropType, defineComponent } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import SportImage from '@/components/Common/SportImage/index.vue'
|
||||
import SportImage from '@/components/Common/Images/SportImage/index.vue'
|
||||
import { ISport } from '@/types/sports'
|
||||
import { IWorkoutObject } from '@/types/workouts'
|
||||
|
||||
@ -105,8 +104,7 @@
|
||||
},
|
||||
emits: ['displayModal'],
|
||||
setup(props, { emit }) {
|
||||
const { t } = useI18n()
|
||||
return { t, emit }
|
||||
return { emit }
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
@ -2,25 +2,26 @@
|
||||
<div id="workout-info">
|
||||
<div class="workout-data">
|
||||
<i class="fa fa-clock-o" aria-hidden="true" />
|
||||
{{ t('workouts.DURATION') }}: <span>{{ workoutObject.moving }}</span>
|
||||
{{ $t('workouts.DURATION') }}: <span>{{ workoutObject.moving }}</span>
|
||||
<WorkoutRecord :workoutObject="workoutObject" record_type="LD" />
|
||||
<div v-if="withPause">
|
||||
({{ t('workouts.PAUSES') }}: <span>{{ workoutObject.pauses }}</span> -
|
||||
{{ t('workouts.TOTAL_DURATION') }}:
|
||||
({{ $t('workouts.PAUSES') }}: <span>{{ workoutObject.pauses }}</span> -
|
||||
{{ $t('workouts.TOTAL_DURATION') }}:
|
||||
<span>{{ workoutObject.duration }})</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="workout-data">
|
||||
<i class="fa fa-road" aria-hidden="true" />
|
||||
{{ t('workouts.DISTANCE') }}: <span>{{ workoutObject.distance }} km</span>
|
||||
{{ $t('workouts.DISTANCE') }}:
|
||||
<span>{{ workoutObject.distance }} km</span>
|
||||
<WorkoutRecord :workoutObject="workoutObject" record_type="FD" />
|
||||
</div>
|
||||
<div class="workout-data">
|
||||
<i class="fa fa-tachometer" aria-hidden="true" />
|
||||
{{ t('workouts.AVERAGE_SPEED') }}:
|
||||
{{ $t('workouts.AVERAGE_SPEED') }}:
|
||||
<span>{{ workoutObject.aveSpeed }} km/h</span
|
||||
><WorkoutRecord :workoutObject="workoutObject" record_type="AS" /><br />
|
||||
{{ t('workouts.MAX_SPEED') }}:
|
||||
{{ $t('workouts.MAX_SPEED') }}:
|
||||
<span>{{ workoutObject.maxSpeed }} km/h</span>
|
||||
<WorkoutRecord :workoutObject="workoutObject" record_type="MS" />
|
||||
</div>
|
||||
@ -31,11 +32,11 @@
|
||||
<img
|
||||
class="mountains"
|
||||
src="/img/workouts/mountains.svg"
|
||||
:alt="t('workouts.ELEVATION')"
|
||||
:alt="$t('workouts.ELEVATION')"
|
||||
/>
|
||||
{{ t('workouts.MIN_ALTITUDE') }}: <span>{{ workoutObject.minAlt }} m</span
|
||||
><br />
|
||||
{{ t('workouts.MAX_ALTITUDE') }}:
|
||||
{{ $t('workouts.MIN_ALTITUDE') }}:
|
||||
<span>{{ workoutObject.minAlt }} m</span><br />
|
||||
{{ $t('workouts.MAX_ALTITUDE') }}:
|
||||
<span>{{ workoutObject.maxAlt }} m</span>
|
||||
</div>
|
||||
<div
|
||||
@ -43,9 +44,9 @@
|
||||
v-if="workoutObject.ascent !== null && workoutObject.descent !== null"
|
||||
>
|
||||
<i class="fa fa-location-arrow" aria-hidden="true" />
|
||||
{{ t('workouts.ASCENT') }}: <span>{{ workoutObject.ascent }} m</span
|
||||
{{ $t('workouts.ASCENT') }}: <span>{{ workoutObject.ascent }} m</span
|
||||
><br />
|
||||
{{ t('workouts.DESCENT') }}: <span>{{ workoutObject.descent }} m</span>
|
||||
{{ $t('workouts.DESCENT') }}: <span>{{ workoutObject.descent }} m</span>
|
||||
</div>
|
||||
<WorkoutWeather :workoutObject="workoutObject" />
|
||||
</div>
|
||||
@ -53,7 +54,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { PropType, computed, defineComponent } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'
|
||||
import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'
|
||||
@ -72,14 +72,12 @@
|
||||
},
|
||||
},
|
||||
setup(props) {
|
||||
const { t } = useI18n()
|
||||
return {
|
||||
withPause: computed(
|
||||
() =>
|
||||
props.workoutObject.pauses !== '0:00:00' &&
|
||||
props.workoutObject.pauses !== null
|
||||
),
|
||||
t,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
@ -23,7 +23,7 @@
|
||||
/>
|
||||
</LMap>
|
||||
</div>
|
||||
<div v-else class="no-map">{{ t('workouts.NO_MAP') }}</div>
|
||||
<div v-else class="no-map">{{ $t('workouts.NO_MAP') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -32,7 +32,6 @@
|
||||
import { gpx } from '@tmcw/togeojson'
|
||||
import { LGeoJson, LMap, LMarker, LTileLayer } from '@vue-leaflet/vue-leaflet'
|
||||
import { ComputedRef, PropType, computed, defineComponent, ref } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import { ROOT_STORE } from '@/store/constants'
|
||||
import { IAppConfig } from '@/types/application'
|
||||
@ -59,7 +58,6 @@
|
||||
},
|
||||
},
|
||||
setup(props) {
|
||||
const { t } = useI18n()
|
||||
const store = useStore()
|
||||
|
||||
function getGeoJson(gpxContent: string): GeoJSONData {
|
||||
@ -120,7 +118,6 @@
|
||||
bounds,
|
||||
center,
|
||||
geoJson,
|
||||
t,
|
||||
workoutMap,
|
||||
fitBounds,
|
||||
getApiUrl,
|
||||
|
@ -9,17 +9,17 @@
|
||||
<th />
|
||||
<th>
|
||||
<div class="weather-th">
|
||||
{{ t('workouts.START') }}
|
||||
{{ $t('workouts.START') }}
|
||||
<img
|
||||
class="weather-img"
|
||||
:src="`/img/weather/${workoutObject.weatherStart.icon}.svg`"
|
||||
:alt="
|
||||
t(
|
||||
$t(
|
||||
`workouts.WEATHER.DARK_SKY.${workoutObject.weatherStart.icon}`
|
||||
)
|
||||
"
|
||||
:title="
|
||||
t(
|
||||
$t(
|
||||
`workouts.WEATHER.DARK_SKY.${workoutObject.weatherStart.icon}`
|
||||
)
|
||||
"
|
||||
@ -28,17 +28,17 @@
|
||||
</th>
|
||||
<th>
|
||||
<div class="weather-th">
|
||||
{{ t('workouts.END') }}
|
||||
{{ $t('workouts.END') }}
|
||||
<img
|
||||
class="weather-img"
|
||||
:src="`/img/weather/${workoutObject.weatherEnd.icon}.svg`"
|
||||
:alt="
|
||||
t(
|
||||
$t(
|
||||
`workouts.WEATHER.DARK_SKY.${workoutObject.weatherEnd.icon}`
|
||||
)
|
||||
"
|
||||
:title="
|
||||
t(
|
||||
$t(
|
||||
`workouts.WEATHER.DARK_SKY.${workoutObject.weatherEnd.icon}`
|
||||
)
|
||||
"
|
||||
@ -53,8 +53,8 @@
|
||||
<img
|
||||
class="weather-img weather-img-small"
|
||||
src="/img/weather/temperature.svg"
|
||||
:alt="t(`workouts.WEATHER.TEMPERATURE`)"
|
||||
:title="t(`workouts.WEATHER.TEMPERATURE`)"
|
||||
:alt="$t(`workouts.WEATHER.TEMPERATURE`)"
|
||||
:title="$t(`workouts.WEATHER.TEMPERATURE`)"
|
||||
/>
|
||||
</td>
|
||||
<td>
|
||||
@ -69,8 +69,8 @@
|
||||
<img
|
||||
class="weather-img weather-img-small"
|
||||
src="/img/weather/pour-rain.svg"
|
||||
:alt="t(`workouts.WEATHER.HUMIDITY`)"
|
||||
:title="t(`workouts.WEATHER.HUMIDITY`)"
|
||||
:alt="$t(`workouts.WEATHER.HUMIDITY`)"
|
||||
:title="$t(`workouts.WEATHER.HUMIDITY`)"
|
||||
/>
|
||||
</td>
|
||||
<td>
|
||||
@ -85,8 +85,8 @@
|
||||
<img
|
||||
class="weather-img weather-img-small"
|
||||
src="/img/weather/breeze.svg"
|
||||
:alt="t(`workouts.WEATHER.WIND`)"
|
||||
:title="t(`workouts.WEATHER.WIND`)"
|
||||
:alt="$t(`workouts.WEATHER.WIND`)"
|
||||
:title="$t(`workouts.WEATHER.WIND`)"
|
||||
/>
|
||||
</td>
|
||||
<td>{{ Number(workoutObject.weatherStart.wind).toFixed(1) }}m/s</td>
|
||||
@ -99,9 +99,9 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, PropType } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import { IWorkoutObject } from '@/types/workouts'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'WorkoutWeather',
|
||||
props: {
|
||||
@ -110,10 +110,6 @@
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
setup() {
|
||||
const { t } = useI18n()
|
||||
return { t }
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
|
@ -2,8 +2,8 @@
|
||||
<div class="workout-detail">
|
||||
<Modal
|
||||
v-if="displayModal"
|
||||
:title="t('common.CONFIRMATION')"
|
||||
:message="t('workouts.WORKOUT_DELETION_CONFIRMATION')"
|
||||
:title="$t('common.CONFIRMATION')"
|
||||
:message="$t('workouts.WORKOUT_DELETION_CONFIRMATION')"
|
||||
@confirmAction="deleteWorkout(workoutObject.workoutId)"
|
||||
@cancelAction="updateDisplayModal(false)"
|
||||
/>
|
||||
@ -36,7 +36,6 @@
|
||||
ref,
|
||||
watch,
|
||||
} from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useRoute } from 'vue-router'
|
||||
|
||||
import Card from '@/components/Common/Card.vue'
|
||||
@ -90,7 +89,6 @@
|
||||
setup(props) {
|
||||
const route = useRoute()
|
||||
const store = useStore()
|
||||
const { t } = useI18n()
|
||||
|
||||
function getWorkoutObjectUrl(
|
||||
workout: IWorkout,
|
||||
@ -196,7 +194,6 @@
|
||||
getWorkoutObject(workout.value, segment.value)
|
||||
),
|
||||
displayModal,
|
||||
t,
|
||||
deleteWorkout,
|
||||
updateDisplayModal,
|
||||
}
|
||||
|
Reference in New Issue
Block a user