diff --git a/website/src/lib/components/WithUnits.svelte b/website/src/lib/components/WithUnits.svelte index 3212872c..73171b13 100644 --- a/website/src/lib/components/WithUnits.svelte +++ b/website/src/lib/components/WithUnits.svelte @@ -2,9 +2,12 @@ import { settings } from '$lib/db'; import { celsiusToFahrenheit, - distancePerHourToSecondsPerDistance, - kilometersToMiles, - metersToFeet, + getConvertedDistance, + getConvertedElevation, + getConvertedVelocity, + getDistanceUnits, + getElevationUnits, + getVelocityUnits, secondsToHHMMSS } from '$lib/units'; @@ -20,31 +23,18 @@ {#if type === 'distance'} - {#if $distanceUnits === 'metric'} - {value.toFixed(decimals ?? 2)} {showUnits ? $_('units.kilometers') : ''} - {:else} - {kilometersToMiles(value).toFixed(decimals ?? 2)} {showUnits ? $_('units.miles') : ''} - {/if} + { getConvertedDistance(value, $distanceUnits).toFixed(decimals ?? 2) } + { showUnits ? getDistanceUnits($distanceUnits) : '' } {:else if type === 'elevation'} - {#if $distanceUnits === 'metric'} - {value.toFixed(decimals ?? 0)} {showUnits ? $_('units.meters') : ''} - {:else} - {metersToFeet(value).toFixed(decimals ?? 0)} {showUnits ? $_('units.feet') : ''} - {/if} + { getConvertedElevation(value, $distanceUnits).toFixed(decimals ?? 2) } + { showUnits ? getElevationUnits($distanceUnits) : '' } {:else if type === 'speed'} - {#if $distanceUnits === 'metric'} - {#if $velocityUnits === 'speed'} - {value.toFixed(decimals ?? 2)} {showUnits ? $_('units.kilometers_per_hour') : ''} - {:else} - {secondsToHHMMSS(distancePerHourToSecondsPerDistance(value))} - {showUnits ? $_('units.minutes_per_kilometer') : ''} - {/if} - {:else if $velocityUnits === 'speed'} - {kilometersToMiles(value).toFixed(decimals ?? 2)} - {showUnits ? $_('units.miles_per_hour') : ''} + {#if $velocityUnits === 'speed'} + { getConvertedVelocity(value, $velocityUnits, $distanceUnits).toFixed(decimals ?? 2) } + { showUnits ? getVelocityUnits($velocityUnits, $distanceUnits) : '' } {:else} - {secondsToHHMMSS(distancePerHourToSecondsPerDistance(kilometersToMiles(value)))} - {showUnits ? $_('units.minutes_per_mile') : ''} + { secondsToHHMMSS(getConvertedVelocity(value, $velocityUnits, $distanceUnits)) } + { showUnits ? getVelocityUnits($velocityUnits, $distanceUnits) : '' } {/if} {:else if type === 'temperature'} {#if $temperatureUnits === 'celsius'} @@ -53,6 +43,6 @@ {celsiusToFahrenheit(value)} {showUnits ? $_('units.fahrenheit') : ''} {/if} {:else if type === 'time'} - {secondsToHHMMSS(value)} + { secondsToHHMMSS(value) } {/if} diff --git a/website/src/lib/units.ts b/website/src/lib/units.ts index 5e674898..6a46c4b0 100644 --- a/website/src/lib/units.ts +++ b/website/src/lib/units.ts @@ -96,8 +96,8 @@ export function getTemperatureWithUnits(value: number, convert: boolean = true) } // Get the units -export function getDistanceUnits() { - switch (get(distanceUnits)) { +export function getDistanceUnits(currentDistanceUnits = get(distanceUnits)) { + switch (currentDistanceUnits) { case 'metric': return get(_)('units.kilometers'); case 'imperial': @@ -107,9 +107,9 @@ export function getDistanceUnits() { } } -export function getVelocityUnits() { - if (get(velocityUnits) === 'speed') { - switch (get(distanceUnits)) { +export function getVelocityUnits(currentVelocityUnits = get(velocityUnits), currentDistanceUnits = get(distanceUnits)) { + if (currentVelocityUnits === 'speed') { + switch (currentDistanceUnits) { case 'metric': return get(_)('units.kilometers_per_hour'); case 'imperial': @@ -118,7 +118,7 @@ export function getVelocityUnits() { return get(_)('units.knots'); } } else { - switch (get(distanceUnits)) { + switch (currentDistanceUnits) { case 'metric': return get(_)('units.minutes_per_kilometer'); case 'imperial': @@ -129,8 +129,8 @@ export function getVelocityUnits() { } } -export function getElevationUnits() { - return get(distanceUnits) === 'metric' ? get(_)('units.meters') : get(_)('units.feet'); +export function getElevationUnits(currentDistanceUnits = get(distanceUnits)) { + return currentDistanceUnits === 'metric' ? get(_)('units.meters') : get(_)('units.feet'); } export function getHeartRateUnits() { @@ -150,8 +150,8 @@ export function getTemperatureUnits() { } // Convert only the value -export function getConvertedDistance(value: number) { - switch (get(distanceUnits)) { +export function getConvertedDistance(value: number, currentDistanceUnits = get(distanceUnits)) { + switch (currentDistanceUnits) { case 'metric': return value; case 'imperial': @@ -165,9 +165,9 @@ export function getConvertedElevation(value: number) { return get(distanceUnits) === 'metric' ? value : metersToFeet(value); } -export function getConvertedVelocity(value: number) { - if (get(velocityUnits) === 'speed') { - switch (get(distanceUnits)) { +export function getConvertedVelocity(value: number, currentVelocityUnits = get(velocityUnits), currentDistanceUnits = get(distanceUnits)) { + if (currentVelocityUnits === 'speed') { + switch (currentDistanceUnits) { case 'metric': return value; case 'imperial': @@ -176,7 +176,7 @@ export function getConvertedVelocity(value: number) { return kilometersToNauticalMiles(value); } } else { - switch (get(distanceUnits)) { + switch (currentDistanceUnits) { case 'metric': return distancePerHourToSecondsPerDistance(value); case 'imperial': @@ -189,4 +189,4 @@ export function getConvertedVelocity(value: number) { export function getConvertedTemperature(value: number) { return get(temperatureUnits) === 'celsius' ? value : celsiusToFahrenheit(value); -} \ No newline at end of file +}