Client - add password reset + refacto

This commit is contained in:
Sam
2021-10-20 17:38:25 +02:00
parent c4eb9bdbf8
commit 8d93024a5f
66 changed files with 797 additions and 318 deletions

View File

@ -1,9 +1,9 @@
<template>
<div class="no-workouts box">
<div>
{{ t('workouts.NO_WORKOUTS') }}
{{ $t('workouts.NO_WORKOUTS') }}
<router-link to="/workouts/add">
{{ t('workouts.UPLOAD_FIRST_WORKOUT') }}
{{ $t('workouts.UPLOAD_FIRST_WORKOUT') }}
</router-link>
</div>
</div>
@ -11,14 +11,9 @@
<script lang="ts">
import { defineComponent } from 'vue'
import { useI18n } from 'vue-i18n'
export default defineComponent({
name: 'NoWorkouts',
setup() {
const { t } = useI18n()
return { t }
},
})
</script>

View File

@ -4,18 +4,18 @@
<div class="form">
<div class="form-items-group">
<div class="form-item">
<label> {{ t('workouts.FROM') }}: </label>
<label> {{ $t('workouts.FROM') }}: </label>
<input name="from" type="date" @change="handleFilterChange" />
</div>
<div class="form-item">
<label> {{ t('workouts.TO') }}: </label>
<label> {{ $t('workouts.TO') }}: </label>
<input name="to" type="date" @change="handleFilterChange" />
</div>
</div>
<div class="form-items-group">
<div class="form-item">
<label> {{ t('workouts.SPORT', 1) }}:</label>
<label> {{ $t('workouts.SPORT', 1) }}:</label>
<select name="sport_id" @change="handleFilterChange">
<option value="" />
<option
@ -31,7 +31,7 @@
<div class="form-items-group">
<div class="form-item">
<label> {{ t('workouts.DISTANCE') }} (km): </label>
<label> {{ $t('workouts.DISTANCE') }} (km): </label>
<div class="form-inputs-group">
<input
name="distance_from"
@ -40,7 +40,7 @@
step="1"
@change="handleFilterChange"
/>
<span>{{ t('workouts.TO') }}</span>
<span>{{ $t('workouts.TO') }}</span>
<input
name="distance_to"
type="number"
@ -54,7 +54,7 @@
<div class="form-items-group">
<div class="form-item">
<label> {{ t('workouts.DURATION') }} (km): </label>
<label> {{ $t('workouts.DURATION') }} (km): </label>
<div class="form-inputs-group">
<input
name="duration_from"
@ -63,7 +63,7 @@
placeholder="hh:mm"
type="text"
/>
<span>{{ t('workouts.TO') }}</span>
<span>{{ $t('workouts.TO') }}</span>
<input
name="duration_to"
@change="handleFilterChange"
@ -77,7 +77,7 @@
<div class="form-items-group">
<div class="form-item">
<label> {{ t('workouts.AVE_SPEED') }} (km): </label>
<label> {{ $t('workouts.AVE_SPEED') }} (km): </label>
<div class="form-inputs-group">
<input
min="0"
@ -86,7 +86,7 @@
step="1"
type="number"
/>
<span>{{ t('workouts.TO') }}</span>
<span>{{ $t('workouts.TO') }}</span>
<input
min="0"
name="ave_speed_to"
@ -100,7 +100,7 @@
<div class="form-items-group">
<div class="form-item">
<label> {{ t('workouts.MAX_SPEED') }} (km): </label>
<label> {{ $t('workouts.MAX_SPEED') }} (km): </label>
<div class="form-inputs-group">
<input
@ -110,7 +110,7 @@
step="1"
type="number"
/>
<span>{{ t('workouts.TO') }}</span>
<span>{{ $t('workouts.TO') }}</span>
<input
min="0"
name="max_speed_to"
@ -125,7 +125,7 @@
<div class="form-button">
<button class="confirm" @click="onFilter">
{{ t('buttons.FILTER') }}
{{ $t('buttons.FILTER') }}
</button>
</div>
</div>
@ -166,7 +166,7 @@
emit('filter', { ...params })
}
return { t, translatedSports, onFilter, handleFilterChange }
return { translatedSports, onFilter, handleFilterChange }
},
})
</script>

