aboutsummaryrefslogtreecommitdiff
path: root/modern/src/common
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-07-05 16:43:42 -0700
committerAnton Tananaev <anton@traccar.org>2022-07-05 16:43:42 -0700
commit8bde80a8cd1fb9b92f4867edbeeae48158f9036b (patch)
tree493edc77a38e4e39b438c4255a02cf843eedc821 /modern/src/common
parentdad1892d4718f15c9ecdd301db140d66d52da6b3 (diff)
downloadtrackermap-web-8bde80a8cd1fb9b92f4867edbeeae48158f9036b.tar.gz
trackermap-web-8bde80a8cd1fb9b92f4867edbeeae48158f9036b.tar.bz2
trackermap-web-8bde80a8cd1fb9b92f4867edbeeae48158f9036b.zip
Configurable altitude units
Diffstat (limited to 'modern/src/common')
-rw-r--r--modern/src/common/components/PositionValue.js5
-rw-r--r--modern/src/common/util/converter.js24
-rw-r--r--modern/src/common/util/formatter.js11
3 files changed, 38 insertions, 2 deletions
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)}`;