2024-04-24 16:12:50 +02:00
|
|
|
<script lang="ts">
|
2024-05-04 15:10:30 +02:00
|
|
|
import { settings } from '$lib/db';
|
2024-04-24 16:12:50 +02:00
|
|
|
import {
|
|
|
|
celsiusToFahrenheit,
|
|
|
|
distancePerHourToSecondsPerDistance,
|
|
|
|
kilometersToMiles,
|
|
|
|
metersToFeet,
|
|
|
|
secondsToHHMMSS
|
|
|
|
} from '$lib/units';
|
|
|
|
|
|
|
|
import { _ } from 'svelte-i18n';
|
|
|
|
|
|
|
|
export let value: number;
|
|
|
|
export let type: 'distance' | 'elevation' | 'speed' | 'temperature' | 'time';
|
2024-04-24 18:02:35 +02:00
|
|
|
export let showUnits: boolean = true;
|
2024-06-11 19:08:46 +02:00
|
|
|
export let decimals: number | undefined = undefined;
|
2024-05-04 15:10:30 +02:00
|
|
|
|
|
|
|
const { distanceUnits, velocityUnits, temperatureUnits } = settings;
|
2024-04-24 16:12:50 +02:00
|
|
|
</script>
|
|
|
|
|
2024-05-13 19:43:10 +02:00
|
|
|
<span class={$$props.class}>
|
|
|
|
{#if type === 'distance'}
|
|
|
|
{#if $distanceUnits === 'metric'}
|
2024-06-11 19:08:46 +02:00
|
|
|
{value.toFixed(decimals ?? 2)} {showUnits ? $_('units.kilometers') : ''}
|
2024-04-24 16:12:50 +02:00
|
|
|
{:else}
|
2024-06-11 19:08:46 +02:00
|
|
|
{kilometersToMiles(value).toFixed(decimals ?? 2)} {showUnits ? $_('units.miles') : ''}
|
2024-04-24 16:12:50 +02:00
|
|
|
{/if}
|
2024-05-13 19:43:10 +02:00
|
|
|
{:else if type === 'elevation'}
|
|
|
|
{#if $distanceUnits === 'metric'}
|
2024-06-11 19:08:46 +02:00
|
|
|
{value.toFixed(decimals ?? 0)} {showUnits ? $_('units.meters') : ''}
|
2024-05-13 19:43:10 +02:00
|
|
|
{:else}
|
2024-06-11 19:08:46 +02:00
|
|
|
{metersToFeet(value).toFixed(decimals ?? 0)} {showUnits ? $_('units.feet') : ''}
|
2024-05-13 19:43:10 +02:00
|
|
|
{/if}
|
|
|
|
{:else if type === 'speed'}
|
|
|
|
{#if $distanceUnits === 'metric'}
|
|
|
|
{#if $velocityUnits === 'speed'}
|
2024-06-11 19:08:46 +02:00
|
|
|
{value.toFixed(decimals ?? 2)} {showUnits ? $_('units.kilometers_per_hour') : ''}
|
2024-05-13 19:43:10 +02:00
|
|
|
{:else}
|
|
|
|
{secondsToHHMMSS(distancePerHourToSecondsPerDistance(value))}
|
|
|
|
{showUnits ? $_('units.minutes_per_kilometer') : ''}
|
|
|
|
{/if}
|
|
|
|
{:else if $velocityUnits === 'speed'}
|
2024-06-11 19:08:46 +02:00
|
|
|
{kilometersToMiles(value).toFixed(decimals ?? 2)}
|
|
|
|
{showUnits ? $_('units.miles_per_hour') : ''}
|
2024-05-13 19:43:10 +02:00
|
|
|
{:else}
|
|
|
|
{secondsToHHMMSS(distancePerHourToSecondsPerDistance(kilometersToMiles(value)))}
|
|
|
|
{showUnits ? $_('units.minutes_per_mile') : ''}
|
|
|
|
{/if}
|
|
|
|
{:else if type === 'temperature'}
|
|
|
|
{#if $temperatureUnits === 'celsius'}
|
|
|
|
{value} {showUnits ? $_('units.celsius') : ''}
|
|
|
|
{:else}
|
|
|
|
{celsiusToFahrenheit(value)} {showUnits ? $_('units.fahrenheit') : ''}
|
|
|
|
{/if}
|
|
|
|
{:else if type === 'time'}
|
|
|
|
{secondsToHHMMSS(value)}
|
2024-04-24 16:12:50 +02:00
|
|
|
{/if}
|
2024-05-13 19:43:10 +02:00
|
|
|
</span>
|