Client - fix record order in dashboard cards

This commit is contained in:
Sam 2022-07-03 16:19:59 +02:00
parent fe1d691626
commit f9e03dd139
4 changed files with 38 additions and 6 deletions

View File

@ -6,9 +6,13 @@
{{ sportTranslatedLabel }} {{ sportTranslatedLabel }}
</template> </template>
<template #content> <template #content>
<div class="record" v-for="record in records.records" :key="record.id"> <div
class="record"
v-for="record in getTranslatedRecords(records.records)"
:key="record.id"
>
<span class="record-type"> <span class="record-type">
{{ $t(`workouts.RECORD_${record.record_type}`) }} {{ record.label }}
</span> </span>
<span class="record-value">{{ record.value }}</span> <span class="record-value">{{ record.value }}</span>
<span class="record-date"> <span class="record-date">
@ -29,8 +33,10 @@
<script setup lang="ts"> <script setup lang="ts">
import { toRefs } from 'vue' import { toRefs } from 'vue'
import { useI18n } from 'vue-i18n'
import { IRecordsBySports } from '@/types/workouts' import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'
import { sortRecords } from '@/utils/records'
interface Props { interface Props {
records: IRecordsBySports records: IRecordsBySports
@ -39,6 +45,19 @@
const props = defineProps<Props>() const props = defineProps<Props>()
const { records, sportTranslatedLabel } = toRefs(props) const { records, sportTranslatedLabel } = toRefs(props)
const { t } = useI18n()
function getTranslatedRecords(records: IRecord[]): ICardRecord[] {
const translatedRecords: ICardRecord[] = []
records.map((record) => {
translatedRecords.push({
...record,
label: t(`workouts.RECORD_${record.record_type}`),
})
})
return translatedRecords.sort(sortRecords)
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -25,13 +25,13 @@
import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue' import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue'
import { ISport } from '@/types/sports' import { ISport } from '@/types/sports'
import { IUserProfile } from '@/types/user' import { IAuthUserProfile } from '@/types/user'
import { getRecordsBySports } from '@/utils/records' import { getRecordsBySports } from '@/utils/records'
import { translateSports } from '@/utils/sports' import { translateSports } from '@/utils/sports'
interface Props { interface Props {
sports: ISport[] sports: ISport[]
user: IUserProfile user: IAuthUserProfile
} }
const props = defineProps<Props>() const props = defineProps<Props>()

View File

@ -16,6 +16,13 @@ export interface IWorkoutSegment {
workout_id: string workout_id: string
} }
export interface ICardRecord {
id: number
value: number | string
workout_date: string
workout_id: string
label: string
}
export interface IRecord { export interface IRecord {
id: number id: number
record_type: string record_type: string

View File

@ -1,6 +1,6 @@
import { ITranslatedSport } from '@/types/sports' import { ITranslatedSport } from '@/types/sports'
import { TUnit } from '@/types/units' import { TUnit } from '@/types/units'
import { IRecord, IRecordsBySports } from '@/types/workouts' import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'
import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates' import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'
import { convertDistance, units } from '@/utils/units' import { convertDistance, units } from '@/utils/units'
@ -45,6 +45,12 @@ export const formatRecord = (
} }
} }
export const sortRecords = (a: ICardRecord, b: ICardRecord): number => {
const recordALabel = a.label.toLowerCase()
const recordBLabel = b.label.toLowerCase()
return recordALabel > recordBLabel ? 1 : recordALabel < recordBLabel ? -1 : 0
}
export const getRecordsBySports = ( export const getRecordsBySports = (
records: IRecord[], records: IRecord[],
translatedSports: ITranslatedSport[], translatedSports: ITranslatedSport[],