Add support for nautical units
This commit is contained in:
parent
1a4ae96782
commit
f39ae57b09
4 changed files with 58 additions and 8 deletions
|
|
@ -333,6 +333,7 @@
|
||||||
<Menubar.RadioGroup bind:value={$distanceUnits}>
|
<Menubar.RadioGroup bind:value={$distanceUnits}>
|
||||||
<Menubar.RadioItem value="metric">{$_('menu.metric')}</Menubar.RadioItem>
|
<Menubar.RadioItem value="metric">{$_('menu.metric')}</Menubar.RadioItem>
|
||||||
<Menubar.RadioItem value="imperial">{$_('menu.imperial')}</Menubar.RadioItem>
|
<Menubar.RadioItem value="imperial">{$_('menu.imperial')}</Menubar.RadioItem>
|
||||||
|
<Menubar.RadioItem value="nautical">{$_('menu.nautical')}</Menubar.RadioItem>
|
||||||
</Menubar.RadioGroup>
|
</Menubar.RadioGroup>
|
||||||
</Menubar.SubContent>
|
</Menubar.SubContent>
|
||||||
</Menubar.Sub>
|
</Menubar.Sub>
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ export function dexieSettingStore<T>(key: string, initial: T, initialize: boolea
|
||||||
}
|
}
|
||||||
|
|
||||||
export const settings = {
|
export const settings = {
|
||||||
distanceUnits: dexieSettingStore<'metric' | 'imperial'>('distanceUnits', 'metric'),
|
distanceUnits: dexieSettingStore<'metric' | 'imperial' | 'nautical'>('distanceUnits', 'metric'),
|
||||||
velocityUnits: dexieSettingStore<'speed' | 'pace'>('velocityUnits', 'speed'),
|
velocityUnits: dexieSettingStore<'speed' | 'pace'>('velocityUnits', 'speed'),
|
||||||
temperatureUnits: dexieSettingStore<'celsius' | 'fahrenheit'>('temperatureUnits', 'celsius'),
|
temperatureUnits: dexieSettingStore<'celsius' | 'fahrenheit'>('temperatureUnits', 'celsius'),
|
||||||
elevationProfile: dexieSettingStore('elevationProfile', true),
|
elevationProfile: dexieSettingStore('elevationProfile', true),
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,10 @@ export function metersToFeet(value: number) {
|
||||||
return value * 3.28084;
|
return value * 3.28084;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function kilometersToNauticalMiles(value: number) {
|
||||||
|
return value * 0.539957;
|
||||||
|
}
|
||||||
|
|
||||||
export function celsiusToFahrenheit(value: number) {
|
export function celsiusToFahrenheit(value: number) {
|
||||||
return value * 1.8 + 32;
|
return value * 1.8 + 32;
|
||||||
}
|
}
|
||||||
|
|
@ -93,15 +97,35 @@ export function getTemperatureWithUnits(value: number, convert: boolean = true)
|
||||||
|
|
||||||
// Get the units
|
// Get the units
|
||||||
export function getDistanceUnits() {
|
export function getDistanceUnits() {
|
||||||
return get(distanceUnits) === 'metric' ? get(_)('units.kilometers') : get(_)('units.miles');
|
switch (get(distanceUnits)) {
|
||||||
|
case 'metric':
|
||||||
|
return get(_)('units.kilometers');
|
||||||
|
case 'imperial':
|
||||||
|
return get(_)('units.miles');
|
||||||
|
case 'nautical':
|
||||||
|
return get(_)('units.nautical_miles');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getVelocityUnits() {
|
export function getVelocityUnits() {
|
||||||
if (get(velocityUnits) === 'speed') {
|
if (get(velocityUnits) === 'speed') {
|
||||||
return get(distanceUnits) === 'metric' ? get(_)('units.kilometers_per_hour') : get(_)('units.miles_per_hour');
|
switch (get(distanceUnits)) {
|
||||||
|
case 'metric':
|
||||||
|
return get(_)('units.kilometers_per_hour');
|
||||||
|
case 'imperial':
|
||||||
|
return get(_)('units.miles_per_hour');
|
||||||
|
case 'nautical':
|
||||||
|
return get(_)('units.knots');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return get(distanceUnits) === 'metric' ? get(_)('units.minutes_per_kilometer') : get(_)('units.minutes_per_mile');
|
switch (get(distanceUnits)) {
|
||||||
|
case 'metric':
|
||||||
|
return get(_)('units.minutes_per_kilometer');
|
||||||
|
case 'imperial':
|
||||||
|
return get(_)('units.minutes_per_mile');
|
||||||
|
case 'nautical':
|
||||||
|
return get(_)('units.minutes_per_nautical_mile');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -127,7 +151,14 @@ export function getTemperatureUnits() {
|
||||||
|
|
||||||
// Convert only the value
|
// Convert only the value
|
||||||
export function getConvertedDistance(value: number) {
|
export function getConvertedDistance(value: number) {
|
||||||
return get(distanceUnits) === 'metric' ? value : kilometersToMiles(value);
|
switch (get(distanceUnits)) {
|
||||||
|
case 'metric':
|
||||||
|
return value;
|
||||||
|
case 'imperial':
|
||||||
|
return kilometersToMiles(value);
|
||||||
|
case 'nautical':
|
||||||
|
return kilometersToNauticalMiles(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getConvertedElevation(value: number) {
|
export function getConvertedElevation(value: number) {
|
||||||
|
|
@ -136,9 +167,23 @@ export function getConvertedElevation(value: number) {
|
||||||
|
|
||||||
export function getConvertedVelocity(value: number) {
|
export function getConvertedVelocity(value: number) {
|
||||||
if (get(velocityUnits) === 'speed') {
|
if (get(velocityUnits) === 'speed') {
|
||||||
return get(distanceUnits) === 'metric' ? value : kilometersToMiles(value);
|
switch (get(distanceUnits)) {
|
||||||
|
case 'metric':
|
||||||
|
return value;
|
||||||
|
case 'imperial':
|
||||||
|
return milesToKilometers(value);
|
||||||
|
case 'nautical':
|
||||||
|
return kilometersToNauticalMiles(value);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return get(distanceUnits) === 'metric' ? distancePerHourToSecondsPerDistance(value) : distancePerHourToSecondsPerDistance(kilometersToMiles(value));
|
switch (get(distanceUnits)) {
|
||||||
|
case 'metric':
|
||||||
|
return distancePerHourToSecondsPerDistance(value);
|
||||||
|
case 'imperial':
|
||||||
|
return distancePerHourToSecondsPerDistance(kilometersToMiles(value));
|
||||||
|
case 'nautical':
|
||||||
|
return distancePerHourToSecondsPerDistance(kilometersToNauticalMiles(value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@
|
||||||
"distance_units": "Distance units",
|
"distance_units": "Distance units",
|
||||||
"metric": "Metric",
|
"metric": "Metric",
|
||||||
"imperial": "Imperial",
|
"imperial": "Imperial",
|
||||||
|
"nautical": "Nautical",
|
||||||
"velocity_units": "Velocity units",
|
"velocity_units": "Velocity units",
|
||||||
"temperature_units": "Temperature units",
|
"temperature_units": "Temperature units",
|
||||||
"celsius": "Celsius",
|
"celsius": "Celsius",
|
||||||
|
|
@ -363,12 +364,15 @@
|
||||||
"feet": "ft",
|
"feet": "ft",
|
||||||
"kilometers": "km",
|
"kilometers": "km",
|
||||||
"miles": "mi",
|
"miles": "mi",
|
||||||
|
"nautical_miles": "nm",
|
||||||
"celsius": "°C",
|
"celsius": "°C",
|
||||||
"fahrenheit": "°F",
|
"fahrenheit": "°F",
|
||||||
"kilometers_per_hour": "km/h",
|
"kilometers_per_hour": "km/h",
|
||||||
"miles_per_hour": "mph",
|
"miles_per_hour": "mph",
|
||||||
"minutes_per_kilometer": "min/km",
|
"minutes_per_kilometer": "min/km",
|
||||||
"minutes_per_mile": "min/mi",
|
"minutes_per_mile": "min/mi",
|
||||||
|
"minutes_per_nautical_mile": "min/nm",
|
||||||
|
"knots": "kn",
|
||||||
"heartrate": "bpm",
|
"heartrate": "bpm",
|
||||||
"cadence": "rpm",
|
"cadence": "rpm",
|
||||||
"power": "W"
|
"power": "W"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue