@truedat/dq 8.6.7 → 8.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/components/ConceptRules.js +2 -3
- package/src/components/ConditionCell.js +9 -9
- package/src/components/ExecutionForm.js +1 -1
- package/src/components/ExecutionGroup.js +2 -2
- package/src/components/ExecutionGroupContent.js +4 -4
- package/src/components/ImplementationExecutionFilters.js +1 -1
- package/src/components/ImplementationFiltersLoader.js +2 -2
- package/src/components/ImplementationResultBar.js +1 -1
- package/src/components/ImplementationSearchResults.js +7 -7
- package/src/components/ImplementationStructureDelete.js +1 -1
- package/src/components/ImplementationStructuresNew.js +6 -3
- package/src/components/ImplementationSummary.js +2 -2
- package/src/components/Implementations.js +18 -11
- package/src/components/ImplementationsHeader.js +16 -21
- package/src/components/ImplementationsRoutes.js +7 -7
- package/src/components/MoveImplementation.js +1 -1
- package/src/components/NewBasicRuleImplementation.js +1 -1
- package/src/components/NewRuleImplementation.js +44 -44
- package/src/components/QualityEventError.js +11 -7
- package/src/components/RawContent.js +1 -1
- package/src/components/RemediationForm.js +1 -1
- package/src/components/RemediationPlan.js +2 -2
- package/src/components/Rule.js +1 -1
- package/src/components/RuleActions.js +1 -1
- package/src/components/RuleEventDecorator.js +1 -1
- package/src/components/RuleEventRow.js +1 -1
- package/src/components/RuleFilters.js +1 -1
- package/src/components/RuleFiltersLoader.js +1 -1
- package/src/components/RuleFormImplementations.js +1 -1
- package/src/components/RuleImplementationEventRow.js +1 -1
- package/src/components/RuleImplementationHistory.js +1 -1
- package/src/components/RuleImplementationProperties.js +2 -2
- package/src/components/RuleImplementationResults.js +2 -2
- package/src/components/RuleImplementationTabs.js +5 -5
- package/src/components/RuleImplementationsDownload.js +4 -4
- package/src/components/RuleImplementationsDownloadXlsx.js +6 -6
- package/src/components/RuleImplementationsLoader.js +1 -2
- package/src/components/RuleImplementationsTable.js +1 -1
- package/src/components/RuleResultDecorator.js +3 -3
- package/src/components/RuleResultDetails.js +1 -1
- package/src/components/RuleResultRemediationLoader.js +1 -1
- package/src/components/RuleResultSegments.js +3 -3
- package/src/components/RuleResultsTable.js +7 -7
- package/src/components/RuleRoutes.js +3 -3
- package/src/components/RuleSelectedFilters.js +3 -3
- package/src/components/RuleSelector.js +1 -1
- package/src/components/RuleSummary.js +3 -3
- package/src/components/Rules.js +4 -4
- package/src/components/RulesLoader.js +2 -2
- package/src/components/RulesRoutes.js +1 -1
- package/src/components/SimpleRuleImplementationsTable.js +1 -1
- package/src/components/Subscription.js +1 -1
- package/src/components/TaxonomySummary.js +1 -1
- package/src/components/__tests__/ConceptRules.spec.js +2 -2
- package/src/components/__tests__/ExecutionGroup.spec.js +3 -3
- package/src/components/__tests__/ExecutionGroupContent.spec.js +1 -1
- package/src/components/__tests__/ExecutionGroups.spec.js +1 -1
- package/src/components/__tests__/ExecutionGroupsTable.spec.js +1 -1
- package/src/components/__tests__/ImplementationExecutionFilters.spec.js +1 -1
- package/src/components/__tests__/ImplementationExecutions.spec.js +1 -1
- package/src/components/__tests__/ImplementationResultBar.spec.js +6 -6
- package/src/components/__tests__/ImplementationSearchResults.spec.js +3 -3
- package/src/components/__tests__/ImplementationStructureDelete.spec.js +1 -1
- package/src/components/__tests__/ImplementationStructureLink.spec.js +1 -1
- package/src/components/__tests__/ImplementationStructureLinksActions.spec.js +31 -27
- package/src/components/__tests__/ImplementationStructures.spec.js +6 -6
- package/src/components/__tests__/ImplementationStructuresNew.spec.js +2 -2
- package/src/components/__tests__/ImplementationSummary.spec.js +2 -2
- package/src/components/__tests__/Implementations.spec.js +1 -1
- package/src/components/__tests__/ImplementationsRoutes.spec.js +1 -1
- package/src/components/__tests__/ImplementationsUploadButton.spec.js +8 -8
- package/src/components/__tests__/MoveImplementation.spec.js +5 -5
- package/src/components/__tests__/NewBasicRuleImplementation.spec.js +4 -4
- package/src/components/__tests__/NewRuleImplementation.spec.js +14 -14
- package/src/components/__tests__/QualityRoutes.spec.js +1 -1
- package/src/components/__tests__/RemediationForm.spec.js +9 -3
- package/src/components/__tests__/RemediationPlan.spec.js +2 -2
- package/src/components/__tests__/RuleActions.spec.js +1 -1
- package/src/components/__tests__/RuleForm.spec.js +2 -2
- package/src/components/__tests__/RuleFormImplementations.spec.js +3 -3
- package/src/components/__tests__/RuleImplementation.spec.js +2 -2
- package/src/components/__tests__/RuleImplementationProperties.spec.js +3 -3
- package/src/components/__tests__/RuleImplementationResults.spec.js +2 -2
- package/src/components/__tests__/RuleImplementationsActions.spec.js +4 -4
- package/src/components/__tests__/RuleImplementationsLoader.spec.js +1 -1
- package/src/components/__tests__/RuleImplementationsOptions.spec.js +1 -1
- package/src/components/__tests__/RuleImplementationsTable.spec.js +3 -3
- package/src/components/__tests__/RuleResultDecorator.spec.js +15 -6
- package/src/components/__tests__/RuleResultDetails.spec.js +1 -1
- package/src/components/__tests__/RuleResultRemediations.spec.js +1 -1
- package/src/components/__tests__/RuleResultRoutes.spec.js +4 -4
- package/src/components/__tests__/RuleResultRow.spec.js +13 -13
- package/src/components/__tests__/RuleResultSegments.spec.js +1 -1
- package/src/components/__tests__/RuleRoutes.spec.js +1 -1
- package/src/components/__tests__/RuleRow.spec.js +4 -4
- package/src/components/__tests__/RuleSelectionForm.spec.js +5 -5
- package/src/components/__tests__/RuleSummary.spec.js +3 -3
- package/src/components/__tests__/Rules.spec.js +1 -1
- package/src/components/__tests__/RulesActions.spec.js +1 -1
- package/src/components/__tests__/RulesRoutes.spec.js +1 -1
- package/src/components/__tests__/Subscription.spec.js +11 -11
- package/src/components/ruleImplementationForm/DatasetForm.js +7 -7
- package/src/components/ruleImplementationForm/FieldModifier.js +5 -5
- package/src/components/ruleImplementationForm/FieldsGrid.js +2 -2
- package/src/components/ruleImplementationForm/FieldsGroup.js +1 -1
- package/src/components/ruleImplementationForm/FiltersField.js +4 -4
- package/src/components/ruleImplementationForm/FiltersFormGroup.js +3 -3
- package/src/components/ruleImplementationForm/FiltersGrid.js +3 -3
- package/src/components/ruleImplementationForm/FiltersGroup.js +2 -2
- package/src/components/ruleImplementationForm/InformationForm.js +1 -1
- package/src/components/ruleImplementationForm/RuleImplementationBasicForm.js +3 -3
- package/src/components/ruleImplementationForm/RuleImplementationForm.js +15 -11
- package/src/components/ruleImplementationForm/RuleImplementationRawForm.js +5 -5
- package/src/components/ruleImplementationForm/__tests__/FiltersFormGroup.spec.js +1 -1
- package/src/components/ruleImplementationForm/__tests__/FiltersGroup.spec.js +1 -1
- package/src/components/ruleImplementationForm/__tests__/InformationForm.spec.js +2 -2
- package/src/components/ruleImplementationForm/__tests__/LimitsForm.spec.js +12 -12
- package/src/components/ruleImplementationForm/__tests__/RuleImplementationBasicForm.spec.js +13 -13
- package/src/components/ruleImplementationForm/__tests__/RuleImplementationForm.spec.js +2 -2
- package/src/components/ruleImplementationForm/__tests__/RuleImplementationRawForm.spec.js +25 -25
- package/src/components/ruleImplementationForm/__tests__/ValueConditions.spec.js +1 -1
- package/src/components/ruleImplementationForm/operators.js +7 -7
- package/src/hooks/__tests__/useImplementations.spec.js +0 -1
- package/src/hooks/useImplementations.js +5 -5
- package/src/messages/en.js +0 -1
- package/src/messages/es.js +0 -1
- package/src/messages/index.js +1 -1
- package/src/reducers/__tests__/conceptRules.spec.js +3 -3
- package/src/reducers/__tests__/conceptRulesActions.spec.js +6 -6
- package/src/reducers/__tests__/implementationActions.spec.js +2 -2
- package/src/reducers/__tests__/implementationLinks.spec.js +4 -4
- package/src/reducers/__tests__/implementationsActions.spec.js +2 -2
- package/src/reducers/__tests__/previousRuleImplementationQuery.spec.js +6 -6
- package/src/reducers/__tests__/remediation.spec.js +7 -7
- package/src/reducers/__tests__/remediationActions.spec.js +3 -3
- package/src/reducers/__tests__/remediationLoading.spec.js +6 -6
- package/src/reducers/__tests__/resultsUploading.spec.js +2 -2
- package/src/reducers/__tests__/rule.spec.js +1 -1
- package/src/reducers/__tests__/ruleActiveFilters.spec.js +8 -8
- package/src/reducers/__tests__/ruleCount.spec.js +3 -3
- package/src/reducers/__tests__/ruleFiltersLoading.spec.js +2 -2
- package/src/reducers/__tests__/ruleImplementation.spec.js +2 -2
- package/src/reducers/__tests__/ruleImplementationActiveFilters.spec.js +11 -11
- package/src/reducers/__tests__/ruleImplementationCount.spec.js +5 -5
- package/src/reducers/__tests__/ruleImplementationCreating.spec.js +5 -5
- package/src/reducers/__tests__/ruleImplementationFilters.spec.js +4 -4
- package/src/reducers/__tests__/ruleImplementationLoading.spec.js +5 -3
- package/src/reducers/__tests__/ruleImplementationQuery.spec.js +7 -7
- package/src/reducers/__tests__/ruleImplementationRedirect.spec.js +13 -13
- package/src/reducers/__tests__/ruleImplementationSaving.spec.js +4 -2
- package/src/reducers/__tests__/ruleImplementationSelectedFilter.spec.js +7 -7
- package/src/reducers/__tests__/ruleImplementations.spec.js +4 -4
- package/src/reducers/__tests__/ruleImplementationsDownloading.spec.js +4 -4
- package/src/reducers/__tests__/ruleImplementationsLoading.spec.js +5 -5
- package/src/reducers/__tests__/ruleImplementationsPageSize.spec.js +4 -4
- package/src/reducers/__tests__/ruleQuery.spec.js +6 -6
- package/src/reducers/__tests__/ruleRedirect.spec.js +10 -10
- package/src/reducers/__tests__/rules.spec.js +2 -2
- package/src/reducers/__tests__/segmentResult.spec.js +3 -3
- package/src/reducers/__tests__/uploadImplementationsFile.spec.js +2 -2
- package/src/reducers/__tests__/uploadRulesFile.spec.js +2 -2
- package/src/reducers/conceptRulesActions.js +2 -2
- package/src/reducers/dqMessage.js +2 -2
- package/src/reducers/implementationsActions.js +1 -1
- package/src/reducers/previousRuleImplementationQuery.js +2 -2
- package/src/reducers/ruleFilters.js +1 -1
- package/src/reducers/ruleImplementationActiveFilters.js +1 -1
- package/src/reducers/ruleImplementationCount.js +1 -1
- package/src/reducers/ruleImplementationFilters.js +2 -2
- package/src/reducers/ruleImplementationRaw.js +1 -1
- package/src/reducers/ruleImplementationRedirect.js +3 -3
- package/src/reducers/ruleImplementationSelectedFilter.js +1 -1
- package/src/reducers/ruleImplementationsLoading.js +1 -1
- package/src/reducers/ruleImplementationsPageSize.js +1 -1
- package/src/reducers/ruleSelectedFilter.js +1 -1
- package/src/reducers/uploadingImplementationsFile.js +1 -1
- package/src/routines.js +23 -23
- package/src/sagas/__tests__/createExecutionGroup.spec.js +1 -1
- package/src/sagas/__tests__/createImplementationStructure.spec.js +1 -1
- package/src/sagas/__tests__/createRuleImplementation.spec.js +1 -1
- package/src/sagas/__tests__/deleteImplementationStructure.spec.js +1 -1
- package/src/sagas/__tests__/deleteRule.spec.js +1 -3
- package/src/sagas/__tests__/downloadRuleImplementations.spec.js +1 -1
- package/src/sagas/__tests__/fetchConceptRules.spec.js +1 -1
- package/src/sagas/__tests__/fetchRule.spec.js +1 -3
- package/src/sagas/__tests__/fetchRuleFilters.spec.js +5 -5
- package/src/sagas/__tests__/fetchRuleImplementation.spec.js +1 -1
- package/src/sagas/__tests__/fetchRuleImplementations.spec.js +1 -1
- package/src/sagas/__tests__/fetchRules.spec.js +4 -6
- package/src/sagas/__tests__/searchRuleImplementations.spec.js +3 -3
- package/src/sagas/__tests__/updateRule.spec.js +1 -3
- package/src/sagas/__tests__/updateRuleImplementation.spec.js +1 -1
- package/src/sagas/__tests__/uploadImplementations.spec.js +2 -2
- package/src/sagas/createExecutionGroup.js +1 -1
- package/src/sagas/createImplementationStructure.js +1 -1
- package/src/sagas/createRuleImplementation.js +2 -2
- package/src/sagas/deleteImplementationStructure.js +1 -1
- package/src/sagas/downloadRuleImplementations.js +1 -1
- package/src/sagas/downloadRuleImplementationsXlsx.js +1 -1
- package/src/sagas/fetchRuleImplementation.js +1 -1
- package/src/sagas/fetchRuleImplementationFilters.js +1 -1
- package/src/sagas/fetchRuleImplementations.js +2 -2
- package/src/sagas/searchRuleImplementations.js +2 -2
- package/src/sagas/updateRuleImplementation.js +1 -1
- package/src/sagas/uploadImplementations.js +1 -1
- package/src/sagas/uploadResults.js +1 -1
- package/src/sagas/uploadRules.js +1 -1
- package/src/selectors/__tests__/executionGroupsColumnsSelector.spec.js +2 -2
- package/src/selectors/__tests__/getImplementationStructureLinksColumns.spec.js +1 -1
- package/src/selectors/__tests__/getRuleImplementationSelectedFilterValues.spec.js +1 -1
- package/src/selectors/__tests__/ruleColumnsSelector.spec.js +1 -1
- package/src/selectors/datasetDefaultFiltersSelector.js +1 -1
- package/src/selectors/executionGroupsColumnsSelector.js +1 -1
- package/src/selectors/getExecutionGroupColumns.js +1 -1
- package/src/selectors/getExecutionQuery.js +1 -1
- package/src/selectors/getImplementationStructureLinksColumns.js +10 -10
- package/src/selectors/getImplementationStructures.js +10 -8
- package/src/selectors/getImplementationsExecution.js +1 -1
- package/src/selectors/getLinkedImplementationsToRulesColumns.js +1 -1
- package/src/selectors/getRuleAvailableFilters.js +2 -2
- package/src/selectors/getRuleFilterTypes.js +1 -1
- package/src/selectors/getRuleImplementationAvailableFilters.js +3 -3
- package/src/selectors/getRuleImplementationColumns.js +1 -1
- package/src/selectors/getRuleImplementationFilterTypes.js +1 -1
- package/src/selectors/getRuleImplementationForm.js +11 -11
- package/src/selectors/getRuleImplementationSelectedFilterActiveValues.js +2 -2
- package/src/selectors/getRuleImplementationSelectedFilterValues.js +2 -2
- package/src/selectors/getRuleImplementationSelectedFilters.js +1 -1
- package/src/selectors/getRuleSelectedFilterActiveValues.js +1 -1
- package/src/selectors/getRuleSelectedFilterValues.js +2 -2
- package/src/selectors/getRuleSelectedFilters.js +1 -1
- package/src/selectors/getSegmentResultsColumns.js +1 -1
- package/src/selectors/getStructureFields.js +3 -3
- package/src/selectors/ruleColumnsSelector.js +3 -3
- package/src/selectors/ruleResultsColumnsSelector.js +1 -1
- package/src/services/__tests__/encodeRawContent.spec.js +1 -1
- package/src/services/encodeRawContent.js +1 -1
|
@@ -25,7 +25,7 @@ const updateDatasetKey = (data) =>
|
|
|
25
25
|
["structure"].includes(key)
|
|
26
26
|
? _.set(key, _.pick(["id", "name", "type"])(value))(acc)
|
|
27
27
|
: _.set(key, value)(acc),
|
|
28
|
-
{}
|
|
28
|
+
{},
|
|
29
29
|
)(data);
|
|
30
30
|
|
|
31
31
|
// object either field, raw value, list of fields, list of raw values
|
|
@@ -38,7 +38,7 @@ const updateValueKeyContent = (value) => {
|
|
|
38
38
|
) {
|
|
39
39
|
return value?.id || value?.type === "reference_dataset_field"
|
|
40
40
|
? _.pick(["id", "parent_index", "referenceDataset", "name", "type"])(
|
|
41
|
-
value
|
|
41
|
+
value,
|
|
42
42
|
)
|
|
43
43
|
: _.pick(["raw", "fields"])(value);
|
|
44
44
|
}
|
|
@@ -52,27 +52,27 @@ const updateConditionValue = (acc, value, key) => {
|
|
|
52
52
|
if (key === "structure") {
|
|
53
53
|
return _.set(
|
|
54
54
|
key,
|
|
55
|
-
_.pick(["id", "parent_index", "name", "type"])(value)
|
|
55
|
+
_.pick(["id", "parent_index", "name", "type"])(value),
|
|
56
56
|
)(acc);
|
|
57
57
|
}
|
|
58
58
|
if (key === "modifier")
|
|
59
59
|
return _.set(
|
|
60
60
|
key,
|
|
61
|
-
_.isNil(value) ? null : _.pick(["name", "params"])(value)
|
|
61
|
+
_.isNil(value) ? null : _.pick(["name", "params"])(value),
|
|
62
62
|
)(acc);
|
|
63
63
|
if (key === "value_modifier")
|
|
64
64
|
return _.set(
|
|
65
65
|
key,
|
|
66
66
|
_.every(_.isNil)(value)
|
|
67
67
|
? []
|
|
68
|
-
: _.map((v) => _.pick(["name", "params"])(v))(value)
|
|
68
|
+
: _.map((v) => _.pick(["name", "params"])(v))(value),
|
|
69
69
|
)(acc);
|
|
70
70
|
if (key === "operator")
|
|
71
71
|
return _.set(
|
|
72
72
|
key,
|
|
73
73
|
_.omitBy(_.isNil)(
|
|
74
|
-
_.pick(["name", "value_type", "value_type_filter"])(value)
|
|
75
|
-
)
|
|
74
|
+
_.pick(["name", "value_type", "value_type_filter"])(value),
|
|
75
|
+
),
|
|
76
76
|
)(acc);
|
|
77
77
|
if (key == "value") {
|
|
78
78
|
return { ...acc, value: updateValueKeyContent(value) };
|
|
@@ -85,13 +85,13 @@ const updateConditionValue = (acc, value, key) => {
|
|
|
85
85
|
const updateConditionKey = (condition) =>
|
|
86
86
|
_.reduce.convert({ cap: false })(
|
|
87
87
|
(acc, value, key) => updateConditionValue(acc, value, key),
|
|
88
|
-
{}
|
|
88
|
+
{},
|
|
89
89
|
)(condition);
|
|
90
90
|
|
|
91
91
|
const datasetAttributes = (dataset) =>
|
|
92
92
|
_.flow(
|
|
93
93
|
_.map(_.pickAll(["structure", "clauses", "join_type", "alias"])),
|
|
94
|
-
_.map(updateDatasetKey)
|
|
94
|
+
_.map(updateDatasetKey),
|
|
95
95
|
)(dataset);
|
|
96
96
|
|
|
97
97
|
const conditionAttributes = (condition) =>
|
|
@@ -104,9 +104,9 @@ const conditionAttributes = (condition) =>
|
|
|
104
104
|
"value",
|
|
105
105
|
"value_modifier",
|
|
106
106
|
"population",
|
|
107
|
-
])
|
|
107
|
+
]),
|
|
108
108
|
),
|
|
109
|
-
_.map(updateConditionKey)
|
|
109
|
+
_.map(updateConditionKey),
|
|
110
110
|
)(condition);
|
|
111
111
|
|
|
112
112
|
const conditionsAttributes = (conditions) =>
|
|
@@ -124,7 +124,7 @@ const fieldTypeFromStructure = (row, structures, operators, scope) => {
|
|
|
124
124
|
operators,
|
|
125
125
|
scope,
|
|
126
126
|
field_type,
|
|
127
|
-
_.prop("operator")(row)
|
|
127
|
+
_.prop("operator")(row),
|
|
128
128
|
);
|
|
129
129
|
|
|
130
130
|
const updatedRow = {
|
|
@@ -144,7 +144,7 @@ const withNestedPopulation = (row, siblings, operators, scope) => {
|
|
|
144
144
|
: {
|
|
145
145
|
...row,
|
|
146
146
|
population: _.map((populationRow) =>
|
|
147
|
-
fieldTypeFromStructure(populationRow, siblings, operators, scope)
|
|
147
|
+
fieldTypeFromStructure(populationRow, siblings, operators, scope),
|
|
148
148
|
)(population),
|
|
149
149
|
};
|
|
150
150
|
};
|
|
@@ -160,12 +160,12 @@ const addFieldType = (
|
|
|
160
160
|
structuresSiblings,
|
|
161
161
|
implementationPropertyName,
|
|
162
162
|
scope,
|
|
163
|
-
operators
|
|
163
|
+
operators,
|
|
164
164
|
) => {
|
|
165
165
|
const fields = _.flow(_.values, _.flatten)(structuresFields);
|
|
166
166
|
const siblings = _.flow(_.values, _.flatten)(structuresSiblings);
|
|
167
167
|
const rows = _.map((row) =>
|
|
168
|
-
rowFieldType(row, fields, siblings, operators, scope)
|
|
168
|
+
rowFieldType(row, fields, siblings, operators, scope),
|
|
169
169
|
)(_.prop(implementationPropertyName)(ruleImplementationProps));
|
|
170
170
|
return _.isEmpty(rows) ? [] : rows;
|
|
171
171
|
};
|
|
@@ -181,19 +181,19 @@ const enrichOperator = (operators, scope, field_type, operator) => {
|
|
|
181
181
|
_.flow(
|
|
182
182
|
_.prop(field_type),
|
|
183
183
|
_.prop("operators"),
|
|
184
|
-
_.filter((operator) => inScope(operator, scope))
|
|
185
|
-
)(operators)
|
|
184
|
+
_.filter((operator) => inScope(operator, scope)),
|
|
185
|
+
)(operators),
|
|
186
186
|
)(
|
|
187
187
|
_.flow(
|
|
188
188
|
_.prop("any"),
|
|
189
189
|
_.prop("operators"),
|
|
190
|
-
_.filter((operator) => inScope(operator, scope))
|
|
191
|
-
)(operators)
|
|
190
|
+
_.filter((operator) => inScope(operator, scope)),
|
|
191
|
+
)(operators),
|
|
192
192
|
);
|
|
193
193
|
const op_extra = _.find(
|
|
194
194
|
(op) =>
|
|
195
195
|
_.propEq("name", operator.name)(op) &&
|
|
196
|
-
_.propEq("value_type", operator.value_type)(op)
|
|
196
|
+
_.propEq("value_type", operator.value_type)(op),
|
|
197
197
|
)(type_operators);
|
|
198
198
|
return { ...op_extra, ...operator };
|
|
199
199
|
};
|
|
@@ -235,7 +235,7 @@ const updateStructureParentIndex = (structures) => (structure) => {
|
|
|
235
235
|
const parent = _.find(
|
|
236
236
|
(p) =>
|
|
237
237
|
_.isEqual(p.structure?.path)(parentPath) &&
|
|
238
|
-
_.isEqual(p.structure?.name)(parentName)
|
|
238
|
+
_.isEqual(p.structure?.name)(parentName),
|
|
239
239
|
)(structures);
|
|
240
240
|
|
|
241
241
|
return { ...structure, parent_index: parent.alias.index };
|
|
@@ -273,7 +273,7 @@ export const NewRuleImplementation = ({
|
|
|
273
273
|
}) => {
|
|
274
274
|
const precalculatedDataset = _.flow(
|
|
275
275
|
_.propOr([{}], "dataset"),
|
|
276
|
-
withDefaultAlias
|
|
276
|
+
withDefaultAlias,
|
|
277
277
|
)(ruleImplementationProps);
|
|
278
278
|
const [ruleImplementation, setRuleImplementation] = useState(
|
|
279
279
|
edition
|
|
@@ -302,11 +302,11 @@ export const NewRuleImplementation = ({
|
|
|
302
302
|
structuresSiblings,
|
|
303
303
|
"population",
|
|
304
304
|
"population",
|
|
305
|
-
operators
|
|
305
|
+
operators,
|
|
306
306
|
),
|
|
307
|
-
precalculatedDataset
|
|
308
|
-
)
|
|
309
|
-
)
|
|
307
|
+
precalculatedDataset,
|
|
308
|
+
),
|
|
309
|
+
),
|
|
310
310
|
)(ruleImplementationProps),
|
|
311
311
|
validations: _.flow(
|
|
312
312
|
_.pathOr([], "validations"),
|
|
@@ -318,11 +318,11 @@ export const NewRuleImplementation = ({
|
|
|
318
318
|
structuresSiblings,
|
|
319
319
|
"validation",
|
|
320
320
|
"validation",
|
|
321
|
-
operators
|
|
321
|
+
operators,
|
|
322
322
|
),
|
|
323
|
-
precalculatedDataset
|
|
324
|
-
)
|
|
325
|
-
)
|
|
323
|
+
precalculatedDataset,
|
|
324
|
+
),
|
|
325
|
+
),
|
|
326
326
|
)(ruleImplementationProps),
|
|
327
327
|
segments: withConditionDefaultAlias(
|
|
328
328
|
addFieldType(
|
|
@@ -331,9 +331,9 @@ export const NewRuleImplementation = ({
|
|
|
331
331
|
structuresSiblings,
|
|
332
332
|
"segments",
|
|
333
333
|
"segment",
|
|
334
|
-
{ name: "" }
|
|
334
|
+
{ name: "" },
|
|
335
335
|
),
|
|
336
|
-
precalculatedDataset
|
|
336
|
+
precalculatedDataset,
|
|
337
337
|
),
|
|
338
338
|
|
|
339
339
|
rawContent: ruleImplementationProps.raw_content,
|
|
@@ -374,7 +374,7 @@ export const NewRuleImplementation = ({
|
|
|
374
374
|
rule_id: _.propOr(null, "id")(rule),
|
|
375
375
|
domain_id: conceptDomainId || rule?.domain_id || null,
|
|
376
376
|
rule: rule,
|
|
377
|
-
}
|
|
377
|
+
},
|
|
378
378
|
);
|
|
379
379
|
|
|
380
380
|
const withAliasText = (dataset) => {
|
|
@@ -382,7 +382,7 @@ export const NewRuleImplementation = ({
|
|
|
382
382
|
_.groupBy("structure.id"),
|
|
383
383
|
_.pickBy((x) => x.length > 1),
|
|
384
384
|
_.keys,
|
|
385
|
-
_.map(Number)
|
|
385
|
+
_.map(Number),
|
|
386
386
|
)(dataset);
|
|
387
387
|
return _.map((ds) =>
|
|
388
388
|
_.path("alias.text")(ds)
|
|
@@ -397,7 +397,7 @@ export const NewRuleImplementation = ({
|
|
|
397
397
|
? `${ds.structure?.name} (${ds.alias?.index})`
|
|
398
398
|
: `${ds.structure?.name}`,
|
|
399
399
|
},
|
|
400
|
-
}
|
|
400
|
+
},
|
|
401
401
|
)(dataset);
|
|
402
402
|
};
|
|
403
403
|
|
|
@@ -409,7 +409,7 @@ export const NewRuleImplementation = ({
|
|
|
409
409
|
_.pickAll(datasetStructures),
|
|
410
410
|
_.values,
|
|
411
411
|
_.flatten,
|
|
412
|
-
_.map(_.prop("data_structure_id"))
|
|
412
|
+
_.map(_.prop("data_structure_id")),
|
|
413
413
|
)(structuresFields);
|
|
414
414
|
|
|
415
415
|
const belongsToDataset = (structureId) =>
|
|
@@ -426,18 +426,18 @@ export const NewRuleImplementation = ({
|
|
|
426
426
|
const populationsWithinDataset = _.flow(
|
|
427
427
|
_.prop("populations"),
|
|
428
428
|
_.map((population) => _.filter(withinDataset)(population)),
|
|
429
|
-
_.reject(_.isEmpty)
|
|
429
|
+
_.reject(_.isEmpty),
|
|
430
430
|
)(ruleImplementation);
|
|
431
431
|
|
|
432
432
|
const validationsWithinDataset = _.flow(
|
|
433
433
|
_.prop("validations"),
|
|
434
434
|
_.map((validation) => _.filter(withinDataset)(validation)),
|
|
435
|
-
_.reject(_.isEmpty)
|
|
435
|
+
_.reject(_.isEmpty),
|
|
436
436
|
)(ruleImplementation);
|
|
437
437
|
|
|
438
438
|
const segmentsWithinDataset = _.flow(
|
|
439
439
|
_.prop("segments"),
|
|
440
|
-
_.filter(withinDataset)
|
|
440
|
+
_.filter(withinDataset),
|
|
441
441
|
)(ruleImplementation);
|
|
442
442
|
|
|
443
443
|
setRuleImplementation({
|
|
@@ -458,7 +458,7 @@ export const NewRuleImplementation = ({
|
|
|
458
458
|
|
|
459
459
|
const addPopulation = () => {
|
|
460
460
|
const populations = _.concat(
|
|
461
|
-
_.pathOr([], "populations")(ruleImplementation)
|
|
461
|
+
_.pathOr([], "populations")(ruleImplementation),
|
|
462
462
|
)([[{}]]);
|
|
463
463
|
setRuleImplementation({ ...ruleImplementation, populations: populations });
|
|
464
464
|
};
|
|
@@ -467,7 +467,7 @@ export const NewRuleImplementation = ({
|
|
|
467
467
|
const populations = _.flow(
|
|
468
468
|
_.pathOr([], "populations"),
|
|
469
469
|
_.update(`[${index}]`, (_previousPopulation) => population),
|
|
470
|
-
_.reject(_.isEmpty)
|
|
470
|
+
_.reject(_.isEmpty),
|
|
471
471
|
)(ruleImplementation);
|
|
472
472
|
|
|
473
473
|
setRuleImplementation({ ...ruleImplementation, populations: populations });
|
|
@@ -475,7 +475,7 @@ export const NewRuleImplementation = ({
|
|
|
475
475
|
|
|
476
476
|
const addValidation = () => {
|
|
477
477
|
const validations = _.concat(
|
|
478
|
-
_.pathOr([[{}]], "validations")(ruleImplementation)
|
|
478
|
+
_.pathOr([[{}]], "validations")(ruleImplementation),
|
|
479
479
|
)([[{}]]);
|
|
480
480
|
setRuleImplementation({ ...ruleImplementation, validations: validations });
|
|
481
481
|
};
|
|
@@ -484,7 +484,7 @@ export const NewRuleImplementation = ({
|
|
|
484
484
|
const validations = _.flow(
|
|
485
485
|
_.pathOr([], "validations"),
|
|
486
486
|
_.update(`[${index}]`, (_previousValidation) => validation),
|
|
487
|
-
_.reject(_.isEmpty)
|
|
487
|
+
_.reject(_.isEmpty),
|
|
488
488
|
)(ruleImplementation);
|
|
489
489
|
|
|
490
490
|
setRuleImplementation({
|
|
@@ -687,7 +687,7 @@ export const ImplementationConceptLoader = (props) => {
|
|
|
687
687
|
|
|
688
688
|
const conceptDomainIds = _.flow(
|
|
689
689
|
_.map(({ id: id }) => id),
|
|
690
|
-
_.concat(domainId)
|
|
690
|
+
_.concat(domainId),
|
|
691
691
|
)(sharedTo);
|
|
692
692
|
|
|
693
693
|
return loading ? (
|
|
@@ -2,40 +2,44 @@ import PropTypes from "prop-types";
|
|
|
2
2
|
import Moment from "react-moment";
|
|
3
3
|
import { Feed } from "semantic-ui-react";
|
|
4
4
|
|
|
5
|
-
const dateDecorator = date =>
|
|
5
|
+
const dateDecorator = (date) =>
|
|
6
6
|
date && <Moment locale="es" date={date} format="YYYY-MM-DD HH:mm:ss.SSS" />;
|
|
7
7
|
|
|
8
8
|
export const Event = ({ inserted_at, message, type }) => (
|
|
9
|
-
<Feed.Event
|
|
9
|
+
<Feed.Event>
|
|
10
|
+
<Feed.Content
|
|
10
11
|
date={dateDecorator(inserted_at)}
|
|
11
12
|
summary={type}
|
|
12
13
|
extraText={message}
|
|
13
|
-
|
|
14
|
+
/>
|
|
15
|
+
</Feed.Event>
|
|
14
16
|
);
|
|
15
17
|
|
|
16
18
|
Event.propTypes = {
|
|
17
19
|
inserted_at: PropTypes.string,
|
|
18
20
|
message: PropTypes.string,
|
|
19
|
-
type: PropTypes.string
|
|
21
|
+
type: PropTypes.string,
|
|
20
22
|
};
|
|
21
23
|
|
|
22
24
|
export const QualityEventError = ({ inserted_at, message, type }) => {
|
|
23
25
|
return (
|
|
24
|
-
|
|
26
|
+
<Feed size="large">
|
|
27
|
+
{
|
|
25
28
|
<Event
|
|
26
29
|
key="failed_event"
|
|
27
30
|
inserted_at={inserted_at}
|
|
28
31
|
message={message}
|
|
29
32
|
type={type}
|
|
30
33
|
/>
|
|
31
|
-
}
|
|
34
|
+
}
|
|
35
|
+
</Feed>
|
|
32
36
|
);
|
|
33
37
|
};
|
|
34
38
|
|
|
35
39
|
QualityEventError.propTypes = {
|
|
36
40
|
inserted_at: PropTypes.string,
|
|
37
41
|
message: PropTypes.string,
|
|
38
|
-
type: PropTypes.string
|
|
42
|
+
type: PropTypes.string,
|
|
39
43
|
};
|
|
40
44
|
|
|
41
45
|
export default QualityEventError;
|
|
@@ -8,7 +8,7 @@ import { Button, Form } from "semantic-ui-react";
|
|
|
8
8
|
import { createRemediation, updateRemediation } from "../routines";
|
|
9
9
|
|
|
10
10
|
const SelectableDynamicForm = lazy(
|
|
11
|
-
() => import("@truedat/df/components/SelectableDynamicForm")
|
|
11
|
+
() => import("@truedat/df/components/SelectableDynamicForm"),
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
export const RemediationForm = ({
|
|
@@ -15,7 +15,7 @@ import RemediationForm from "./RemediationForm";
|
|
|
15
15
|
import "../styles/remediationPlan.less";
|
|
16
16
|
|
|
17
17
|
const DynamicFormViewer = lazy(
|
|
18
|
-
() => import("@truedat/df/components/DynamicFormViewer")
|
|
18
|
+
() => import("@truedat/df/components/DynamicFormViewer"),
|
|
19
19
|
);
|
|
20
20
|
|
|
21
21
|
export const RemediationPlan = ({
|
|
@@ -89,7 +89,7 @@ export const RemediationPlan = ({
|
|
|
89
89
|
{!isEdit && remediation?.df_name ? (
|
|
90
90
|
<DynamicFormViewer
|
|
91
91
|
template={_.find(_.propEq("name", remediation.df_name))(
|
|
92
|
-
templates
|
|
92
|
+
templates,
|
|
93
93
|
)}
|
|
94
94
|
content={remediation.dynamic_content}
|
|
95
95
|
/>
|
package/src/components/Rule.js
CHANGED
|
@@ -71,7 +71,7 @@ export const RuleActions = ({ deleteRule, manageRule, rule: { id, name } }) => {
|
|
|
71
71
|
const availableActions = _.flow(
|
|
72
72
|
_.omitBy(_.isUndefined),
|
|
73
73
|
_.keys,
|
|
74
|
-
_.map((action) => contentActions[action])
|
|
74
|
+
_.map((action) => contentActions[action]),
|
|
75
75
|
)(actions);
|
|
76
76
|
return availableActions;
|
|
77
77
|
};
|
|
@@ -16,7 +16,7 @@ export const RuleEventDecorator = ({ _embedded }) => {
|
|
|
16
16
|
propOr([], "quality_events"),
|
|
17
17
|
sortBy("inserted_at"),
|
|
18
18
|
last,
|
|
19
|
-
prop("type")
|
|
19
|
+
prop("type"),
|
|
20
20
|
)(_embedded);
|
|
21
21
|
const icon = propOr(PENDING, event)(icons);
|
|
22
22
|
return <Icon size="large" {...icon} />;
|
|
@@ -13,7 +13,7 @@ const mapStateToProps = (state) => ({
|
|
|
13
13
|
const mapDispatchToProps = (dispatch) =>
|
|
14
14
|
bindActionCreators(
|
|
15
15
|
{ addFilter: addRuleFilter, resetFilters: resetRuleFilters },
|
|
16
|
-
dispatch
|
|
16
|
+
dispatch,
|
|
17
17
|
);
|
|
18
18
|
|
|
19
19
|
export default connect(mapStateToProps, mapDispatchToProps)(AvailableFilters);
|
|
@@ -7,7 +7,7 @@ import { clearRuleFilters, fetchRuleFilters } from "../routines";
|
|
|
7
7
|
const mapDispatchToProps = (dispatch) =>
|
|
8
8
|
bindActionCreators(
|
|
9
9
|
{ clearFilters: clearRuleFilters, fetchFilters: fetchRuleFilters },
|
|
10
|
-
dispatch
|
|
10
|
+
dispatch,
|
|
11
11
|
);
|
|
12
12
|
|
|
13
13
|
const makeMapStateToProps = () => {
|
|
@@ -2,6 +2,7 @@ import _ from "lodash/fp";
|
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import { connect } from "react-redux";
|
|
4
4
|
import { Container } from "semantic-ui-react";
|
|
5
|
+
import { SearchContextProvider } from "@truedat/core/search/SearchContext";
|
|
5
6
|
import { getLinkedImplementationsToRulesColumns } from "../selectors";
|
|
6
7
|
import {
|
|
7
8
|
useRuleImplementationFromRulesSearch,
|
|
@@ -9,7 +10,6 @@ import {
|
|
|
9
10
|
} from "../hooks/useImplementations";
|
|
10
11
|
import RuleImplementationsTable from "./RuleImplementationsTable";
|
|
11
12
|
import RuleImplementationActions from "./RuleImplementationActions";
|
|
12
|
-
import { SearchContextProvider } from "@truedat/core/search/SearchContext";
|
|
13
13
|
|
|
14
14
|
export const RuleFormImplementations = ({ rule, columns }) => {
|
|
15
15
|
const searchProps = {
|
|
@@ -28,7 +28,7 @@ export const RuleImplementationEventRow = ({
|
|
|
28
28
|
text
|
|
29
29
|
content={formatMessage(
|
|
30
30
|
{ id: "ruleImplementations.events.action_" + action },
|
|
31
|
-
[field, _.isObject(value) ? JSON.stringify(value) : value]
|
|
31
|
+
[field, _.isObject(value) ? JSON.stringify(value) : value],
|
|
32
32
|
)}
|
|
33
33
|
/>
|
|
34
34
|
))}
|
|
@@ -9,7 +9,7 @@ import ImplementationSummary from "./ImplementationSummary";
|
|
|
9
9
|
import RawContent from "./RawContent";
|
|
10
10
|
|
|
11
11
|
const DynamicFormViewer = lazy(
|
|
12
|
-
() => import("@truedat/df/components/DynamicFormViewer")
|
|
12
|
+
() => import("@truedat/df/components/DynamicFormViewer"),
|
|
13
13
|
);
|
|
14
14
|
|
|
15
15
|
const summarySteps = ["dataset", "populations", "validations", "segments"];
|
|
@@ -95,7 +95,7 @@ const mapStateToProps = ({
|
|
|
95
95
|
ruleImplementation,
|
|
96
96
|
ruleImplementationRaw,
|
|
97
97
|
templateImpl: _.find(_.propEq("name", ruleImplementation.df_name))(
|
|
98
|
-
allTemplates
|
|
98
|
+
allTemplates,
|
|
99
99
|
),
|
|
100
100
|
ruleImplementationLoaded:
|
|
101
101
|
!ruleImplementationLoading && !_.isEmpty(ruleImplementation),
|
|
@@ -16,7 +16,7 @@ export const PAGE_SIZE = 20;
|
|
|
16
16
|
|
|
17
17
|
export const getCustomColumnsWithData = (ruleResults, columns) =>
|
|
18
18
|
_.filter((column) =>
|
|
19
|
-
_.any(_.flow(columnDecorator(column), _.negate(_.isEmpty)))(ruleResults)
|
|
19
|
+
_.any(_.flow(columnDecorator(column), _.negate(_.isEmpty)))(ruleResults),
|
|
20
20
|
)(columns);
|
|
21
21
|
|
|
22
22
|
export const RuleImplementationResults = ({ implementation, results }) => {
|
|
@@ -67,7 +67,7 @@ export const RuleImplementationResultsLoader = (props) => {
|
|
|
67
67
|
IMPLEMENTATION_RESULTS_CONNECTION_QUERY,
|
|
68
68
|
{
|
|
69
69
|
variables,
|
|
70
|
-
}
|
|
70
|
+
},
|
|
71
71
|
);
|
|
72
72
|
if (error) return null;
|
|
73
73
|
if (loading) return <Loading />;
|
|
@@ -34,7 +34,7 @@ export const RuleImplementationTabs = ({
|
|
|
34
34
|
|
|
35
35
|
const implConceptLinksActive = useActiveRoute(IMPLEMENTATION_CONCEPT_LINKS);
|
|
36
36
|
const implConceptLinksNewActive = useActiveRoute(
|
|
37
|
-
IMPLEMENTATION_CONCEPT_LINKS_NEW
|
|
37
|
+
IMPLEMENTATION_CONCEPT_LINKS_NEW,
|
|
38
38
|
);
|
|
39
39
|
const conceptLinksActive =
|
|
40
40
|
implConceptLinksActive || implConceptLinksNewActive;
|
|
@@ -52,7 +52,7 @@ export const RuleImplementationTabs = ({
|
|
|
52
52
|
const latest_rule_id = _.flow(
|
|
53
53
|
_.pathOr([], "results"),
|
|
54
54
|
_.head,
|
|
55
|
-
_.pathOr(null, "id")
|
|
55
|
+
_.pathOr(null, "id"),
|
|
56
56
|
)(ruleImplementation);
|
|
57
57
|
|
|
58
58
|
return _.isEmpty(ruleImplementation) ? null : (
|
|
@@ -165,15 +165,15 @@ const mapStateToProps = ({
|
|
|
165
165
|
canCreateLink: _.propOr(false, "link_concept")(implementationActions),
|
|
166
166
|
canViewPublishedConcepts: _.propOr(
|
|
167
167
|
false,
|
|
168
|
-
"view_published_concept"
|
|
168
|
+
"view_published_concept",
|
|
169
169
|
)(implementationActions),
|
|
170
170
|
canViewDraftConcepts: _.propOr(
|
|
171
171
|
false,
|
|
172
|
-
"view_draft_concept"
|
|
172
|
+
"view_draft_concept",
|
|
173
173
|
)(implementationActions),
|
|
174
174
|
canViewPendingApprovalConcepts: _.propOr(
|
|
175
175
|
false,
|
|
176
|
-
"view_approval_pending_concept"
|
|
176
|
+
"view_approval_pending_concept",
|
|
177
177
|
)(implementationActions),
|
|
178
178
|
};
|
|
179
179
|
};
|
|
@@ -39,7 +39,7 @@ export const RuleImplementationsDownload = () => {
|
|
|
39
39
|
const dispatch = useDispatch();
|
|
40
40
|
const { formatMessage, locale } = useIntl();
|
|
41
41
|
const ruleImplementationsDownloading = useSelector(
|
|
42
|
-
(state) => state.ruleImplementationsDownloading
|
|
42
|
+
(state) => state.ruleImplementationsDownloading,
|
|
43
43
|
);
|
|
44
44
|
|
|
45
45
|
const {
|
|
@@ -50,12 +50,12 @@ export const RuleImplementationsDownload = () => {
|
|
|
50
50
|
|
|
51
51
|
const headerLabels = _.flow(
|
|
52
52
|
_.map((l) => [l, formatMessage({ id: `ruleImplementations.props.${l}` })]),
|
|
53
|
-
_.fromPairs
|
|
53
|
+
_.fromPairs,
|
|
54
54
|
)(staticHeaderLabels);
|
|
55
55
|
|
|
56
56
|
const contentLabels = _.flow(
|
|
57
57
|
_.map((l) => [l, formatMessage({ id: `ruleImplementations.props.${l}` })]),
|
|
58
|
-
_.fromPairs
|
|
58
|
+
_.fromPairs,
|
|
59
59
|
)(staticContentLabels);
|
|
60
60
|
|
|
61
61
|
const isEmpty = _.isEmpty(searchData?.data);
|
|
@@ -77,7 +77,7 @@ export const RuleImplementationsDownload = () => {
|
|
|
77
77
|
headerLabels,
|
|
78
78
|
searchParams,
|
|
79
79
|
lang: locale,
|
|
80
|
-
})
|
|
80
|
+
}),
|
|
81
81
|
)
|
|
82
82
|
}
|
|
83
83
|
disabled={ruleImplementationsDownloading}
|
|
@@ -25,12 +25,12 @@ export const RuleImplementationsDownloadXlsx = () => {
|
|
|
25
25
|
<Dropdown.Item
|
|
26
26
|
icon="download"
|
|
27
27
|
content={
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
<span>
|
|
29
|
+
{formatMessage({
|
|
30
|
+
id: "implementations.actions.downloadXlsx.tooltip",
|
|
31
|
+
})}
|
|
32
|
+
</span>
|
|
33
|
+
}
|
|
34
34
|
onClick={() =>
|
|
35
35
|
triggerDownload({
|
|
36
36
|
...searchParams,
|
|
@@ -20,7 +20,6 @@ export const RuleImplementationsLoader = ({
|
|
|
20
20
|
}, [clearRuleImplementations]);
|
|
21
21
|
useEffect(() => {
|
|
22
22
|
searchRuleImplementations(payload);
|
|
23
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
23
|
}, [payload, searchRuleImplementations]);
|
|
25
24
|
return null;
|
|
26
25
|
};
|
|
@@ -34,7 +33,7 @@ RuleImplementationsLoader.propTypes = {
|
|
|
34
33
|
const makeMapStateToProps = () => {
|
|
35
34
|
const searchQuerySelector = makeSearchQuerySelector(
|
|
36
35
|
"ruleImplementationQuery",
|
|
37
|
-
"ruleImplementationActiveFilters"
|
|
36
|
+
"ruleImplementationActiveFilters",
|
|
38
37
|
);
|
|
39
38
|
const mapStateToProps = (state, props) => ({
|
|
40
39
|
payload: searchQuerySelector(state, props),
|
|
@@ -25,7 +25,7 @@ export const RuleImplementationsTable = ({
|
|
|
25
25
|
const ruleImplementations = searchData?.data || [];
|
|
26
26
|
|
|
27
27
|
const validColumns = _.reject(
|
|
28
|
-
({ hideOn }) => _.isFunction(hideOn) && hideOn(ruleImplementations)
|
|
28
|
+
({ hideOn }) => _.isFunction(hideOn) && hideOn(ruleImplementations),
|
|
29
29
|
)(columns);
|
|
30
30
|
|
|
31
31
|
return (
|
|
@@ -41,11 +41,11 @@ export const calculateResultDecoration = ({
|
|
|
41
41
|
|
|
42
42
|
const executionInfoIsObject = _.flow(
|
|
43
43
|
_.prop("execution_result_info"),
|
|
44
|
-
_.isObject
|
|
44
|
+
_.isObject,
|
|
45
45
|
);
|
|
46
46
|
const notEmptyResults = _.flow(
|
|
47
47
|
_.prop("results"),
|
|
48
|
-
(results) => _.isArray(results) && !_.isEmpty(results)
|
|
48
|
+
(results) => _.isArray(results) && !_.isEmpty(results),
|
|
49
49
|
);
|
|
50
50
|
const hasRequiredFields = (ruleImplementation) =>
|
|
51
51
|
_.has("goal")(ruleImplementation) && _.has("minimum")(ruleImplementation);
|
|
@@ -78,7 +78,7 @@ export const calculateResultDecoration = ({
|
|
|
78
78
|
: date
|
|
79
79
|
? formatMessage(
|
|
80
80
|
{ id: `quality.result.${type}.date` },
|
|
81
|
-
{ result, date: <DateTime value={date} /> }
|
|
81
|
+
{ result, date: <DateTime value={date} /> },
|
|
82
82
|
)
|
|
83
83
|
: formatMessage({ id: `quality.result.${type}.description` }, { result });
|
|
84
84
|
|