Skip to content

Commit de1077c

Browse files
authored
Merge pull request #1271 from dhis2/cp/bugfixes/DHIS2-10070-performance-on-rules-engine
fix: DHIS2-10070 improves rules engine performance
2 parents 5f40665 + 3b45739 commit de1077c

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/core_modules/capture-core/rules/actionsCreator/inputHelpers.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,10 @@ function convertFormValuesToClientValues(formValues: {[key: string]: any}, rende
3131

3232
function getValidFormValues(formValues: { [key: string]: any }, fieldsValidation: { [key: string]: boolean }) {
3333
return Object.keys(formValues)
34-
.reduce((accValidFormValues, key) => {
35-
const isValid = fieldsValidation[key];
36-
accValidFormValues[key] = isValid ? formValues[key] : null;
37-
return accValidFormValues;
38-
}, {});
34+
.filter(key => fieldsValidation[key])
35+
.reduce((accValidFormValues, key) => (
36+
{ ...accValidFormValues, [key]: formValues[key] }
37+
), {});
3938
}
4039

4140
function getFieldsValidationForForm(sectionsFieldsUI: Object, formId: string) {
@@ -72,7 +71,6 @@ export function getCurrentClientValues(
7271
fieldValidations;
7372

7473
const validFormValues = getValidFormValues(updatedCurrentFormData, updatedFieldValidations);
75-
7674
const clientData = convertFormValuesToClientValues(validFormValues, foundation);
7775
return clientData;
7876
}

src/core_modules/capture-core/rules/actionsCreator/postProcessRulesEffects.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,15 @@ function filterFieldsHideEffects(
116116
}
117117

118118
const elementIds = Object.keys(hideEffects);
119+
const compulsoryElements = foundation.getElements().filter(({ compulsory }) => compulsory);
120+
119121
return elementIds
120122
.filter((elementId) => {
121-
const element = foundation.getElement(elementId);
122-
const dataCompulsory = element && element.compulsory;
123+
const { compulsory: elementIsCompulsory } =
124+
compulsoryElements.find(({ id }) => id === elementId) || {};
125+
123126
const compulsoryEffect = makeCompulsoryEffects[elementId];
124-
return !(dataCompulsory || compulsoryEffect);
127+
return !(elementIsCompulsory || compulsoryEffect);
125128
})
126129
.reduce((accFilteredEffects, elementId) => {
127130
accFilteredEffects[elementId] = hideEffects[elementId];

0 commit comments

Comments
 (0)