Browse Source

Removing Debug Lines, correcting behavior, caching las valide filter, and adding description

IgnatzHome 7 years ago
parent
commit
dd7c9997a9

+ 2 - 0
client/components/sidebar/sidebarFilters.jade

@@ -56,7 +56,9 @@ template(name="filterSidebar")
           if Filter.customFields.isSelected _id
               i.fa.fa-check
   hr
+  span {{_ 'advanced-filter-label}}
   input.js-field-advanced-filter(type="text")
+  span {{_ 'advanced-filter-description'}}
   if Filter.isActive
     hr
     a.sidebar-btn.js-clear-all

+ 1 - 1
client/components/sidebar/sidebarFilters.js

@@ -16,7 +16,7 @@ BlazeComponent.extendComponent({
         Filter.customFields.toggle(this.currentData()._id);
         Filter.resetExceptions();
       },
-      'input .js-field-advanced-filter'(evt) {
+      'change .js-field-advanced-filter'(evt) {
         evt.preventDefault();
         Filter.advanced.set(this.find('.js-field-advanced-filter').value.trim());
         Filter.resetExceptions();

+ 5 - 8
client/lib/filter.js

@@ -86,6 +86,7 @@ class AdvancedFilter {
   constructor() {
     this._dep = new Tracker.Dependency();
     this._filter = '';
+    this._lastValide={};
   }
 
   set(str)
@@ -96,6 +97,7 @@ class AdvancedFilter {
 
   reset() {
     this._filter = '';
+    this._lastValide={};
     this._dep.changed();
   }
 
@@ -147,26 +149,23 @@ class AdvancedFilter {
 
   _fieldNameToId(field)
   {
-    console.log(`searching: ${field}`);
     const found = CustomFields.findOne({'name':field});
-    console.log(found);
     return found._id;
   }
 
   _arrayToSelector(commands)
   {
-    console.log('Parts: ', JSON.stringify(commands));
     try {
       //let changed = false;
       this._processSubCommands(commands);
     }
-    catch (e){return { $in: [] };}
+    catch (e){return this._lastValide;}
+    this._lastValide = {$or: commands};
     return {$or: commands};
   }
 
   _processSubCommands(commands)
   {
-    console.log('SubCommands: ', JSON.stringify(commands));
     const subcommands = [];
     let level = 0;
     let start = -1;
@@ -205,16 +204,13 @@ class AdvancedFilter {
     if (start !== -1)
     {
       this._processSubCommands(subcommands);
-      console.log ('subcommands: ', subcommands.length);
       if (subcommands.length === 1)
         commands.splice(start, 0, subcommands[0]);
       else
         commands.splice(start, 0, subcommands);
     }
     this._processConditions(commands);
-    console.log('Conditions: ', JSON.stringify(commands));
     this._processLogicalOperators(commands);
-    console.log('Operator: ', JSON.stringify(commands));
   }
 
   _processConditions(commands)
@@ -458,6 +454,7 @@ Filter = {
       const filter = this[fieldName];
       filter.reset();
     });
+    this.advanced.reset();
     this.resetExceptions();
   },
 

+ 2 - 0
i18n/en.i18n.json

@@ -246,6 +246,8 @@
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A Space is used as seperator between the operators. You can filter for all custom fields by simply typing there names and values. For example: Field1 == Value1  Note: If fields or values contains spaces, you need to encapsulate them into single quetes. For example: 'Field 1' == 'Value 1' Also you can combine multiple Conditions. For Example: F1 == V1 || F1 = V2  Normaly all Operators are interpreted from left to right. You can change the order of that by placing brakets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",