diff --git a/src/client/app/components/admin/PreferencesComponent.tsx b/src/client/app/components/admin/PreferencesComponent.tsx
index 265244c48..b911aebbd 100644
--- a/src/client/app/components/admin/PreferencesComponent.tsx
+++ b/src/client/app/components/admin/PreferencesComponent.tsx
@@ -10,9 +10,9 @@ import { Button, Input, FormFeedback } from 'reactstrap';
import { UnsavedWarningComponent } from '../UnsavedWarningComponent';
import { preferencesApi } from '../../redux/api/preferencesApi';
import {
- MIN_DATE, MIN_DATE_MOMENT, MAX_DATE, MAX_DATE_MOMENT, MAX_VAL, MIN_VAL, MAX_ERRORS
+ MIN_DATE, MIN_DATE_MOMENT, MAX_DATE, MAX_DATE_MOMENT, MAX_ERRORS
} from '../../redux/selectors/adminSelectors';
-import { PreferenceRequestItem, TrueFalseType } from '../../types/items';
+import { PreferenceRequestItem } from '../../types/items';
import { ChartTypes } from '../../types/redux/graph';
import { LanguageTypes } from '../../types/redux/i18n';
import { AreaUnitType } from '../../utils/getAreaUnitConversion';
@@ -53,16 +53,6 @@ export default function PreferencesComponent() {
const frequency = moment.duration(localAdminPref.defaultMeterReadingFrequency);
return !frequency.isValid() || frequency.asSeconds() <= 0;
},
- minValue: (): boolean => {
- const min = Number(localAdminPref.defaultMeterMinimumValue);
- const max = Number(localAdminPref.defaultMeterMaximumValue);
- return min < MIN_VAL || min > max;
- },
- maxValue: (): boolean => {
- const min = Number(localAdminPref.defaultMeterMinimumValue);
- const max = Number(localAdminPref.defaultMeterMaximumValue);
- return max > MAX_VAL || min > max;
- },
minDate: (): boolean => {
const minMoment = moment(localAdminPref.defaultMeterMinimumDate);
const maxMoment = moment(localAdminPref.defaultMeterMaximumDate);
@@ -197,40 +187,6 @@ export default function PreferencesComponent() {
-
{translate('site.settings')}
diff --git a/src/client/app/components/meters/CreateMeterModalComponent.tsx b/src/client/app/components/meters/CreateMeterModalComponent.tsx
index 1673b05f3..11017ca31 100644
--- a/src/client/app/components/meters/CreateMeterModalComponent.tsx
+++ b/src/client/app/components/meters/CreateMeterModalComponent.tsx
@@ -29,6 +29,8 @@ import { useTranslate } from '../../redux/componentHooks';
import TimeZoneSelect from '../TimeZoneSelect';
import TooltipHelpComponent from '../TooltipHelpComponent';
import TooltipMarkerComponent from '../TooltipMarkerComponent';
+import { selectUnitDataById } from '../../redux/api/unitsApi';
+import { DisableChecksType } from '../../types/redux/units';
interface CreateMeterModalProps {
onCreateMeter?: (meterIdentifier: string) => void; // Define the type of the callback function
@@ -52,9 +54,10 @@ export default function CreateMeterModalComponent(props: CreateMeterModalProps):
const [showModal, setShowModal] = useState(false);
// Handlers for each type of input change
- const [meterDetails, setMeterDetails] = useState(defaultValues);
+ const [meterDetails, setMeterDetails] = useState({...defaultValues, minVal: MIN_VAL, maxVal: MAX_VAL, disableChecks: DisableChecksType.reject_all});
const unitIsSelected = meterDetails.unitId !== -999;
const defaultGaphicUnitIsSelected = meterDetails.defaultGraphicUnit !== -999;
+ const unitsDataById = useAppSelector(selectUnitDataById);
const { compatibleGraphicUnits, incompatibleGraphicUnits, compatibleUnits } = useAppSelector(state =>
// Type assertion due to conflicting GPS Property
@@ -92,9 +95,25 @@ export default function CreateMeterModalComponent(props: CreateMeterModalProps):
const handleTimeZoneChange = (timeZone: string) => {
setMeterDetails({ ...meterDetails, ['timeZone']: timeZone });
};
+
+ const handleUnitChange = (e: React.ChangeEvent) => {
+ const selectedUnitId = Number(e.target.value);
+ const selectedUnit = unitsDataById[selectedUnitId];
+
+ if (selectedUnit) {
+ setMeterDetails(details => ({
+ ...details,
+ unitId: selectedUnitId,
+ minVal: selectedUnit.minVal,
+ maxVal: selectedUnit.maxVal,
+ disableChecks: selectedUnit.disableChecks
+ }));
+ }
+ };
+
// Reset the state to default values
const resetState = () => {
- setMeterDetails(defaultValues);
+ setMeterDetails({...defaultValues, minVal: MIN_VAL, maxVal: MAX_VAL, disableChecks: DisableChecksType.reject_all});
};
const handleClose = () => {
@@ -242,9 +261,7 @@ export default function CreateMeterModalComponent(props: CreateMeterModalProps):
{
- handleNumberChange(e);
- }}
+ onChange={handleUnitChange}
invalid={!unitIsSelected}>