UI: Add new unit definition

This commit is contained in:
Vladyslav_Prykhodko 2025-04-29 15:02:42 +03:00
parent 2d9d43f068
commit f5f794191d
7 changed files with 231 additions and 14 deletions

View File

@ -19,6 +19,9 @@ import acceleration, { AccelerationUnits } from '@core/services/unit/definitions
import angle, { AngleUnits } from '@core/services/unit/definitions/angle'; import angle, { AngleUnits } from '@core/services/unit/definitions/angle';
import angularAcceleration, { AngularAccelerationUnits } from '@core/services/unit/definitions/angular-acceleration'; import angularAcceleration, { AngularAccelerationUnits } from '@core/services/unit/definitions/angular-acceleration';
import area, { AreaUnits } from '@core/services/unit/definitions/area'; import area, { AreaUnits } from '@core/services/unit/definitions/area';
import charge, { ChargeUnits } from '@core/services/unit/definitions/charge';
import digital, { DigitalUnits } from '@core/services/unit/definitions/digital';
import electricCurrent, { ElectricCurrentUnits } from '@core/services/unit/definitions/electric-current';
import temperature, { TemperatureUnits } from './temperature'; import temperature, { TemperatureUnits } from './temperature';
import time, { TimeUnits } from './time'; import time, { TimeUnits } from './time';
@ -27,6 +30,9 @@ export type AllMeasuresUnits =
| AngleUnits | AngleUnits
| AngularAccelerationUnits | AngularAccelerationUnits
| AreaUnits | AreaUnits
| ChargeUnits
| DigitalUnits
| ElectricCurrentUnits
| TemperatureUnits | TemperatureUnits
| TimeUnits; | TimeUnits;
@ -35,6 +41,9 @@ export type AllMeasures =
| 'angle' | 'angle'
| 'angular-acceleration' | 'angular-acceleration'
| 'area' | 'area'
| 'charge'
| 'digital'
| 'electric-current'
| 'temperature' | 'temperature'
| 'time'; | 'time';
@ -46,6 +55,9 @@ const allMeasures: Record<
angle, angle,
'angular-acceleration': angularAcceleration, 'angular-acceleration': angularAcceleration,
area, area,
charge,
digital,
'electric-current': electricCurrent,
temperature, temperature,
time, time,
}; };

View File

