Client - display ascent record depending on user preference
This commit is contained in:
parent
81efdf53d5
commit
49b4c279cf
@ -42,7 +42,8 @@
|
|||||||
props.user.records,
|
props.user.records,
|
||||||
translateSports(props.sports, t),
|
translateSports(props.sports, t),
|
||||||
props.user.timezone,
|
props.user.timezone,
|
||||||
props.user.imperial_units
|
props.user.imperial_units,
|
||||||
|
props.user.display_ascent
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
</script>
|
</script>
|
||||||
|
@ -29,10 +29,20 @@ export const formatRecord = (
|
|||||||
)} ${distanceUnitTo}/h`
|
)} ${distanceUnitTo}/h`
|
||||||
break
|
break
|
||||||
case 'FD':
|
case 'FD':
|
||||||
value = `${convertDistance(+record.value, distanceUnitFrom, distanceUnitTo, 3)} ${distanceUnitTo}`
|
value = `${convertDistance(
|
||||||
|
+record.value,
|
||||||
|
distanceUnitFrom,
|
||||||
|
distanceUnitTo,
|
||||||
|
3
|
||||||
|
)} ${distanceUnitTo}`
|
||||||
break
|
break
|
||||||
case 'HA':
|
case 'HA':
|
||||||
value = `${convertDistance(+record.value, ascentUnitFrom, ascentUnitTo, 2)} ${ascentUnitTo}`
|
value = `${convertDistance(
|
||||||
|
+record.value,
|
||||||
|
ascentUnitFrom,
|
||||||
|
ascentUnitTo,
|
||||||
|
2
|
||||||
|
)} ${ascentUnitTo}`
|
||||||
break
|
break
|
||||||
case 'LD':
|
case 'LD':
|
||||||
value = record.value
|
value = record.value
|
||||||
@ -62,21 +72,24 @@ export const getRecordsBySports = (
|
|||||||
records: IRecord[],
|
records: IRecord[],
|
||||||
translatedSports: ITranslatedSport[],
|
translatedSports: ITranslatedSport[],
|
||||||
tz: string,
|
tz: string,
|
||||||
useImperialUnits: boolean
|
useImperialUnits: boolean,
|
||||||
|
display_ascent: boolean
|
||||||
): IRecordsBySports =>
|
): IRecordsBySports =>
|
||||||
records.reduce((sportList: IRecordsBySports, record) => {
|
records
|
||||||
const sport = translatedSports.find((s) => s.id === record.sport_id)
|
.filter((r) => (display_ascent ? true : r.record_type !== 'HA'))
|
||||||
if (sport && sport.label) {
|
.reduce((sportList: IRecordsBySports, record) => {
|
||||||
if (sportList[sport.translatedLabel] === void 0) {
|
const sport = translatedSports.find((s) => s.id === record.sport_id)
|
||||||
sportList[sport.translatedLabel] = {
|
if (sport && sport.label) {
|
||||||
label: sport.label,
|
if (sportList[sport.translatedLabel] === void 0) {
|
||||||
color: sport.color,
|
sportList[sport.translatedLabel] = {
|
||||||
records: [],
|
label: sport.label,
|
||||||
|
color: sport.color,
|
||||||
|
records: [],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
sportList[sport.translatedLabel].records.push(
|
||||||
|
formatRecord(record, tz, useImperialUnits)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
sportList[sport.translatedLabel].records.push(
|
return sportList
|
||||||
formatRecord(record, tz, useImperialUnits)
|
}, {})
|
||||||
)
|
|
||||||
}
|
|
||||||
return sportList
|
|
||||||
}, {})
|
|
||||||
|
@ -400,7 +400,8 @@ describe('getRecordsBySports', () => {
|
|||||||
testParams.input.records,
|
testParams.input.records,
|
||||||
translatedSports,
|
translatedSports,
|
||||||
testParams.input.tz,
|
testParams.input.tz,
|
||||||
false
|
false,
|
||||||
|
true
|
||||||
),
|
),
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@ -530,6 +531,7 @@ describe('getRecordsBySports after conversion', () => {
|
|||||||
testParams.input.records,
|
testParams.input.records,
|
||||||
translatedSports,
|
translatedSports,
|
||||||
testParams.input.tz,
|
testParams.input.tz,
|
||||||
|
true,
|
||||||
true
|
true
|
||||||
),
|
),
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
@ -539,3 +541,73 @@ describe('getRecordsBySports after conversion', () => {
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('getRecordsBySports with HA record', () => {
|
||||||
|
const testsParams = [
|
||||||
|
{
|
||||||
|
description: 'returns empty object if no records',
|
||||||
|
input: {
|
||||||
|
records: [],
|
||||||
|
tz: 'Europe/Paris',
|
||||||
|
},
|
||||||
|
expected: {},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description: 'returns records except HA record',
|
||||||
|
input: {
|
||||||
|
records: [
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
record_type: 'AS',
|
||||||
|
sport_id: 1,
|
||||||
|
user: 'admin',
|
||||||
|
value: 18,
|
||||||
|
workout_date: 'Sun, 07 Jul 2019 08:00:00 GMT',
|
||||||
|
workout_id: 'hvYBqYBRa7wwXpaStWR4V2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
record_type: 'HA',
|
||||||
|
sport_id: 1,
|
||||||
|
user: 'admin',
|
||||||
|
value: 235,
|
||||||
|
workout_date: 'Sun, 07 Jul 2019 08:00:00 GMT',
|
||||||
|
workout_id: 'hvYBqYBRa7wwXpaStWR4V2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tz: 'Europe/Paris',
|
||||||
|
},
|
||||||
|
expected: {
|
||||||
|
'Cycling (Sport)': {
|
||||||
|
color: null,
|
||||||
|
label: 'Cycling (Sport)',
|
||||||
|
records: [
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
record_type: 'AS',
|
||||||
|
value: '18 km/h',
|
||||||
|
workout_date: '2019/07/07',
|
||||||
|
workout_id: 'hvYBqYBRa7wwXpaStWR4V2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
testsParams.map((testParams) =>
|
||||||
|
it(testParams.description, () => {
|
||||||
|
assert.deepEqual(
|
||||||
|
getRecordsBySports(
|
||||||
|
testParams.input.records,
|
||||||
|
translatedSports,
|
||||||
|
testParams.input.tz,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore
|
||||||
|
testParams.expected
|
||||||
|
)
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user