From 8bde80a8cd1fb9b92f4867edbeeae48158f9036b Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 5 Jul 2022 16:43:42 -0700 Subject: Configurable altitude units --- modern/src/common/components/PositionValue.js | 5 ++++- modern/src/common/util/converter.js | 24 ++++++++++++++++++++++++ modern/src/common/util/formatter.js | 11 ++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) (limited to 'modern/src/common') diff --git a/modern/src/common/components/PositionValue.js b/modern/src/common/components/PositionValue.js index 83fc0ef2..f80bc684 100644 --- a/modern/src/common/components/PositionValue.js +++ b/modern/src/common/components/PositionValue.js @@ -2,7 +2,7 @@ import React from 'react'; import { Link } from '@mui/material'; import { Link as RouterLink } from 'react-router-dom'; import { - formatAlarm, formatBoolean, formatCoordinate, formatCourse, formatDistance, formatNumber, formatPercentage, formatSpeed, formatTime, + formatAlarm, formatAltitude, formatBoolean, formatCoordinate, formatCourse, formatDistance, formatNumber, formatPercentage, formatSpeed, formatTime, } from '../util/formatter'; import { useAttributePreference, usePreference } from '../util/preferences'; import { useTranslation } from './LocalizationProvider'; @@ -18,6 +18,7 @@ const PositionValue = ({ position, property, attribute }) => { const value = property ? position[property] : position.attributes[attribute]; const distanceUnit = useAttributePreference('distanceUnit'); + const altitudeUnit = useAttributePreference('altitudeUnit'); const speedUnit = useAttributePreference('speedUnit'); const coordinateFormat = usePreference('coordinateFormat'); @@ -35,6 +36,8 @@ const PositionValue = ({ position, property, attribute }) => { return formatSpeed(value, speedUnit, t); case 'course': return formatCourse(value); + case 'altitude': + return formatAltitude(value, altitudeUnit, t); case 'batteryLevel': return formatPercentage(value); case 'alarm': diff --git a/modern/src/common/util/converter.js b/modern/src/common/util/converter.js index 559e68aa..cb21566b 100644 --- a/modern/src/common/util/converter.js +++ b/modern/src/common/util/converter.js @@ -54,6 +54,30 @@ export const distanceFromMeters = (value, unit) => value * distanceConverter(uni export const distanceToMeters = (value, unit) => value / distanceConverter(unit); +const altitudeConverter = (unit) => { + switch (unit) { + case 'ft': + return 3.28084; + case 'm': + default: + return 1; + } +}; + +export const altitudeUnitString = (unit, t) => { + switch (unit) { + case 'ft': + return t('sharedFeet'); + case 'm': + default: + return t('sharedMeters'); + } +}; + +export const altitudeFromMeters = (value, unit) => value * altitudeConverter(unit); + +export const altitudeToMeters = (value, unit) => value / altitudeConverter(unit); + const volumeConverter = (unit) => { switch (unit) { case 'impGal': diff --git a/modern/src/common/util/formatter.js b/modern/src/common/util/formatter.js index 034b0401..f36b4d38 100644 --- a/modern/src/common/util/formatter.js +++ b/modern/src/common/util/formatter.js @@ -1,6 +1,13 @@ import moment from 'moment'; import { - distanceFromMeters, distanceUnitString, speedFromKnots, speedUnitString, volumeFromLiters, volumeUnitString, + altitudeFromMeters, + altitudeUnitString, + distanceFromMeters, + distanceUnitString, + speedFromKnots, + speedUnitString, + volumeFromLiters, + volumeUnitString, } from './converter'; import { prefixString } from './stringUtils'; @@ -26,6 +33,8 @@ export const formatCourse = (value) => { export const formatDistance = (value, unit, t) => `${distanceFromMeters(value, unit).toFixed(2)} ${distanceUnitString(unit, t)}`; +export const formatAltitude = (value, unit, t) => `${altitudeFromMeters(value, unit).toFixed(2)} ${altitudeUnitString(unit, t)}`; + export const formatSpeed = (value, unit, t) => `${speedFromKnots(value, unit).toFixed(2)} ${speedUnitString(unit, t)}`; export const formatVolume = (value, unit, t) => `${volumeFromLiters(value, unit).toFixed(2)} ${volumeUnitString(unit, t)}`; -- cgit v1.2.3