Browse Source

Correcting constructed mongoSelector

IgnatzHome 7 years ago
parent
commit
cbdb7b4f64
2 changed files with 22 additions and 11 deletions
  1. 1 1
      .eslintrc.json
  2. 21 10
      client/lib/filter.js

+ 1 - 1
.eslintrc.json

@@ -32,7 +32,7 @@
     "comma-spacing": 2,
     "comma-style": 2,
     "eol-last": 2,
-    "linebreak-style": [2, "unix"],
+    "linebreak-style": [2, "windows"],
     "new-parens": 2,
     "no-lonely-if": 2,
     "no-multiple-empty-lines": 2,

+ 21 - 10
client/lib/filter.js

@@ -10,10 +10,13 @@ function showFilterSidebar() {
 
 // Use a "set" filter for a field that is a set of documents uniquely
 // identified. For instance `{ labels: ['labelA', 'labelC', 'labelD'] }`.
+// use "subField" for searching inside object Fields.
+// For instance '{ customFields: [{_id : 'field1'}]} (subField would be: _id)
 class SetFilter {
-  constructor() {
+  constructor(subField = '') {
     this._dep = new Tracker.Dependency();
     this._selectedElements = [];
+    this.subField = subField;
   }
 
   isSelected(val) {
@@ -61,7 +64,21 @@ class SetFilter {
 
   _getMongoSelector() {
     this._dep.depend();
-    return { $in: this._selectedElements };
+    if (this.subField !== '')
+    {
+
+      const selector = [];
+      this._selectedElements.forEach((element) => {
+        const item = [];
+        item[this.subField] = element;
+        selector.push(item);
+      });
+      return {$in: selector};
+    }
+    else
+    {
+      return { $in: this._selectedElements };
+    }
   }
 
   _getEmptySelector() {
@@ -86,7 +103,7 @@ Filter = {
   // before changing the schema.
   labelIds: new SetFilter(),
   members: new SetFilter(),
-  customFields: new SetFilter(),
+  customFields: new SetFilter('_id'),
 
   _fields: ['labelIds', 'members', 'customFields'],
 
@@ -112,13 +129,7 @@ Filter = {
     this._fields.forEach((fieldName) => {
       const filter = this[fieldName];
       if (filter._isActive()) {
-        if (fieldName === 'customFields'){
-          filterSelector[fieldName] = {_id: filter._getMongoSelector()};
-        }
-        else
-        {
-          filterSelector[fieldName] = filter._getMongoSelector();
-        }
+        filterSelector[fieldName] = filter._getMongoSelector();
         emptySelector[fieldName] = filter._getEmptySelector();
         if (emptySelector[fieldName] !== null) {
           includeEmptySelectors = true;