@ -16,11 +16,11 @@
import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models'; import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models';
export type AngleUnits = AngleSIUnits; export type AngleUnits = AngleMetricUnits;
export type AngleSIUnits = 'rad' | 'deg' | 'grad' | 'arcmin' | 'arcsec' | 'mil' | 'rev'; export type AngleMetricUnits = 'rad' | 'deg' | 'grad' | 'arcmin' | 'arcsec' | 'mil' | 'rev';
const METRIC: TbMeasureUnits<AngleSIUnits> = { const METRIC: TbMeasureUnits<AngleMetricUnits> = {
units: { units: {
rad: { rad: {
name: 'unit.rad', name: 'unit.rad',

View File

@ -0,0 +1,57 @@
///
/// Copyright © 2016-2025 The Thingsboard Authors
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models';
export type ChargeUnits = ChargeMetricUnits;
export type ChargeMetricUnits = 'c' | 'mC' | 'μC' | 'nC' | 'pC';
const METRIC: TbMeasureUnits<ChargeMetricUnits> = {
units: {
c: {
name: 'unit.coulomb',
tags: ['charge', 'electricity', 'electrostatics', 'Coulomb', 'C'],
to_anchor: 1,
},
mC: {
name: 'unit.millicoulomb',
tags: ['charge', 'electricity', 'electrostatics', 'millicoulombs', 'mC'],
to_anchor: 1 / 1000,
},
μC: {
name: 'unit.microcoulomb',
tags: ['charge', 'electricity', 'electrostatics', 'microcoulomb', 'µC'],
to_anchor: 1 / 1000000,
},
nC: {
name: 'unit.nanocoulomb',
tags: ['charge', 'electricity', 'electrostatics', 'nanocoulomb', 'nC'],
to_anchor: 1e-9,
},
pC: {
name: 'unit.picocoulomb',
tags: ['charge', 'electricity', 'electrostatics', 'picocoulomb', 'pC'],
to_anchor: 1e-12,
},
}
};
const measure: TbMeasure<ChargeUnits> = {
METRIC,
};
export default measure;

View File

@ -0,0 +1,82 @@
///
/// Copyright © 2016-2025 The Thingsboard Authors
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models';
export type DigitalUnits = DigitalMetricUnits;
export type DigitalMetricUnits = 'bit' | 'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB' | 'ZB' | 'YB';
const METRIC: TbMeasureUnits<DigitalMetricUnits> = {
units: {
bit: {
name: 'unit.bit',
tags: ['data', 'binary digit', 'information', 'bit'],
to_anchor: 1.25e-1,
},
B: {
name: 'unit.byte',
tags: ['data', 'byte', 'information', 'storage', 'memory', 'B'],
to_anchor: 1
},
KB: {
name: 'unit.kilobyte',
tags: ['data', 'kilobyte', 'KB'],
to_anchor: 1024,
},
MB: {
name: 'unit.megabyte',
tags: ['data', 'megabyte', 'MB'],
to_anchor: 1024 ** 2,
},
GB: {
name: 'unit.gigabyte',
tags: ['data', 'gigabyte', 'GB'],
to_anchor: 1024 ** 3,
},
TB: {
name: 'unit.terabyte',
tags: ['data', 'terabyte', 'TB'],
to_anchor: 1024 ** 4,
},
PB: {
name: 'unit.petabyte',
tags: ['data', 'petabyte', 'PB'],
to_anchor: 1024 ** 5,
},
EB: {
name: 'unit.exabyte',
tags: ['data', 'exabyte', 'EB'],
to_anchor: 1024 ** 6,
},
ZB: {
name: 'unit.zettabyte',
tags: ['data', 'zettabyte', 'EB'],
to_anchor: 1024 ** 7,
},
YB: {
name: 'unit.yottabyte',
tags: ['data', 'yottabyte', 'EB'],
to_anchor: 1024 ** 8,
},
}
};
const measure: TbMeasure<DigitalUnits> = {
METRIC,
};
export default measure;

View File

@ -0,0 +1,67 @@
///
/// Copyright © 2016-2025 The Thingsboard Authors
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models';
export type ElectricCurrentUnits = ElectricCurrentMetricalUnits;
export type ElectricCurrentMetricalUnits = 'A' | 'nA' | 'μA' | 'mA' | 'kA' | 'MA' | 'GA';
const METRIC: TbMeasureUnits<ElectricCurrentMetricalUnits> = {
units: {
A: {
name: 'unit.ampere',
tags: ['electric current', 'current flow', 'flow of electricity', 'electrical flow', 'ampere', 'amperes', 'amperage', 'A'],
to_anchor: 1,
},
nA: {
name: 'unit.nanoampere',
tags: ['electric current', 'nanoampere', 'nanoamperes', 'nA'],
to_anchor: 1e-9,
},
μA: {
name: 'unit.microampere',
tags: ['electric current', 'microampere', 'microamperes', 'μA'],
to_anchor: 1e-6,
},
mA: {
name: 'unit.milliampere',
tags: ['electric current', 'milliampere', 'milliamperes', 'mA'],
to_anchor: 0.001,
},
kA: {
name: 'unit.kiloampere',
tags: ['electric current', 'kiloampere', 'kiloamperes', 'kA'],
to_anchor: 1000,
},
MA: {
name: 'unit.megaampere',
tags: ['electric current', 'megaampere', 'megaamperes', 'MA'],
to_anchor: 1e6,
},
GA: {
name: 'unit.gigaampere',
tags: ['electric current', 'gigaampere', 'gigaamperes', 'GA'],
to_anchor: 1e9,
},
}
};
const measure: TbMeasure<ElectricCurrentUnits> = {
METRIC,
};
export default measure;

View File

@ -16,9 +16,9 @@
import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models'; import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models';
export type TimeUnits = TimeSIUnits; export type TimeUnits = TimeMetricUnits;
export type TimeSIUnits = export type TimeMetricUnits =
| 'ns' | 'ns'
| 'μs' | 'μs'
| 'ms' | 'ms'
@ -32,7 +32,7 @@ export type TimeSIUnits =
const daysInYear = 365.25; const daysInYear = 365.25;
const METRIC: TbMeasureUnits<TimeSIUnits> = { const METRIC: TbMeasureUnits<TimeMetricUnits> = {
units: { units: {
ns: { ns: {
name: 'unit.nanosecond', name: 'unit.nanosecond',

View File

@ -5859,6 +5859,9 @@
"angle": "Angle", "angle": "Angle",
"angular-acceleration": "Angular acceleration", "angular-acceleration": "Angular acceleration",
"area": "Area", "area": "Area",
"charge": "Charge",
"digital": "Digital",
"electric-current": "Electric current",
"temperature": "Temperature", "temperature": "Temperature",
"time": "Time" "time": "Time"
}, },
@ -6009,6 +6012,7 @@
"coulomb": "Coulomb", "coulomb": "Coulomb",
"millicoulomb": "Millicoulombs", "millicoulomb": "Millicoulombs",
"microcoulomb": "Microcoulomb", "microcoulomb": "Microcoulomb",
"nanocoulomb": "Nanocoulomb",
"picocoulomb": "Picocoulomb", "picocoulomb": "Picocoulomb",
"coulomb-per-meter": "Coulomb per meter", "coulomb-per-meter": "Coulomb per meter",
"coulomb-per-cubic-meter": "Coulomb per Cubic Meter", "coulomb-per-cubic-meter": "Coulomb per Cubic Meter",
@ -6033,17 +6037,12 @@
"kiloampere-hours": "Kiloampere-hours", "kiloampere-hours": "Kiloampere-hours",
"kiloampere-hours-tags": "electric current, current flow, electric charge, current capacity, flow of electricity, electrical flow, kiloampere-hours, kiloampere-hour, kAh", "kiloampere-hours-tags": "electric current, current flow, electric charge, current capacity, flow of electricity, electrical flow, kiloampere-hours, kiloampere-hour, kAh",
"nanoampere": "Nanoampere", "nanoampere": "Nanoampere",
"nanoampere-tags": "current, amperes, nanoampere, nA",
"picoampere": "Picoampere",
"picoampere-tags": "current, amperes, picoampere, pA",
"microampere": "Microampere", "microampere": "Microampere",
"microampere-tags": "electric current, microampere, microamperes, μA",
"milliampere": "Milliampere", "milliampere": "Milliampere",
"milliampere-tags": "electric current, milliampere, milliamperes, mA",
"ampere": "Ampere", "ampere": "Ampere",
"ampere-tags": "electric current, current flow, flow of electricity, electrical flow, ampere, amperes, amperage, A", "kiloampere": "Kiloampere",
"kiloamperes": "Kiloamperes", "megaampere": "Megaampere",
"kiloamperes-tags": "electric current, current flow, kiloamperes, kA", "gigaampere": "Gigaampere",
"microampere-per-square-centimeter": "Microampere per square centimeter", "microampere-per-square-centimeter": "Microampere per square centimeter",
"microampere-per-square-centimeter-tags": "Current density, microampere per square centimeter, µA/cm²", "microampere-per-square-centimeter-tags": "Current density, microampere per square centimeter, µA/cm²",
"ampere-per-square-meter": "Ampere per Square Meter", "ampere-per-square-meter": "Ampere per Square Meter",