diff --git a/src/client/app/components/admin/PreferencesComponent.tsx b/src/client/app/components/admin/PreferencesComponent.tsx index ffc2717cb..153da4549 100644 --- a/src/client/app/components/admin/PreferencesComponent.tsx +++ b/src/client/app/components/admin/PreferencesComponent.tsx @@ -3,6 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import { cloneDeep, isEqual } from 'lodash'; +import * as moment from 'moment'; import * as React from 'react'; import { FormattedMessage } from 'react-intl'; import { Button, Input } from 'reactstrap'; @@ -18,7 +19,6 @@ import TimeZoneSelect from '../TimeZoneSelect'; import { defaultAdminState } from '../../redux/slices/adminSlice'; -// TODO: Add warning for invalid data /** * @returns Preferences Component for Administrative use */ @@ -43,6 +43,40 @@ export default function PreferencesComponent() { setLocalAdminPref(cloneDeep(adminPreferences)); }; + // small functions that determine if fields are invalid to warn the user + const invalidReadingFreq = () => { + const frequency = moment.duration(localAdminPref.defaultMeterReadingFrequency); + return !frequency.isValid() || frequency.asSeconds() <= 0; + }; + + // force check some localAdminPref values as numbers, they are stored as strings + const invalidValueLimits = () => { + return Number(localAdminPref.defaultMeterMinimumValue) >= Number(localAdminPref.defaultMeterMaximumValue); + }; + + const invalidDateLimits = () => { + const minMoment = moment(localAdminPref.defaultMeterMinimumDate); + const maxMoment = moment(localAdminPref.defaultMeterMaximumDate); + return !minMoment.isValid() || !maxMoment.isValid() || !minMoment.isBefore(maxMoment); + }; + + const invalidReadingGap = () => { + return Number(localAdminPref.defaultMeterReadingGap) < 0; + }; + + const invalidMeterErrors = () => { + return Number(localAdminPref.defaultMeterMaximumErrors) <= 0; + }; + + const invalidFileSizeLimit = () => { + return Number(localAdminPref.defaultFileSizeLimit) < 0; + }; + + const invalidWarningFileSize = () => { + return Number(localAdminPref.defaultWarningFileSize) < 0 + || Number(localAdminPref.defaultWarningFileSize) > Number(localAdminPref.defaultFileSizeLimit); + }; + return (