Skip to content

Commit

Permalink
Add default disable checks
Browse files Browse the repository at this point in the history
  • Loading branch information
Trong Le committed Aug 24, 2023
1 parent 6d721aa commit ebd5f9d
Show file tree
Hide file tree
Showing 17 changed files with 85 additions and 23 deletions.
7 changes: 6 additions & 1 deletion src/client/app/actions/admin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,10 @@ export function updateDefaultMeterMaximumErrors(defaultMeterMaximumErrors: numbe
return { type: ActionType.UpdateDefaultMeterMaximumErrors, defaultMeterMaximumErrors };
}

export function updateDefaultMeterDisableChecks(defaultMeterDisableChecks: boolean): t.UpdateDefaultMeterDisableChecksAction {
return { type: ActionType.UpdateDefaultMeterDisableChecks, defaultMeterDisableChecks };
}

function requestPreferences(): t.RequestPreferencesAction {
return { type: ActionType.RequestPreferences };
}
Expand Down Expand Up @@ -187,7 +191,8 @@ export function submitPreferences() {
defaultMeterMinimumDate: state.admin.defaultMeterMinimumDate,
defaultMeterMaximumDate: state.admin.defaultMeterMaximumDate,
defaultMeterReadingGap: state.admin.defaultMeterReadingGap,
defaultMeterMaximumErrors: state.admin.defaultMeterMaximumErrors
defaultMeterMaximumErrors: state.admin.defaultMeterMaximumErrors,
defaultMeterDisableChecks: state.admin.defaultMeterDisableChecks
});
// Only return the defaultMeterReadingFrequency because the value from the DB
// generally differs from what the user input so update state with DB value.
Expand Down
27 changes: 26 additions & 1 deletion src/client/app/components/admin/PreferencesComponent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ import {
UpdateDefaultMeterMinimumDateAction,
UpdateDefaultMeterMaximumDateAction,
UpdateDefaultMeterReadingGapAction,
UpdateDefaultMeterMaximumErrorsAction
UpdateDefaultMeterMaximumErrorsAction,
UpdateDefaultMeterDisableChecksAction

} from '../../types/redux/admin';
import { removeUnsavedChanges, updateUnsavedChanges } from '../../actions/unsavedWarning';
Expand All @@ -31,6 +32,8 @@ import TimeZoneSelect from '../TimeZoneSelect';
import store from '../../index';
import { fetchPreferencesIfNeeded, submitPreferences } from '../../actions/admin';
import { AreaUnitType } from '../../utils/getAreaUnitConversion';
import translate from '../../utils/translate';
import { TrueFalseType } from '../../types/items';

