diff --git a/typescript/frontend-marios2/src/content/dashboards/Configuration/Configuration.tsx b/typescript/frontend-marios2/src/content/dashboards/Configuration/Configuration.tsx index 2ce5bef64..184809abf 100644 --- a/typescript/frontend-marios2/src/content/dashboards/Configuration/Configuration.tsx +++ b/typescript/frontend-marios2/src/content/dashboards/Configuration/Configuration.tsx @@ -35,7 +35,13 @@ function Configuration(props: ConfigurationProps) { return null; } - const forcedCalibrationChargeOptions = [ + const CalibrationChargeOptions = [ + 'Repetitive Calibration', + 'Additional Calibration', + 'Force Calibration Now' + ]; + + const CalibrationChargeOptionsController = [ 'RepetitivelyEvery', 'AdditionallyOnce', 'ChargePermanently' @@ -64,31 +70,55 @@ function Configuration(props: ConfigurationProps) { selectedForcedCalibrationChargeOption, setSelectedForcedCalibrationChargeOption ] = useState( - props.values.calibrationChargeForced[0].value.toString() + CalibrationChargeOptions[ + CalibrationChargeOptionsController.indexOf( + props.values.calibrationChargeState[0].value.toString() + ) + ] ); const [formValues, setFormValues] = useState({ minimumSoC: props.values.minimumSoC[0].value, gridSetPoint: (props.values.gridSetPoint[0].value as number) / 1000, - forceCalibrationCharge: forcedCalibrationChargeOptions.indexOf( - props.values.calibrationChargeForced[0].value.toString() + CalibrationChargeState: CalibrationChargeOptionsController.indexOf( + props.values.calibrationChargeState[0].value.toString() ), - calibrationChargeDate: null + calibrationChargeDate: + CalibrationChargeOptionsController.indexOf( + props.values.calibrationChargeState[0].value.toString() + ) == 0 + ? dayjs(props.values.repetitiveCalibrationChargeDate[0].value).toDate() + : dayjs(props.values.additionalCalibrationChargeDate[0].value).toDate() }); const handleSubmit = async (e) => { - setLoading(true); - const res = await axiosConfig - .post(`/EditInstallationConfig?installationId=${props.id}`, formValues) - .catch((err) => { - if (err.response) { - setError(true); - setLoading(false); - } - }); + if ( + props.values.mode[0].value === 'CalibrationCharge' && + formValues.CalibrationChargeState == 0 + ) { + setDateSelectionError( + 'You cannot change the date while the installation is in Calibration Charge Mode' + ); + setErrorDateModalOpen(true); + return; + } else if (dayjs(formValues.calibrationChargeDate).isBefore(dayjs())) { + setDateSelectionError('You must specify a future date'); + setErrorDateModalOpen(true); + return; + } else { + setLoading(true); + const res = await axiosConfig + .post(`/EditInstallationConfig?installationId=${props.id}`, formValues) + .catch((err) => { + if (err.response) { + setError(true); + setLoading(false); + } + }); - if (res) { - setUpdated(true); - setLoading(false); + if (res) { + setUpdated(true); + setLoading(false); + } } }; @@ -97,12 +127,6 @@ function Configuration(props: ConfigurationProps) { }; const handleConfirm = (newDate) => { - if (newDate.isBefore(dayjs())) { - setDateSelectionError('You must specify a future date'); - setErrorDateModalOpen(true); - return; - } - setFormValues({ ...formValues, ['calibrationChargeDate']: newDate.toDate() @@ -114,9 +138,17 @@ function Configuration(props: ConfigurationProps) { setFormValues({ ...formValues, - ['forceCalibrationCharge']: forcedCalibrationChargeOptions.indexOf( + ['CalibrationChargeState']: CalibrationChargeOptions.indexOf( event.target.value - ) + ), + ['calibrationChargeDate']: + CalibrationChargeOptions.indexOf(event.target.value) == 0 + ? dayjs( + props.values.repetitiveCalibrationChargeDate[0].value + ).toDate() + : dayjs( + props.values.additionalCalibrationChargeDate[0].value + ).toDate() }); }; @@ -258,7 +290,7 @@ function Configuration(props: ConfigurationProps) { > - {formValues.forceCalibrationCharge != 2 && ( + {formValues.CalibrationChargeState != 2 && (