View File

@ -6,19 +6,19 @@
<thead>
<tr>
<th class="sport-col" />
<th>{{ capitalize(t('workouts.WORKOUT', 1)) }}</th>
<th>{{ capitalize(t('workouts.DATE')) }}</th>
<th>{{ capitalize(t('workouts.DISTANCE')) }}</th>
<th>{{ capitalize(t('workouts.DURATION')) }}</th>
<th>{{ capitalize(t('workouts.AVE_SPEED')) }}</th>
<th>{{ capitalize(t('workouts.MAX_SPEED')) }}</th>
<th>{{ capitalize($t('workouts.WORKOUT', 1)) }}</th>
<th>{{ capitalize($t('workouts.DATE')) }}</th>
<th>{{ capitalize($t('workouts.DISTANCE')) }}</th>
<th>{{ capitalize($t('workouts.DURATION')) }}</th>
<th>{{ capitalize($t('workouts.AVE_SPEED')) }}</th>
<th>{{ capitalize($t('workouts.MAX_SPEED')) }}</th>
</tr>
</thead>
<tbody>
<tr v-for="workout in workouts" :key="workout.id">
<td class="sport-col">
<span class="cell-heading">
{{ t('workouts.SPORT', 1) }}
{{ $t('workouts.SPORT', 1) }}
</span>
<SportImage
:title="
@ -32,7 +32,7 @@
</td>
<td class="workout-title">
<span class="cell-heading">
{{ capitalize(t('workouts.WORKOUT', 1)) }}
{{ capitalize($t('workouts.WORKOUT', 1)) }}
</span>
<router-link
class="nav-item"
@ -53,7 +53,7 @@
</td>
<td>
<span class="cell-heading">
{{ t('workouts.DATE') }}
{{ $t('workouts.DATE') }}
</span>
{{
format(
@ -64,25 +64,25 @@
</td>
<td class="text-right">
<span class="cell-heading">
{{ t('workouts.DISTANCE') }}
{{ $t('workouts.DISTANCE') }}
</span>
{{ Number(workout.distance).toFixed(2) }} km
</td>
<td class="text-right">
<span class="cell-heading">
{{ t('workouts.DURATION') }}
{{ $t('workouts.DURATION') }}
</span>
{{ workout.moving }}
</td>
<td class="text-right">
<span class="cell-heading">
{{ t('workouts.AVE_SPEED') }}
{{ $t('workouts.AVE_SPEED') }}
</span>
{{ workout.ave_speed }} km/h
</td>
<td class="text-right">
<span class="cell-heading">
{{ t('workouts.MAX_SPEED') }}
{{ $t('workouts.MAX_SPEED') }}
</span>
{{ workout.max_speed }} km/h
</td>
@ -94,7 +94,7 @@
<NoWorkouts v-if="workouts.length === 0" />
<div v-if="moreWorkoutsExist" class="more-workouts">
<button @click="loadMoreWorkouts">
{{ t('workouts.LOAD_MORE_WORKOUT') }}
{{ $t('workouts.LOAD_MORE_WORKOUT') }}
</button>
</div>
<div id="bottom" />
@ -112,9 +112,8 @@
watch,
onBeforeMount,
} 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 StaticMap from '@/components/Common/StaticMap.vue'
import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'
import { WORKOUTS_STORE } from '@/store/constants'
@ -147,7 +146,6 @@
},
setup(props) {
const store = useStore()
const { t } = useI18n()
const workouts: ComputedRef<IWorkout[]> = computed(
() => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]
)
@ -189,7 +187,6 @@
return {
moreWorkoutsExist,
t,
workouts,
capitalize,
format,