interface PreferencesProps {
displayTitle: string;
Expand All @@ -50,6 +53,7 @@ interface PreferencesProps {
defaultMeterMaximumDate: string;
defaultMeterReadingGap: number;
defaultMeterMaximumErrors: number;
defaultMeterDisableChecks: boolean;
updateDisplayTitle(title: string): UpdateDisplayTitleAction;
updateDefaultChartType(defaultChartToRender: ChartTypes): UpdateDefaultChartToRenderAction;
toggleDefaultBarStacking(): ToggleDefaultBarStackingAction;
Expand All @@ -67,10 +71,12 @@ interface PreferencesProps {
updateDefaultMeterMaximumDate(defaultMeterMaximumDate: string): UpdateDefaultMeterMaximumDateAction;
updateDefaultMeterReadingGap(defaultMeterReadingGap: number): UpdateDefaultMeterReadingGapAction;
updateDefaultMeterMaximumErrors(defaultMeterMaximumErrors: number): UpdateDefaultMeterMaximumErrorsAction;
updateDefaultMeterDisableChecks(defaultMeterDisableChecks: boolean): UpdateDefaultMeterDisableChecksAction;
}

type PreferencesPropsWithIntl = PreferencesProps & WrappedComponentProps;

// TODO: Add warning for invalid data
class PreferencesComponent extends React.Component<PreferencesPropsWithIntl> {
constructor(props: PreferencesPropsWithIntl) {
super(props);
Expand All @@ -91,6 +97,7 @@ class PreferencesComponent extends React.Component<PreferencesPropsWithIntl> {
this.handleDefaultMeterMaximumDateChange = this.handleDefaultMeterMaximumDateChange.bind(this);
this.handleDefaultMeterReadingGapChange = this.handleDefaultMeterReadingGapChange.bind(this);
this.handleDefaultMeterMaximumErrorsChange = this.handleDefaultMeterMaximumErrorsChange.bind(this);
this.handleDefaultMeterDisableChecksChange = this.handleDefaultMeterDisableChecksChange.bind(this);
}

public render() {
Expand Down Expand Up @@ -385,6 +392,19 @@ class PreferencesComponent extends React.Component<PreferencesPropsWithIntl> {
maxLength={50}
/>
</div>
<div style={bottomPaddingStyle}>
<p style={titleStyle}>
<FormattedMessage id='default.meter.disable.checks' />:
</p>
<Input
type='select'
value={this.props.defaultMeterDisableChecks?.toString()}
onChange={this.handleDefaultMeterDisableChecksChange}>
{Object.keys(TrueFalseType).map(key => {
return (<option value={key} key={key}>{translate(`TrueFalseType.${key}`)}</option>)
})}
</Input>
</div>
<Button
type='submit'
onClick={this.handleSubmitPreferences}
Expand Down Expand Up @@ -501,6 +521,11 @@ class PreferencesComponent extends React.Component<PreferencesPropsWithIntl> {
this.updateUnsavedChanges();
}

private handleDefaultMeterDisableChecksChange(e: { target: HTMLInputElement; }) {
this.props.updateDefaultMeterDisableChecks(JSON.parse(e.target.value))
this.updateUnsavedChanges();
}

}

export default injectIntl(PreferencesComponent);
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export default function CreateMeterModalComponent(props: CreateMeterModalCompone
minDate: adminState.defaultMeterMinimumDate,
maxDate: adminState.defaultMeterMaximumDate,
maxError: adminState.defaultMeterMaximumErrors,
disableChecks: false
disableChecks: adminState.defaultMeterDisableChecks
}

const dropdownsStateDefaults = {
Expand Down Expand Up @@ -869,7 +869,7 @@ export default function CreateMeterModalComponent(props: CreateMeterModalCompone
id='disableChecks'
name='disableChecks'
type='select'
defaultValue={state.disableChecks.toString()}
defaultValue={state.disableChecks?.toString()}
onChange={e => handleBooleanChange(e)}>
{Object.keys(TrueFalseType).map(key => {
return (<option value={key} key={key}>{translate(`TrueFalseType.${key}`)}</option>)
Expand Down
9 changes: 6 additions & 3 deletions src/client/app/containers/admin/PreferencesContainer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ import {
updateDefaultMeterMinimumDate,
updateDefaultMeterMaximumDate,
updateDefaultMeterReadingGap,
updateDefaultMeterMaximumErrors
updateDefaultMeterMaximumErrors,
updateDefaultMeterDisableChecks
} from '../../actions/admin';
import { State } from '../../types/redux/state';
import { Dispatch } from '../../types/redux/actions';
Expand All @@ -47,7 +48,8 @@ function mapStateToProps(state: State) {
defaultMeterMinimumDate: state.admin.defaultMeterMinimumDate,
defaultMeterMaximumDate: state.admin.defaultMeterMaximumDate,
defaultMeterReadingGap: state.admin.defaultMeterReadingGap,
defaultMeterMaximumErrors: state.admin.defaultMeterMaximumErrors
defaultMeterMaximumErrors: state.admin.defaultMeterMaximumErrors,
defaultMeterDisableChecks: state.admin.defaultMeterDisableChecks
};
}

Expand All @@ -69,8 +71,9 @@ function mapDispatchToProps(dispatch: Dispatch) {
updateDefaultMeterMaximumValue: (defaultMeterMaximumValue: number) => dispatch(updateDefaultMeterMaximumValue(defaultMeterMaximumValue)),
updateDefaultMeterMinimumDate: (defaultMeterMinimumDate: string) => dispatch(updateDefaultMeterMinimumDate(defaultMeterMinimumDate)),
updateDefaultMeterMaximumDate: (defaultMeterMaximumDate: string) => dispatch(updateDefaultMeterMaximumDate(defaultMeterMaximumDate)),
updateDefaultMeterReadingGap: (defaultMeterReadingGap: number) => dispatch(updateDefaultMeterReadingGap(defaultMeterReadingGap)),
updateDefaultMeterMaximumErrors: (defaultMeterMaximumErrors: number) => dispatch(updateDefaultMeterMaximumErrors(defaultMeterMaximumErrors)),
updateDefaultMeterReadingGap: (defaultMeterReadingGap: number) => dispatch(updateDefaultMeterReadingGap(defaultMeterReadingGap))
updateDefaultMeterDisableChecks: (defaultMeterDisableChecks: boolean) => dispatch(updateDefaultMeterDisableChecks(defaultMeterDisableChecks))
};
}

Expand Down
12 changes: 10 additions & 2 deletions src/client/app/reducers/admin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ const defaultState: AdminState = {
defaultMeterMinimumDate: moment(0).utc().format('YYYY-MM-DD HH:mm:ssZ'),
defaultMeterMaximumDate: moment(0).utc().add(5000, 'years').format('YYYY-MM-DD HH:mm:ssZ'),
defaultMeterReadingGap: 0,
defaultMeterMaximumErrors: 75
defaultMeterMaximumErrors: 75,
defaultMeterDisableChecks: false
};

export default function admin(state = defaultState, action: AdminAction) {
Expand Down Expand Up @@ -106,7 +107,8 @@ export default function admin(state = defaultState, action: AdminAction) {
defaultMeterMinimumDate: action.data.defaultMeterMinimumDate,
defaultMeterMaximumDate: action.data.defaultMeterMaximumDate,
defaultMeterReadingGap: action.data.defaultMeterReadingGap,
defaultMeterMaximumErrors: action.data.defaultMeterMaximumErrors
defaultMeterMaximumErrors: action.data.defaultMeterMaximumErrors,
defaultMeterDisableChecks: action.data.defaultMeterDisableChecks
};
case ActionType.MarkPreferencesNotSubmitted:
return {
Expand Down Expand Up @@ -179,6 +181,12 @@ export default function admin(state = defaultState, action: AdminAction) {
defaultMeterMaximumErrors: action.defaultMeterMaximumErrors,
submitted: false
}
case ActionType.UpdateDefaultMeterDisableChecks:
return {
...state,
defaultMeterDisableChecks: action.defaultMeterDisableChecks,
submitted: false
}
default:
return state;
}
Expand Down
9 changes: 6 additions & 3 deletions src/client/app/translations/data.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,9 @@ const localeData = {
"default.meter.maximum.value": "Default meter maximum reading value check",
"default.meter.minimum.date": "Default meter minimum reading date check",
"default.meter.maximum.date": "Default meter maximum reading date check",
"default.meter.reading.gap": "Default meter reading gap",
"default.meter.maximum.errors": "Default maximum number of errors in meter reading",
"default.meter.reading.gap": "Default meter reading gap",
"default.meter.disable.checks": "Default meter disable checks",
"delete.group": "Delete Group",
"delete.map": "Delete Map",
"delete.user": "Delete User",
Expand Down Expand Up @@ -597,7 +598,8 @@ const localeData = {
"default.meter.minimum.date": "(Need French) Default meter minimum reading date check",
"default.meter.maximum.date": "(Need French) Default meter maximum reading date check",
"default.meter.maximum.errors": "(Need French) Default maximum number of errors in meter reading",
"default.meter.reading.gap": "(Need French) Default meter reading gap",
"default.meter.reading.gap": "(Need French) Default meter reading gap",
"default.meter.disable.checks": "(Need French) Default meter disable checks",
"delete.group": "Supprimer le Groupe",
"delete.map": "Supprimer la carte",
"delete.user": "Supprimer l'utilisateur",
Expand Down Expand Up @@ -1066,7 +1068,8 @@ const localeData = {
"default.meter.minimum.date": "(Need Spanish) Default meter minimum reading date check",
"default.meter.maximum.date": "(Need Spanish) Default meter maximum reading date check",
"default.meter.maximum.errors": "(Need Spanish) Default maximum number of errors in meter reading",
"default.meter.reading.gap": "(Need Spanish) Default meter reading gap",
"default.meter.reading.gap": "(Need Spanish) Default meter reading gap",
"default.meter.disable.checks": "(Need Spanish) Default meter disable checks",
"delete.group": "Eliminar grupo",
"delete.map": "Borrar mapa",
"delete.user": "Borrar usario",
Expand Down
1 change: 1 addition & 0 deletions src/client/app/types/items.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export interface PreferenceRequestItem {
defaultMeterMaximumDate: string;
defaultMeterReadingGap: number;
defaultMeterMaximumErrors: number;
defaultMeterDisableChecks: boolean;
}

/**
Expand Down
1 change: 1 addition & 0 deletions src/client/app/types/redux/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ export enum ActionType {
UpdateDefaultMeterMaximumDate = 'UPDATE_DEFAULT_METER_MAXIMUM_DATE',
UpdateDefaultMeterReadingGap = 'UPDATE_DEFAULT_METER_READING_GAP',
UpdateDefaultMeterMaximumErrors = 'UPDATE_DEFAULT_METER_MAXIMUM_ERRORS',
UpdateDefaultMeterDisableChecks = 'UPDATE_DEFAULT_METER_DISABLE_CHECKS',

UpdateSelectedLanguage = 'UPDATE_SELECTED_LANGUAGE',

Expand Down
9 changes: 8 additions & 1 deletion src/client/app/types/redux/admin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ export type AdminAction =
| UpdateDefaultMeterMinimumDateAction
| UpdateDefaultMeterMaximumDateAction
| UpdateDefaultMeterReadingGapAction
| UpdateDefaultMeterMaximumErrorsAction;
| UpdateDefaultMeterMaximumErrorsAction
| UpdateDefaultMeterDisableChecksAction;

export interface UpdateImportMeterAction {
type: ActionType.UpdateImportMeter;
Expand Down Expand Up @@ -138,6 +139,11 @@ export interface UpdateDefaultMeterMaximumErrorsAction {
defaultMeterMaximumErrors: number;
}

export interface UpdateDefaultMeterDisableChecksAction {
type: ActionType.UpdateDefaultMeterDisableChecks;
defaultMeterDisableChecks: boolean;
}

export interface AdminState {
selectedMeter: number | null;
displayTitle: string;
Expand All @@ -159,4 +165,5 @@ export interface AdminState {
defaultMeterMaximumDate: string;
defaultMeterReadingGap: number;
defaultMeterMaximumErrors: number;
defaultMeterDisableChecks: boolean;
}
10 changes: 7 additions & 3 deletions src/server/models/Preferences.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ class Preferences {
* @param {String} defaultMeterMaximumValue - Option to set the default meter maximum value
* @param {Number} defaultMeterReadingGap - Option to set the default meter reading gap
* @param {Number} defaultMeterMaximumErrors - Option to set the default meter maximum number of errors
* @param {Boolean} defaultMeterDisableChecks - Option to set the default meter disable checks
*/
constructor(displayTitle, defaultChartToRender, defaultBarStacking, defaultLanguage, defaultTimezone,
defaultWarningFileSize, defaultFileSizeLimit, defaultAreaNormalization, defaultAreaUnit, defaultMeterReadingFrequency,
defaultMeterMinimumValue, defaultMeterMaximumValue, defaultMeterMinimumDate,
defaultMeterMaximumDate, defaultMeterReadingGap, defaultMeterMaximumErrors) {
defaultMeterMaximumDate, defaultMeterReadingGap, defaultMeterMaximumErrors, defaultMeterDisableChecks) {
this.displayTitle = displayTitle;
this.defaultChartToRender = defaultChartToRender;
this.defaultBarStacking = defaultBarStacking;
Expand All @@ -46,6 +47,7 @@ class Preferences {
this.defaultMeterMaximumDate = defaultMeterMaximumDate;
this.defaultMeterReadingGap = defaultMeterReadingGap;
this.defaultMeterMaximumErrors = defaultMeterMaximumErrors;
this.defaultMeterDisableChecks = defaultMeterDisableChecks;
}

/**
Expand Down Expand Up @@ -83,7 +85,8 @@ class Preferences {
row.default_meter_minimum_date,
row.default_meter_maximum_date,
row.default_meter_reading_gap,
row.default_meter_maximum_errors
row.default_meter_maximum_errors,
row.default_meter_disable_checks
);
}

Expand Down Expand Up @@ -121,7 +124,8 @@ class Preferences {
defaultMeterMinimumDate: preferences.defaultMeterMinimumDate,
defaultMeterMaximumDate: preferences.defaultMeterMaximumDate,
defaultMeterReadingGap: preferences.defaultMeterReadingGap,
defaultMeterMaximumErrors: preferences.defaultMeterMaximumErrors
defaultMeterMaximumErrors: preferences.defaultMeterMaximumErrors,
defaultMeterDisableChecks: preferences.defaultMeterDisableChecks
});
// Postgres interprets the defaultMeterReadingFrequency and it might not be what was
// input so return the new preferences. Easier just to return them all and only
Expand Down
3 changes: 3 additions & 0 deletions src/server/routes/preferences.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ router.post('/', async (req, res) => {
},
defaultMeterMaximumErrors: {
type: 'number'
},
defaultMeterDisableChecks: {
type: 'boolean'
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/csvPipeline/uploadReadings.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ async function uploadReadings(req, res, filepath, conn) {
preferences.defaultMeterMinimumDate, // minDate
preferences.defaultMeterMaximumDate, // maxDate
preferences.defaultMeterMaximumErrors, // maxError
undefined // disableChecks
preferences.defaultMeterDisableChecks // disableChecks
)
await tempMeter.insert(conn);
meterCreated = true;
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/obvius/loadLogfileToReadings.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ async function loadLogfileToReadings(serialNumber, ipAddress, logfile, conn) {
preferences.defaultMeterMinimumDate, // minDate
preferences.defaultMeterMaximumDate, // maxDate
preferences.defaultMeterMaximumErrors, // maxError
undefined // disableChecks
preferences.defaultMeterDisableChecks // disableChecks
);
await meter.insert(conn);
log.warn('WARNING: Created a meter (' + `${serialNumber}.${i}` +
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/readMamacMeters.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ async function getMeterInfo(url, ip, csvLine) {
preferences.defaultMeterMinimumDate, // minDate
preferences.defaultMeterMaximumDate, // maxDate
preferences.defaultMeterMaximumErrors, // maxError
undefined // disableChecks
preferences.defaultMeterDisableChecks // disableChecks
);
});
}
Expand Down
3 changes: 2 additions & 1 deletion src/server/sql/preferences/create_preferences_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@ CREATE TABLE IF NOT EXISTS preferences (
default_meter_minimum_date TIMESTAMP NOT NULL,
default_meter_maximum_date TIMESTAMP NOT NULL,
default_meter_reading_gap REAL NOT NULL,
default_meter_maximum_errors INTEGER NOT NULL
default_meter_maximum_errors INTEGER NOT NULL,
default_meter_disable_checks BOOLEAN NOT NULL
);
4 changes: 2 additions & 2 deletions src/server/sql/preferences/insert_default_row.sql
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ IF NOT EXISTS(SELECT *
default_language, default_timezone, default_warning_file_size, default_file_size_limit,
default_area_normalization, default_area_unit, default_meter_reading_frequency,
default_meter_minimum_value, default_meter_maximum_value, default_meter_minimum_date,
default_meter_maximum_date, default_meter_reading_gap, default_meter_maximum_errors)
default_meter_maximum_date, default_meter_reading_gap, default_meter_maximum_errors, default_meter_disable_checks)
VALUES ('', 'line', FALSE, 'en', NULL, 5, 25, FALSE, 'meters', '00:15:00',
-9007199254740991, 9007199254740991, '1970-01-01 00:00:00+00:00', '6970-01-01 00:00:00+00:00', 0, 75);
-9007199254740991, 9007199254740991, '1970-01-01 00:00:00+00:00', '6970-01-01 00:00:00+00:00', 0, 75, FALSE);
END IF ;

END;
Expand Down
3 changes: 2 additions & 1 deletion src/server/sql/preferences/update_preferences.sql
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ SET
default_meter_minimum_date = ${defaultMeterMinimumDate},
default_meter_maximum_date = ${defaultMeterMaximumDate},
default_meter_reading_gap = ${defaultMeterReadingGap},
default_meter_maximum_errors = ${defaultMeterMaximumErrors}
default_meter_maximum_errors = ${defaultMeterMaximumErrors},
default_meter_disable_checks = ${defaultMeterDisableChecks}
;

0 comments on commit ebd5f9d

Please sign in to comment.