Make changes to GUI to better support intervals
Change distance, timer and calories tile to change behaviour when current workout is an interval session (i.e. not JustRow). Expose data necessary for this in RowingStatistics. Remove miles option from formatter.
This commit is contained in:
parent
b494be4b9d
commit
dfc2881f36
|
|
@ -42,16 +42,11 @@ export function secondsToPace (seconds) {
|
|||
* Pipe for formatting distance in meters with units
|
||||
*
|
||||
* @param {number} value The distance in meters.
|
||||
* @param {boolean} showInMiles Boolean whether to use imperial metric (default: false).
|
||||
*/
|
||||
export function formatDistance (value, showInMiles = false) {
|
||||
if (showInMiles === false) {
|
||||
return value >= 10000
|
||||
? { distance: formatNumber((value / 1000), 2), unit: 'km' }
|
||||
: { distance: formatNumber(value), unit: 'm' }
|
||||
}
|
||||
|
||||
return { distance: formatNumber((value / 1609.344), 2), unit: 'mi' }
|
||||
export function formatDistance (value) {
|
||||
return value >= 10000
|
||||
? { distance: formatNumber((value / 1000), 2), unit: 'km' }
|
||||
: { distance: formatNumber(value), unit: 'm' }
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ export const DASHBOARD_METRICS = {
|
|||
displayName: 'Distance',
|
||||
size: 1,
|
||||
template: (metrics, config) => {
|
||||
const linearDistance = formatDistance(metrics?.totalLinearDistance)
|
||||
const distance = metrics?.sessiontype === 'Distance' ? Math.max(metrics?.intervalTargetDistance - metrics?.intervalLinearDistance, 0) : metrics?.totalLinearDistance
|
||||
const linearDistance = formatDistance(distance ?? 0)
|
||||
|
||||
return simpleMetricFactory(linearDistance.distance, linearDistance.unit, config.guiConfigs.showIcons ? icon_route : '')
|
||||
}
|
||||
|
|
@ -33,9 +34,25 @@ export const DASHBOARD_METRICS = {
|
|||
|
||||
totalStk: { displayName: 'Total strokes', size: 1, template: (metrics, config) => simpleMetricFactory(metrics?.totalNumberOfStrokes, 'stk', config.guiConfigs.showIcons ? icon_paddle : '') },
|
||||
|
||||
calories: { displayName: 'Calories', size: 1, template: (metrics, config) => simpleMetricFactory(formatNumber(metrics?.totalCalories), 'kcal', config.guiConfigs.showIcons ? icon_fire : '') },
|
||||
calories: {
|
||||
displayName: 'Calories',
|
||||
size: 1,
|
||||
template: (metrics, config) => {
|
||||
const calories = metrics?.sessiontype === 'Calories' ? Math.max(metrics?.intervalTargetCalories - metrics?.intervalLinearCalories, 0) : metrics?.totalCalories
|
||||
|
||||
timer: { displayName: 'Timer', size: 1, template: (metrics, config) => simpleMetricFactory(secondsToPace(metrics?.totalMovingTime), '', config.guiConfigs.showIcons ? icon_clock : '') },
|
||||
return simpleMetricFactory(formatNumber(calories ?? 0), 'kcal', config.guiConfigs.showIcons ? icon_fire : '')
|
||||
}
|
||||
},
|
||||
|
||||
timer: {
|
||||
displayName: 'Timer',
|
||||
size: 1,
|
||||
template: (metrics, config) => {
|
||||
const time = metrics?.sessiontype === 'Time' ? Math.max(metrics?.intervalTargetTime - metrics?.intervalMovingTime, 0) : metrics?.totalMovingTime
|
||||
|
||||
return simpleMetricFactory(secondsToPace(time ?? 0), '', config.guiConfigs.showIcons ? icon_clock : '')
|
||||
}
|
||||
},
|
||||
|
||||
distancePerStk: { displayName: 'Dist per Stroke', size: 1, template: (metrics, config) => simpleMetricFactory(formatNumber(metrics?.cycleDistance, 1), 'm', config.guiConfigs.showIcons ? rower_icon : '') },
|
||||
|
||||
|
|
|
|||
|
|
@ -380,8 +380,9 @@ function createRowingStatistics (config) {
|
|||
totalLinearDistance: totalLinearDistance > 0 ? totalLinearDistance : 0, // meters
|
||||
intervalNumber: Math.max(currentIntervalNumber + 1, 0), // Interval number
|
||||
intervalMovingTime: totalMovingTime - intervalPrevAccumulatedTime,
|
||||
intervalRemainingTime: intervalTargetTime - totalMovingTime,
|
||||
intervalTargetTime: intervalTargetTime > intervalPrevAccumulatedTime ? intervalTargetTime - intervalPrevAccumulatedTime : 0,
|
||||
intervalLinearDistance: totalLinearDistance - intervalPrevAccumulatedDistance,
|
||||
intervalTargetDistance: intervalTargetDistance > intervalPrevAccumulatedDistance ? intervalTargetDistance - intervalPrevAccumulatedDistance : 0,
|
||||
strokeCalories: strokeCalories > 0 ? strokeCalories : 0, // kCal
|
||||
strokeWork: strokeWork > 0 ? strokeWork : 0, // Joules
|
||||
totalCalories: calories.yAtSeriesEnd() > 0 ? calories.yAtSeriesEnd() : 0, // kcal
|
||||
|
|
|
|||
Loading…
Reference in New Issue