Client - display converted speed/elevation in workout chart

This commit is contained in:
Sam
2021-11-14 13:33:07 +01:00
parent c0acff9e3d
commit 9b7f685992
6 changed files with 114 additions and 20 deletions

View File

@ -25,7 +25,7 @@ import {
} from '@/types/statistics'
import { incrementDate, getStartDate } from '@/utils/dates'
import { sportColors } from '@/utils/sports'
import { convertDistance, units } from '@/utils/units'
import { convertStatsDistance } from '@/utils/units'
const dateFormats: Record<string, Record<string, string>> = {
week: {
@ -103,13 +103,12 @@ export const convertStatsValue = (
switch (datasetKey) {
case 'total_distance':
case 'total_ascent':
case 'total_descent': {
const unitFrom = datasetKey === 'total_distance' ? 'km' : 'm'
const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom
return useImperialUnits
? convertDistance(value, unitFrom, unitTo, 2)
: value
}
case 'total_descent':
return convertStatsDistance(
datasetKey === 'total_distance' ? 'km' : 'm',
value,
useImperialUnits
)
default:
case 'nb_workouts':
case 'total_duration':

View File

@ -54,3 +54,12 @@ export const convertDistance = (
}
return convertedDistance
}
export const convertStatsDistance = (
unitFrom: TUnit,
value: number,
useImperialUnits: boolean
): number => {
const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom
return useImperialUnits ? convertDistance(value, unitFrom, unitTo, 2) : value
}

View File

@ -5,10 +5,12 @@ import {
TCoordinates,
TWorkoutDatasets,
} from '@/types/workouts'
import { convertStatsDistance } from '@/utils/units'
export const getDatasets = (
chartData: IWorkoutApiChartData[],
t: CallableFunction
t: CallableFunction,
useImperialUnits: boolean
): IWorkoutChartData => {
const datasets: TWorkoutDatasets = {
speed: {
@ -36,8 +38,12 @@ export const getDatasets = (
chartData.map((data) => {
distance_labels.push(data.distance)
duration_labels.push(data.duration)
datasets.speed.data.push(data.speed)
datasets.elevation.data.push(data.elevation)
datasets.speed.data.push(
convertStatsDistance('km', data.speed, useImperialUnits)
)
datasets.elevation.data.push(
convertStatsDistance('m', data.elevation, useImperialUnits)
)
coordinates.push({ latitude: data.latitude, longitude: data.longitude })
})