@evoke-platform/ui-components 1.0.0-dev.252 → 1.0.0-dev.253
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.
@@ -328,26 +328,8 @@ const CriteriaBuilder = (props) => {
|
|
328
328
|
const handleQueryChange = (q) => {
|
329
329
|
setQuery(q);
|
330
330
|
const newCriteria = JSON.parse(formatQuery(q, 'mongodb'));
|
331
|
-
//Filters out the empty rules
|
332
|
-
const filterEmptyRules = (newCriteria) => {
|
333
|
-
let updatedCriteria;
|
334
|
-
Object.keys(newCriteria).forEach((key) => {
|
335
|
-
updatedCriteria = newCriteria[key];
|
336
|
-
if (key === '$and' || key === '$or') {
|
337
|
-
if (Array.isArray(updatedCriteria)) {
|
338
|
-
newCriteria[key] = updatedCriteria.filter((query) => !isEmpty(difference(query, { $and: [{ $expr: true }] })));
|
339
|
-
}
|
340
|
-
}
|
341
|
-
//If it is an object filter there may be a nested rule
|
342
|
-
if (typeof updatedCriteria === 'object') {
|
343
|
-
filterEmptyRules(updatedCriteria);
|
344
|
-
}
|
345
|
-
});
|
346
|
-
return newCriteria;
|
347
|
-
};
|
348
|
-
const filteredCriteria = filterEmptyRules(newCriteria);
|
349
331
|
//when q has no rules, it formats and parses to { $and: [{ $expr: true }] }
|
350
|
-
const allRulesDeleted = isEmpty(difference(
|
332
|
+
const allRulesDeleted = isEmpty(difference(newCriteria, { $and: [{ $expr: true }] }));
|
351
333
|
// since the Add Condition / Add Group buttons add rules with all the fields empty,
|
352
334
|
// we need to check if the first rule was added because q will still parse to { $and: [{ $expr: true }] }
|
353
335
|
const firstRuleAdded = isEmpty(criteria) && q.rules.length > 0;
|