summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/lib/filter.js27
1 files changed, 24 insertions, 3 deletions
diff --git a/client/lib/filter.js b/client/lib/filter.js
index 74305284..656f5fe2 100644
--- a/client/lib/filter.js
+++ b/client/lib/filter.js
@@ -61,7 +61,18 @@ class SetFilter {
_getMongoSelector() {
this._dep.depend();
- return { $in: this._selectedElements };
+ return { $in: this._selectedElements }
+ }
+
+ _getEmptySelector() {
+ this._dep.depend();
+ let includeEmpty = false
+ this._selectedElements.forEach((el) => {
+ if (el == undefined) {
+ includeEmpty = true;
+ }
+ });
+ return includeEmpty ? { $eq: [] } : null;
}
}
@@ -95,16 +106,26 @@ Filter = {
return {};
const filterSelector = {};
+ const emptySelector = {};
+ let includeEmptySelectors = false;
this._fields.forEach((fieldName) => {
const filter = this[fieldName];
- if (filter._isActive())
+ if (filter._isActive()) {
filterSelector[fieldName] = filter._getMongoSelector();
+ emptySelector[fieldName] = filter._getEmptySelector();
+ if (emptySelector[fieldName] != null) {
+ includeEmptySelectors = true;
+ }
+ }
});
const exceptionsSelector = {_id: {$in: this._exceptions}};
this._exceptionsDep.depend();
- return {$or: [filterSelector, exceptionsSelector]};
+ if (includeEmptySelectors)
+ return {$or: [filterSelector, exceptionsSelector, emptySelector]};
+ else
+ return {$or: [filterSelector, exceptionsSelector]};
},
mongoSelector(additionalSelector) {