diff options
-rw-r--r-- | client/components/sidebar/sidebarFilters.jade | 2 | ||||
-rw-r--r-- | client/components/sidebar/sidebarFilters.js | 2 | ||||
-rw-r--r-- | client/lib/filter.js | 13 | ||||
-rw-r--r-- | i18n/en.i18n.json | 2 |
4 files changed, 10 insertions, 9 deletions
diff --git a/client/components/sidebar/sidebarFilters.jade b/client/components/sidebar/sidebarFilters.jade index 00d8c87b..c0696391 100644 --- a/client/components/sidebar/sidebarFilters.jade +++ b/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 diff --git a/client/components/sidebar/sidebarFilters.js b/client/components/sidebar/sidebarFilters.js index 6fb3f500..fd8229e4 100644 --- a/client/components/sidebar/sidebarFilters.js +++ b/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(); diff --git a/client/lib/filter.js b/client/lib/filter.js index 18d95ebd..c5f8fe7e 100644 --- a/client/lib/filter.js +++ b/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(); }, diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index e2d6ddce..f44dba23 100644 --- a/i18n/en.i18n.json +++ b/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", |