UI: Add unit definitions
This commit is contained in:
		
							parent
							
								
									d0e56d860c
								
							
						
					
					
						commit
						8c3f56da25
					
				@ -26,6 +26,8 @@ import energy, { EnergyUnits } from '@core/services/unit/definitions/energy';
 | 
			
		||||
import force, { ForceUnits } from '@core/services/unit/definitions/force';
 | 
			
		||||
import frequency, { FrequencyUnits } from '@core/services/unit/definitions/frequency';
 | 
			
		||||
import illuminance,{ IlluminanceUnits } from '@core/services/unit/definitions/illuminance';
 | 
			
		||||
import length, { LengthUnits } from '@core/services/unit/definitions/length';
 | 
			
		||||
import mass, { MassUnits } from '@core/services/unit/definitions/mass';
 | 
			
		||||
import temperature, { TemperatureUnits } from './temperature';
 | 
			
		||||
import time, { TimeUnits } from './time';
 | 
			
		||||
 | 
			
		||||
@ -41,6 +43,8 @@ export type AllMeasuresUnits =
 | 
			
		||||
  | ForceUnits
 | 
			
		||||
  | FrequencyUnits
 | 
			
		||||
  | IlluminanceUnits
 | 
			
		||||
  | LengthUnits
 | 
			
		||||
  | MassUnits
 | 
			
		||||
  | TemperatureUnits
 | 
			
		||||
  | TimeUnits;
 | 
			
		||||
 | 
			
		||||
@ -56,6 +60,8 @@ export type AllMeasures =
 | 
			
		||||
  | 'force'
 | 
			
		||||
  | 'frequency'
 | 
			
		||||
  | 'illuminance'
 | 
			
		||||
  | 'length'
 | 
			
		||||
  | 'mass'
 | 
			
		||||
  | 'temperature'
 | 
			
		||||
  | 'time';
 | 
			
		||||
 | 
			
		||||
@ -74,6 +80,8 @@ const allMeasures: Record<
 | 
			
		||||
  force,
 | 
			
		||||
  frequency,
 | 
			
		||||
  illuminance,
 | 
			
		||||
  length,
 | 
			
		||||
  mass,
 | 
			
		||||
  temperature,
 | 
			
		||||
  time,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@ import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models';
 | 
			
		||||
 | 
			
		||||
export type AngleUnits = AngleMetricUnits;
 | 
			
		||||
 | 
			
		||||
export type AngleMetricUnits = 'rad' | 'deg' | 'grad' | 'arcmin' | 'arcsec' | 'mil' | 'rev';
 | 
			
		||||
export type AngleMetricUnits = 'rad' | 'deg' | 'grad' | 'arcmin' | 'arcsec' | 'mrad' | 'rev';
 | 
			
		||||
 | 
			
		||||
const METRIC: TbMeasureUnits<AngleMetricUnits> = {
 | 
			
		||||
  units: {
 | 
			
		||||
@ -47,8 +47,8 @@ const METRIC: TbMeasureUnits<AngleMetricUnits> = {
 | 
			
		||||
      tags: ['angle', 'arcsecond', 'arcseconds', 'arcsec'],
 | 
			
		||||
      to_anchor: 1 / 3600
 | 
			
		||||
    },
 | 
			
		||||
    mil: {
 | 
			
		||||
      name: 'unit.mil',
 | 
			
		||||
    mrad: {
 | 
			
		||||
      name: 'unit.milliradian',
 | 
			
		||||
      tags: ['angle', 'military angle', 'angular mil', 'mil'],
 | 
			
		||||
      to_anchor: 9 / (50 * Math.PI),
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										183
									
								
								ui-ngx/src/app/core/services/unit/definitions/length.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								ui-ngx/src/app/core/services/unit/definitions/length.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,183 @@
 | 
			
		||||
///
 | 
			
		||||
/// 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 LengthUnits = LengthMetricUnits | LengthImperialUnits;
 | 
			
		||||
 | 
			
		||||
export type LengthMetricUnits = 'nm' | 'μm' | 'mm' | 'cm' | 'dm' | 'm' | 'km' | 'angstrom';
 | 
			
		||||
export type LengthImperialUnits =
 | 
			
		||||
  | 'in'
 | 
			
		||||
  | 'yd'
 | 
			
		||||
  | 'ft-us'
 | 
			
		||||
  | 'ft'
 | 
			
		||||
  | 'fathom'
 | 
			
		||||
  | 'mi'
 | 
			
		||||
  | 'nmi'
 | 
			
		||||
  | 'thou'
 | 
			
		||||
  | 'barleycorn'
 | 
			
		||||
  | 'hand'
 | 
			
		||||
  | 'ch'
 | 
			
		||||
  | 'fur'
 | 
			
		||||
  | 'league'
 | 
			
		||||
  | 'link'
 | 
			
		||||
  | 'rod'
 | 
			
		||||
  | 'cable'
 | 
			
		||||
  | 'AU';
 | 
			
		||||
 | 
			
		||||
const METRIC: TbMeasureUnits<LengthMetricUnits> = {
 | 
			
		||||
  ratio: 3.28084,
 | 
			
		||||
  units: {
 | 
			
		||||
    nm: {
 | 
			
		||||
      name: 'unit.nanometer',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'nanoscale', 'atomic scale', 'molecular scale', 'nanometer', 'nanometers', 'nm'],
 | 
			
		||||
      to_anchor: 1e-9,
 | 
			
		||||
    },
 | 
			
		||||
    μm: {
 | 
			
		||||
      name: 'unit.micrometer',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'microns', 'micrometer', 'micrometers', 'µm'],
 | 
			
		||||
      to_anchor: 1e-6,
 | 
			
		||||
    },
 | 
			
		||||
    mm: {
 | 
			
		||||
      name: 'unit.millimeter',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'millimeter', 'millimeters', 'rainfall', 'precipitation', 'displacement', 'position', 'movement', 'transition', 'mm'],
 | 
			
		||||
      to_anchor: 1e-3,
 | 
			
		||||
    },
 | 
			
		||||
    cm: {
 | 
			
		||||
      name: 'unit.centimeter',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'centimeter', 'centimeters', 'rainfall', 'precipitation', 'displacement', 'position', 'movement', 'transition', 'cm'],
 | 
			
		||||
      to_anchor: 1e-2,
 | 
			
		||||
    },
 | 
			
		||||
    dm: {
 | 
			
		||||
      name: 'unit.decimeter',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'decimeter', 'decimeters', 'dm'],
 | 
			
		||||
      to_anchor: 1e-1,
 | 
			
		||||
    },
 | 
			
		||||
    m: {
 | 
			
		||||
      name: 'unit.meter',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'meter', 'meters', 'm'],
 | 
			
		||||
      to_anchor: 1,
 | 
			
		||||
    },
 | 
			
		||||
    km: {
 | 
			
		||||
      name: 'unit.kilometer',
 | 
			
		||||
      tags: ['distance', 'height', 'length', 'width', 'gap', 'depth', 'kilometer', 'kilometers', 'km'],
 | 
			
		||||
      to_anchor: 1e3,
 | 
			
		||||
    },
 | 
			
		||||
    angstrom: {
 | 
			
		||||
      name: 'unit.angstrom',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'atomic scale', 'atomic distance', 'nanoscale', 'angstrom', 'angstroms', 'Å'],
 | 
			
		||||
      to_anchor: 1e-10,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const IMPERIAL: TbMeasureUnits<LengthImperialUnits> = {
 | 
			
		||||
  ratio: 1 / 3.28084,
 | 
			
		||||
  units: {
 | 
			
		||||
    in: {
 | 
			
		||||
      name: 'unit.inch',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'inch', 'inches', 'in'],
 | 
			
		||||
      to_anchor: 1 / 12,
 | 
			
		||||
    },
 | 
			
		||||
    yd: {
 | 
			
		||||
      name: 'unit.yard',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'yard', 'yards', 'yd'],
 | 
			
		||||
      to_anchor: 3,
 | 
			
		||||
    },
 | 
			
		||||
    'ft-us': {
 | 
			
		||||
      name: 'unit.foot-us',
 | 
			
		||||
      tags: ['length', 'us survey foot', 'us survey feet', 'ft-us', 'surveying'],
 | 
			
		||||
      to_anchor: 1.000002,
 | 
			
		||||
    },
 | 
			
		||||
    ft: {
 | 
			
		||||
      name: 'unit.foot',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'foot', 'feet', 'ft'],
 | 
			
		||||
      to_anchor: 1,
 | 
			
		||||
    },
 | 
			
		||||
    fathom: {
 | 
			
		||||
      name: 'unit.fathom',
 | 
			
		||||
      tags: ['depth', 'nautical measurement', 'fathom'],
 | 
			
		||||
      to_anchor: 6,
 | 
			
		||||
    },
 | 
			
		||||
    mi: {
 | 
			
		||||
      name: 'unit.mile',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'mile', 'miles', 'mi'],
 | 
			
		||||
      to_anchor: 5280,
 | 
			
		||||
    },
 | 
			
		||||
    nmi: {
 | 
			
		||||
      name: 'unit.nautical-mile',
 | 
			
		||||
      tags: ['level', 'height', 'distance', 'length', 'width', 'gap', 'depth', 'nautical mile', 'nmi'],
 | 
			
		||||
      to_anchor: 6076.12,
 | 
			
		||||
    },
 | 
			
		||||
    thou: {
 | 
			
		||||
      name: 'unit.thou',
 | 
			
		||||
      tags: ['length', 'measurement', 'thou'],
 | 
			
		||||
      to_anchor: 0.001 / 12,
 | 
			
		||||
    },
 | 
			
		||||
    barleycorn: {
 | 
			
		||||
      name: 'unit.barleycorn',
 | 
			
		||||
      tags: ['length', 'shoe size', 'barleycorn'],
 | 
			
		||||
      to_anchor: 1 / 36,
 | 
			
		||||
    },
 | 
			
		||||
    hand: {
 | 
			
		||||
      name: 'unit.hand',
 | 
			
		||||
      tags: ['length', 'horse measurement', 'hand'],
 | 
			
		||||
      to_anchor: 4 / 12,
 | 
			
		||||
    },
 | 
			
		||||
    ch: {
 | 
			
		||||
      name: 'unit.chain',
 | 
			
		||||
      tags: ['length', 'land surveying', 'ch'],
 | 
			
		||||
      to_anchor: 66,
 | 
			
		||||
    },
 | 
			
		||||
    fur: {
 | 
			
		||||
      name: 'unit.furlong',
 | 
			
		||||
      tags: ['length', 'land surveying', 'fur'],
 | 
			
		||||
      to_anchor: 660,
 | 
			
		||||
    },
 | 
			
		||||
    league: {
 | 
			
		||||
      name: 'unit.league',
 | 
			
		||||
      tags: ['length', 'historical measurement', 'league'],
 | 
			
		||||
      to_anchor: 3 * 5280,
 | 
			
		||||
    },
 | 
			
		||||
    link: {
 | 
			
		||||
      name: 'unit.link',
 | 
			
		||||
      tags: ['length', 'land surveying', 'link'],
 | 
			
		||||
      to_anchor: 0.66,
 | 
			
		||||
    },
 | 
			
		||||
    rod: {
 | 
			
		||||
      name: 'unit.rod',
 | 
			
		||||
      tags: ['length', 'land surveying', 'rod'],
 | 
			
		||||
      to_anchor: 16.5,
 | 
			
		||||
    },
 | 
			
		||||
    cable: {
 | 
			
		||||
      name: 'unit.cable',
 | 
			
		||||
      tags: ['distance', 'nautical measurement', 'cable'],
 | 
			
		||||
      to_anchor: 600,
 | 
			
		||||
    },
 | 
			
		||||
    AU: {
 | 
			
		||||
      name: 'unit.astronomical-unit',
 | 
			
		||||
      tags: ['distance', 'celestial bodies', 'solar system', 'AU'],
 | 
			
		||||
      to_anchor: 149597870700 * 3.28084,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const measure: TbMeasure<LengthUnits> = {
 | 
			
		||||
  METRIC,
 | 
			
		||||
  IMPERIAL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default measure;
 | 
			
		||||
							
								
								
									
										121
									
								
								ui-ngx/src/app/core/services/unit/definitions/mass.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								ui-ngx/src/app/core/services/unit/definitions/mass.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,121 @@
 | 
			
		||||
///
 | 
			
		||||
/// 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 MassUnits = MassMetricUnits | MassImperialUnits;
 | 
			
		||||
 | 
			
		||||
export type MassMetricUnits = 'ng' | 'mcg' | 'mg' | 'g' | 'kg' | 't' | 'Da';
 | 
			
		||||
export type MassImperialUnits = 'oz' | 'lb' | 'st' | 'short tons' | 'gr' | 'dr' | 'qr' | 'cwt' | 'slug';
 | 
			
		||||
 | 
			
		||||
const METRIC: TbMeasureUnits<MassMetricUnits> = {
 | 
			
		||||
  ratio: 1 / 453.59237,
 | 
			
		||||
  units: {
 | 
			
		||||
    ng: {
 | 
			
		||||
      name: 'unit.nanogram',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'nanogram', 'nanograms', 'ng'],
 | 
			
		||||
      to_anchor: 1e-9,
 | 
			
		||||
    },
 | 
			
		||||
    mcg: {
 | 
			
		||||
      name: 'unit.microgram',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'μg', 'microgram'],
 | 
			
		||||
      to_anchor: 1e-6,
 | 
			
		||||
    },
 | 
			
		||||
    mg: {
 | 
			
		||||
      name: 'unit.milligram',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'milligram', 'miligrams', 'mg'],
 | 
			
		||||
      to_anchor: 1e-3,
 | 
			
		||||
    },
 | 
			
		||||
    g: {
 | 
			
		||||
      name: 'unit.gram',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'gram', 'grams', 'g'],
 | 
			
		||||
      to_anchor: 1,
 | 
			
		||||
    },
 | 
			
		||||
    kg: {
 | 
			
		||||
      name: 'unit.kilogram',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'kilogram', 'kilograms', 'kg'],
 | 
			
		||||
      to_anchor: 1000, // 1 kg = 1000 g
 | 
			
		||||
    },
 | 
			
		||||
    t: {
 | 
			
		||||
      name: 'unit.tonne',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'tonne', 'tons', 't'],
 | 
			
		||||
      to_anchor: 1000000,
 | 
			
		||||
    },
 | 
			
		||||
    Da: {
 | 
			
		||||
      name: 'unit.dalton',
 | 
			
		||||
      tags: ['atomic mass unit', 'AMU', 'unified atomic mass unit', 'dalton', 'Da'],
 | 
			
		||||
      to_anchor: 1.66053906660e-24,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const IMPERIAL: TbMeasureUnits<MassImperialUnits> = {
 | 
			
		||||
  ratio: 453.59237,
 | 
			
		||||
  units: {
 | 
			
		||||
    oz: {
 | 
			
		||||
      name: 'unit.ounce',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'ounce', 'ounces', 'oz'],
 | 
			
		||||
      to_anchor: 1 / 16,
 | 
			
		||||
    },
 | 
			
		||||
    lb: {
 | 
			
		||||
      name: 'unit.pound',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'pound', 'pounds', 'lb'],
 | 
			
		||||
      to_anchor: 1,
 | 
			
		||||
    },
 | 
			
		||||
    st: {
 | 
			
		||||
      name: 'unit.stone',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'stone', 'stones', 'st'],
 | 
			
		||||
      to_anchor: 14,
 | 
			
		||||
    },
 | 
			
		||||
    'short tons': {
 | 
			
		||||
      name: 'unit.short-tons',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'short ton', 'short tons'],
 | 
			
		||||
      to_anchor: 2000,
 | 
			
		||||
    },
 | 
			
		||||
    gr: {
 | 
			
		||||
      name: 'unit.grain',
 | 
			
		||||
      tags: ['mass', 'measurement', 'grain', 'gr'],
 | 
			
		||||
      to_anchor: 1 / 7000,
 | 
			
		||||
    },
 | 
			
		||||
    dr: {
 | 
			
		||||
      name: 'unit.drachm',
 | 
			
		||||
      tags: ['mass', 'measurement', 'drachm', 'dr'],
 | 
			
		||||
      to_anchor: 1 / 256,
 | 
			
		||||
    },
 | 
			
		||||
    qr: {
 | 
			
		||||
      name: 'unit.quarter',
 | 
			
		||||
      tags: ['mass', 'measurement', 'quarter', 'qr'],
 | 
			
		||||
      to_anchor: 28,
 | 
			
		||||
    },
 | 
			
		||||
    cwt: {
 | 
			
		||||
      name: 'unit.hundredweight-countt',
 | 
			
		||||
      tags: ['mass', 'weight', 'heaviness', 'load', 'hundredweight count', 'cwt'],
 | 
			
		||||
      to_anchor: 100,
 | 
			
		||||
    },
 | 
			
		||||
    slug: {
 | 
			
		||||
      name: 'unit.slug',
 | 
			
		||||
      tags: ['mass', 'measurement', 'slug'],
 | 
			
		||||
      to_anchor: 32.174,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const measure: TbMeasure<MassUnits> = {
 | 
			
		||||
  METRIC,
 | 
			
		||||
  IMPERIAL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default measure;
 | 
			
		||||
@ -5876,11 +5876,14 @@
 | 
			
		||||
          "force": "Force",
 | 
			
		||||
          "frequency": "Frequency",
 | 
			
		||||
          "illuminance": "Illuminance",
 | 
			
		||||
          "length": "Length",
 | 
			
		||||
          "mass": "Mass",
 | 
			
		||||
          "temperature": "Temperature",
 | 
			
		||||
          "time": "Time"
 | 
			
		||||
        },
 | 
			
		||||
        "millimeter": "Millimeter",
 | 
			
		||||
        "centimeter": "Centimeter",
 | 
			
		||||
        "decimeter": "Decimeter",
 | 
			
		||||
        "angstrom": "Angstrom",
 | 
			
		||||
        "nanometer": "Nanometer",
 | 
			
		||||
        "micrometer": "Micrometer",
 | 
			
		||||
@ -5888,6 +5891,7 @@
 | 
			
		||||
        "kilometer": "Kilometer",
 | 
			
		||||
        "inch": "Inch",
 | 
			
		||||
        "foot": "Foot",
 | 
			
		||||
        "foot-us": "Foot (US survey)",
 | 
			
		||||
        "yard": "Yard",
 | 
			
		||||
        "mile": "Mile",
 | 
			
		||||
        "nautical-mile": "Nautical Mile",
 | 
			
		||||
@ -6229,7 +6233,7 @@
 | 
			
		||||
        "gradian": "Gradian",
 | 
			
		||||
        "arcminute": "Arcminute",
 | 
			
		||||
        "arcsecond": "Arcsecond",
 | 
			
		||||
        "mil": "Mil",
 | 
			
		||||
        "milliradian": "Milliradian",
 | 
			
		||||
        "revolution": "Revolution",
 | 
			
		||||
        "siemens": "Siemens",
 | 
			
		||||
        "millisiemens": "Millisiemens",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user