Make panel reactive to unit changes even after pushing down conversions into utility functions.
This commit is contained in:
parent
f39ae57b09
commit
990a473dff
2 changed files with 31 additions and 41 deletions
|
|
@ -2,9 +2,12 @@
|
||||||
import { settings } from '$lib/db';
|
import { settings } from '$lib/db';
|
||||||
import {
|
import {
|
||||||
celsiusToFahrenheit,
|
celsiusToFahrenheit,
|
||||||
distancePerHourToSecondsPerDistance,
|
getConvertedDistance,
|
||||||
kilometersToMiles,
|
getConvertedElevation,
|
||||||
metersToFeet,
|
getConvertedVelocity,
|
||||||
|
getDistanceUnits,
|
||||||
|
getElevationUnits,
|
||||||
|
getVelocityUnits,
|
||||||
secondsToHHMMSS
|
secondsToHHMMSS
|
||||||
} from '$lib/units';
|
} from '$lib/units';
|
||||||
|
|
||||||
|
|
@ -20,31 +23,18 @@
|
||||||
|
|
||||||
<span class={$$props.class}>
|
<span class={$$props.class}>
|
||||||
{#if type === 'distance'}
|
{#if type === 'distance'}
|
||||||
{#if $distanceUnits === 'metric'}
|
{ getConvertedDistance(value, $distanceUnits).toFixed(decimals ?? 2) }
|
||||||
{value.toFixed(decimals ?? 2)} {showUnits ? $_('units.kilometers') : ''}
|
{ showUnits ? getDistanceUnits($distanceUnits) : '' }
|
||||||
{:else}
|
|
||||||
{kilometersToMiles(value).toFixed(decimals ?? 2)} {showUnits ? $_('units.miles') : ''}
|
|
||||||
{/if}
|
|
||||||
{:else if type === 'elevation'}
|
{:else if type === 'elevation'}
|
||||||
{#if $distanceUnits === 'metric'}
|
{ getConvertedElevation(value, $distanceUnits).toFixed(decimals ?? 2) }
|
||||||
{value.toFixed(decimals ?? 0)} {showUnits ? $_('units.meters') : ''}
|
{ showUnits ? getElevationUnits($distanceUnits) : '' }
|
||||||
{:else}
|
|
||||||
{metersToFeet(value).toFixed(decimals ?? 0)} {showUnits ? $_('units.feet') : ''}
|
|
||||||
{/if}
|
|
||||||
{:else if type === 'speed'}
|
{:else if type === 'speed'}
|
||||||
{#if $distanceUnits === 'metric'}
|
|
||||||
{#if $velocityUnits === 'speed'}
|
{#if $velocityUnits === 'speed'}
|
||||||
{value.toFixed(decimals ?? 2)} {showUnits ? $_('units.kilometers_per_hour') : ''}
|
{ getConvertedVelocity(value, $velocityUnits, $distanceUnits).toFixed(decimals ?? 2) }
|
||||||
|
{ showUnits ? getVelocityUnits($velocityUnits, $distanceUnits) : '' }
|
||||||
{:else}
|
{:else}
|
||||||
{secondsToHHMMSS(distancePerHourToSecondsPerDistance(value))}
|
{ secondsToHHMMSS(getConvertedVelocity(value, $velocityUnits, $distanceUnits)) }
|
||||||
{showUnits ? $_('units.minutes_per_kilometer') : ''}
|
{ showUnits ? getVelocityUnits($velocityUnits, $distanceUnits) : '' }
|
||||||
{/if}
|
|
||||||
{:else if $velocityUnits === 'speed'}
|
|
||||||
{kilometersToMiles(value).toFixed(decimals ?? 2)}
|
|
||||||
{showUnits ? $_('units.miles_per_hour') : ''}
|
|
||||||
{:else}
|
|
||||||
{secondsToHHMMSS(distancePerHourToSecondsPerDistance(kilometersToMiles(value)))}
|
|
||||||
{showUnits ? $_('units.minutes_per_mile') : ''}
|
|
||||||
{/if}
|
{/if}
|
||||||
{:else if type === 'temperature'}
|
{:else if type === 'temperature'}
|
||||||
{#if $temperatureUnits === 'celsius'}
|
{#if $temperatureUnits === 'celsius'}
|
||||||
|
|
@ -53,6 +43,6 @@
|
||||||
{celsiusToFahrenheit(value)} {showUnits ? $_('units.fahrenheit') : ''}
|
{celsiusToFahrenheit(value)} {showUnits ? $_('units.fahrenheit') : ''}
|
||||||
{/if}
|
{/if}
|
||||||
{:else if type === 'time'}
|
{:else if type === 'time'}
|
||||||
{secondsToHHMMSS(value)}
|
{ secondsToHHMMSS(value) }
|
||||||
{/if}
|
{/if}
|
||||||
</span>
|
</span>
|
||||||
|
|
|
||||||
|
|
@ -96,8 +96,8 @@ export function getTemperatureWithUnits(value: number, convert: boolean = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the units
|
// Get the units
|
||||||
export function getDistanceUnits() {
|
export function getDistanceUnits(currentDistanceUnits = get(distanceUnits)) {
|
||||||
switch (get(distanceUnits)) {
|
switch (currentDistanceUnits) {
|
||||||
case 'metric':
|
case 'metric':
|
||||||
return get(_)('units.kilometers');
|
return get(_)('units.kilometers');
|
||||||
case 'imperial':
|
case 'imperial':
|
||||||
|
|
@ -107,9 +107,9 @@ export function getDistanceUnits() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getVelocityUnits() {
|
export function getVelocityUnits(currentVelocityUnits = get(velocityUnits), currentDistanceUnits = get(distanceUnits)) {
|
||||||
if (get(velocityUnits) === 'speed') {
|
if (currentVelocityUnits === 'speed') {
|
||||||
switch (get(distanceUnits)) {
|
switch (currentDistanceUnits) {
|
||||||
case 'metric':
|
case 'metric':
|
||||||
return get(_)('units.kilometers_per_hour');
|
return get(_)('units.kilometers_per_hour');
|
||||||
case 'imperial':
|
case 'imperial':
|
||||||
|
|
@ -118,7 +118,7 @@ export function getVelocityUnits() {
|
||||||
return get(_)('units.knots');
|
return get(_)('units.knots');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (get(distanceUnits)) {
|
switch (currentDistanceUnits) {
|
||||||
case 'metric':
|
case 'metric':
|
||||||
return get(_)('units.minutes_per_kilometer');
|
return get(_)('units.minutes_per_kilometer');
|
||||||
case 'imperial':
|
case 'imperial':
|
||||||
|
|
@ -129,8 +129,8 @@ export function getVelocityUnits() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getElevationUnits() {
|
export function getElevationUnits(currentDistanceUnits = get(distanceUnits)) {
|
||||||
return get(distanceUnits) === 'metric' ? get(_)('units.meters') : get(_)('units.feet');
|
return currentDistanceUnits === 'metric' ? get(_)('units.meters') : get(_)('units.feet');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getHeartRateUnits() {
|
export function getHeartRateUnits() {
|
||||||
|
|
@ -150,8 +150,8 @@ export function getTemperatureUnits() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert only the value
|
// Convert only the value
|
||||||
export function getConvertedDistance(value: number) {
|
export function getConvertedDistance(value: number, currentDistanceUnits = get(distanceUnits)) {
|
||||||
switch (get(distanceUnits)) {
|
switch (currentDistanceUnits) {
|
||||||
case 'metric':
|
case 'metric':
|
||||||
return value;
|
return value;
|
||||||
case 'imperial':
|
case 'imperial':
|
||||||
|
|
@ -165,9 +165,9 @@ export function getConvertedElevation(value: number) {
|
||||||
return get(distanceUnits) === 'metric' ? value : metersToFeet(value);
|
return get(distanceUnits) === 'metric' ? value : metersToFeet(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getConvertedVelocity(value: number) {
|
export function getConvertedVelocity(value: number, currentVelocityUnits = get(velocityUnits), currentDistanceUnits = get(distanceUnits)) {
|
||||||
if (get(velocityUnits) === 'speed') {
|
if (currentVelocityUnits === 'speed') {
|
||||||
switch (get(distanceUnits)) {
|
switch (currentDistanceUnits) {
|
||||||
case 'metric':
|
case 'metric':
|
||||||
return value;
|
return value;
|
||||||
case 'imperial':
|
case 'imperial':
|
||||||
|
|
@ -176,7 +176,7 @@ export function getConvertedVelocity(value: number) {
|
||||||
return kilometersToNauticalMiles(value);
|
return kilometersToNauticalMiles(value);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (get(distanceUnits)) {
|
switch (currentDistanceUnits) {
|
||||||
case 'metric':
|
case 'metric':
|
||||||
return distancePerHourToSecondsPerDistance(value);
|
return distancePerHourToSecondsPerDistance(value);
|
||||||
case 'imperial':
|
case 'imperial':
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue