diff --git a/frontend/src/v5/store/containers/containers.types.ts b/frontend/src/v5/store/containers/containers.types.ts
index 69740737141..6ae3d81b262 100644
--- a/frontend/src/v5/store/containers/containers.types.ts
+++ b/frontend/src/v5/store/containers/containers.types.ts
@@ -80,34 +80,6 @@ export const CONTAINER_TYPES = [
},
];
-export const CONTAINER_UNITS = [
- {
- value: 'mm',
- name: formatMessage({ id: 'containers.unit.name.mm', defaultMessage: 'Millimetres' }),
- abbreviation: formatMessage({ id: 'containers.unit.abbreviation.mm', defaultMessage: 'mm' }),
- },
- {
- value: 'cm',
- name: formatMessage({ id: 'containers.unit.name.cm', defaultMessage: 'Centimetres' }),
- abbreviation: formatMessage({ id: 'containers.unit.abbreviation.cm', defaultMessage: 'cm' }),
- },
- {
- value: 'dm',
- name: formatMessage({ id: 'containers.unit.name.dm', defaultMessage: 'Decimetres' }),
- abbreviation: formatMessage({ id: 'containers.unit.abbreviation.dm', defaultMessage: 'dm' }),
- },
- {
- value: 'm',
- name: formatMessage({ id: 'containers.unit.name.m', defaultMessage: 'Metres' }),
- abbreviation: formatMessage({ id: 'containers.unit.abbreviation.m', defaultMessage: 'm' }),
- },
- {
- value: 'ft',
- name: formatMessage({ id: 'containers.unit.name.ft', defaultMessage: 'Feet and Inches' }),
- abbreviation: formatMessage({ id: 'containers.unit.abbreviation.ft', defaultMessage: 'ft' }),
- },
-];
-
export interface MinimumContainer {
_id: string,
name: string,
diff --git a/frontend/src/v5/ui/routes/dashboard/projects/containers/createContainerForm/createContainerForm.component.tsx b/frontend/src/v5/ui/routes/dashboard/projects/containers/createContainerForm/createContainerForm.component.tsx
index 87e8ef017f7..22947c7c289 100644
--- a/frontend/src/v5/ui/routes/dashboard/projects/containers/createContainerForm/createContainerForm.component.tsx
+++ b/frontend/src/v5/ui/routes/dashboard/projects/containers/createContainerForm/createContainerForm.component.tsx
@@ -20,7 +20,8 @@ import { yupResolver } from '@hookform/resolvers/yup';
import { FormModal } from '@controls/formModal/formModal.component';
import { useForm, SubmitHandler } from 'react-hook-form';
import { ContainersActionsDispatchers } from '@/v5/services/actionsDispatchers';
-import { CONTAINER_TYPES, CONTAINER_UNITS } from '@/v5/store/containers/containers.types';
+import { CONTAINER_TYPES } from '@/v5/store/containers/containers.types';
+import { MODEL_UNITS } from '../../models.helpers';
import { CreateContainerSchema } from '@/v5/validation/containerAndFederationSchemes/containerSchemes';
import { FormSelect, FormTextField } from '@controls/inputs/formInputs.component';
import { MenuItem } from '@mui/material';
@@ -101,7 +102,7 @@ export const CreateContainerForm = ({ open, onClickClose }: ICreateContainer): J
name="unit"
label={formatMessage({ id: 'containers.creation.form.units', defaultMessage: 'Units' })}
>
- {CONTAINER_UNITS.map((unit) => (
+ {MODEL_UNITS.map((unit) => (
diff --git a/frontend/src/v5/ui/routes/dashboard/projects/containers/uploadContainerRevisionForm/sidebarForm/sidebarForm.component.tsx b/frontend/src/v5/ui/routes/dashboard/projects/containers/uploadContainerRevisionForm/sidebarForm/sidebarForm.component.tsx
index 8b7fca4399e..8ce486a2550 100644
--- a/frontend/src/v5/ui/routes/dashboard/projects/containers/uploadContainerRevisionForm/sidebarForm/sidebarForm.component.tsx
+++ b/frontend/src/v5/ui/routes/dashboard/projects/containers/uploadContainerRevisionForm/sidebarForm/sidebarForm.component.tsx
@@ -18,7 +18,8 @@
import { formatMessage } from '@/v5/services/intl';
import { FormattedMessage } from 'react-intl';
import { useFormContext } from 'react-hook-form';
-import { CONTAINER_TYPES, CONTAINER_UNITS } from '@/v5/store/containers/containers.types';
+import { CONTAINER_TYPES } from '@/v5/store/containers/containers.types';
+import { MODEL_UNITS } from '../../../models.helpers';
import * as countriesAndTimezones from 'countries-and-timezones';
import { MenuItem } from '@mui/material';
import { FormSelect, FormTextField } from '@controls/inputs/formInputs.component';
@@ -71,7 +72,7 @@ export const SidebarForm = () => {
name={`${revisionPrefix}.containerUnit`}
label={formatMessage({ id: 'containers.creation.form.units', defaultMessage: 'Units' })}
>
- {CONTAINER_UNITS.map((unit) => (
+ {MODEL_UNITS.map((unit) => (
diff --git a/frontend/src/v5/ui/routes/dashboard/projects/federations/createFederationForm/createFederationSettings/createFederationSettings.component.tsx b/frontend/src/v5/ui/routes/dashboard/projects/federations/createFederationForm/createFederationSettings/createFederationSettings.component.tsx
index c8cb15e5cbd..b83df34dd3b 100644
--- a/frontend/src/v5/ui/routes/dashboard/projects/federations/createFederationForm/createFederationSettings/createFederationSettings.component.tsx
+++ b/frontend/src/v5/ui/routes/dashboard/projects/federations/createFederationForm/createFederationSettings/createFederationSettings.component.tsx
@@ -16,7 +16,7 @@
*/
import { formatMessage } from '@/v5/services/intl';
-import { CONTAINER_UNITS } from '@/v5/store/containers/containers.types';
+import { MODEL_UNITS } from '../../../models.helpers';
import { FormSelect, FormTextField } from '@controls/inputs/formInputs.component';
import { MenuItem } from '@mui/material';
import { useFormContext } from 'react-hook-form';
@@ -57,7 +57,7 @@ export const CreateFederationFormSettings = () => {
})}
control={control}
>
- {CONTAINER_UNITS.map(({ name, value }) => (
+ {MODEL_UNITS.map(({ name, value }) => (
diff --git a/frontend/src/v5/ui/routes/dashboard/projects/models.helpers.ts b/frontend/src/v5/ui/routes/dashboard/projects/models.helpers.ts
new file mode 100644
index 00000000000..12866424b1d
--- /dev/null
+++ b/frontend/src/v5/ui/routes/dashboard/projects/models.helpers.ts
@@ -0,0 +1,46 @@
+/**
+ * Copyright (C) 2024 3D Repo Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import { formatMessage } from '@/v5/services/intl';
+
+export const MODEL_UNITS = [
+ {
+ value: 'mm',
+ name: formatMessage({ id: 'containers.unit.name.mm', defaultMessage: 'Millimetres' }),
+ abbreviation: formatMessage({ id: 'containers.unit.abbreviation.mm', defaultMessage: 'mm' }),
+ },
+ {
+ value: 'cm',
+ name: formatMessage({ id: 'containers.unit.name.cm', defaultMessage: 'Centimetres' }),
+ abbreviation: formatMessage({ id: 'containers.unit.abbreviation.cm', defaultMessage: 'cm' }),
+ },
+ {
+ value: 'dm',
+ name: formatMessage({ id: 'containers.unit.name.dm', defaultMessage: 'Decimetres' }),
+ abbreviation: formatMessage({ id: 'containers.unit.abbreviation.dm', defaultMessage: 'dm' }),
+ },
+ {
+ value: 'm',
+ name: formatMessage({ id: 'containers.unit.name.m', defaultMessage: 'Metres' }),
+ abbreviation: formatMessage({ id: 'containers.unit.abbreviation.m', defaultMessage: 'm' }),
+ },
+ {
+ value: 'ft',
+ name: formatMessage({ id: 'containers.unit.name.ft', defaultMessage: 'Feet and Inches' }),
+ abbreviation: formatMessage({ id: 'containers.unit.abbreviation.ft', defaultMessage: 'ft' }),
+ },
+];
diff --git a/frontend/src/v5/ui/routes/dashboard/projects/settingsModal/settingsModal.component.tsx b/frontend/src/v5/ui/routes/dashboard/projects/settingsModal/settingsModal.component.tsx
index faa7d27db99..4cbf80077d7 100644
--- a/frontend/src/v5/ui/routes/dashboard/projects/settingsModal/settingsModal.component.tsx
+++ b/frontend/src/v5/ui/routes/dashboard/projects/settingsModal/settingsModal.component.tsx
@@ -32,29 +32,7 @@ import { UnhandledErrorInterceptor } from '@controls/errorMessage/unhandledError
import { FormNumberField, FormSelect, FormSelectView, FormTextField } from '@controls/inputs/formInputs.component';
import { ProjectsHooksSelectors, TeamspacesHooksSelectors } from '@/v5/services/selectorsHooks';
import { FlexContainer, SectionTitle, Placeholder, HiddenMenuItem } from './settingsModal.styles';
-
-const UNITS = [
- {
- name: formatMessage({ id: 'units.mm.name', defaultMessage: 'Millimetres' }),
- abbreviation: formatMessage({ id: 'units.mm.abbreviation', defaultMessage: 'mm' }),
- },
- {
- name: formatMessage({ id: 'units.cm.name', defaultMessage: 'Centimetres' }),
- abbreviation: formatMessage({ id: 'units.cm.abbreviation', defaultMessage: 'cm' }),
- },
- {
- name: formatMessage({ id: 'units.dm.name', defaultMessage: 'Decimetres' }),
- abbreviation: formatMessage({ id: 'units.dm.abbreviation', defaultMessage: 'dm' }),
- },
- {
- name: formatMessage({ id: 'units.m.name', defaultMessage: 'Metres' }),
- abbreviation: formatMessage({ id: 'units.m.abbreviation', defaultMessage: 'm' }),
- },
- {
- name: formatMessage({ id: 'units.ft.name', defaultMessage: 'Feet and inches' }),
- abbreviation: formatMessage({ id: 'units.ft.abbreviation', defaultMessage: 'ft' }),
- },
-];
+import { MODEL_UNITS } from '../models.helpers';
const CONTAINER_TYPES = [
formatMessage({ id: 'settings.type.uncategorised', defaultMessage: 'Uncategorised' }),
@@ -88,7 +66,7 @@ interface IFormInput {
}
const getDefaultValues = (containerOrFederation: IContainer | IFederation, isContainer?: boolean) => {
- const DEFAULT_UNIT = UNITS[0];
+ const DEFAULT_UNIT = MODEL_UNITS[0];
const {
unit = DEFAULT_UNIT.abbreviation,
angleFromNorth,
@@ -275,7 +253,7 @@ export const SettingsModal = ({
control={control}
disabled={!isProjectAdmin}
>
- {UNITS.map(({ name, abbreviation }) => (
+ {MODEL_UNITS.map(({ name, abbreviation }) => (
diff --git a/frontend/src/v5/ui/routes/viewer/toolbar/buttons/toolbarButtons.component.tsx b/frontend/src/v5/ui/routes/viewer/toolbar/buttons/toolbarButtons.component.tsx
index 339aaacd5d0..b985c963086 100644
--- a/frontend/src/v5/ui/routes/viewer/toolbar/buttons/toolbarButtons.component.tsx
+++ b/frontend/src/v5/ui/routes/viewer/toolbar/buttons/toolbarButtons.component.tsx
@@ -30,7 +30,7 @@ import { VerticalRangeContainer, VerticalRangeValue } from '../selectionToolbar/
import { useContext } from 'react';
import { CalibrationContext } from '../../../dashboard/projects/calibration/calibrationContext';
import { UNITS_CONVERSION_FACTORS_TO_METRES } from '../../../dashboard/projects/calibration/calibration.helpers';
-import { CONTAINER_UNITS } from '@/v5/store/containers/containers.types';
+import { MODEL_UNITS } from '../../../dashboard/projects/models.helpers';
export const HomeButton = () => (
{
const isMetric = unit !== 'ft';
const conversionFactor = isMetric ? UNITS_CONVERSION_FACTORS_TO_METRES[unit] : 1;
const rangeValue = ((verticalPlanes?.[1] - verticalPlanes?.[0]) / conversionFactor).toFixed(2);
- const unitLabel = CONTAINER_UNITS.find(({ value }) => value === (isMetric ? 'm' : 'ft')).abbreviation;
+ const unitLabel = MODEL_UNITS.find(({ value }) => value === (isMetric ? 'm' : 'ft')).abbreviation;
return (
{rangeValue}{unitLabel}