diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-05-19 17:39:05 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-05-19 17:39:05 +0300 |
commit | 7dfec581282e317985191b28f302bae24534a70f (patch) | |
tree | dd52adc6c46ad14a38c63f3271902b396d387eaf /client | |
parent | 8101d7ade85dbdf6dad95d96a937bf9718630373 (diff) | |
parent | 977bce9eb2d367220f30d15e5913d62a2d22c8a0 (diff) | |
download | wekan-7dfec581282e317985191b28f302bae24534a70f.tar.gz wekan-7dfec581282e317985191b28f302bae24534a70f.tar.bz2 wekan-7dfec581282e317985191b28f302bae24534a70f.zip |
Merge branch 'feature-custom-fields-filter' of https://github.com/feuerball11/wekan into feuerball11-feature-custom-fields-filter
Diffstat (limited to 'client')
-rw-r--r-- | client/components/sidebar/sidebarFilters.jade | 15 | ||||
-rw-r--r-- | client/components/sidebar/sidebarFilters.js | 5 | ||||
-rw-r--r-- | client/lib/filter.js | 17 |
3 files changed, 34 insertions, 3 deletions
diff --git a/client/components/sidebar/sidebarFilters.jade b/client/components/sidebar/sidebarFilters.jade index 273df8c2..5f9fcf72 100644 --- a/client/components/sidebar/sidebarFilters.jade +++ b/client/components/sidebar/sidebarFilters.jade @@ -40,6 +40,21 @@ template(name="filterSidebar") | (<span class="username">{{ username }}</span>) if Filter.members.isSelected _id i.fa.fa-check + hr + ul.sidebar-list + li(class="{{#if Filter.customFields.isSelected undefined}}active{{/if}}") + a.name.js-toggle-custom-fields-filter + span.sidebar-list-item-description + | {{_ 'filter-no-custom-fields'}} + if Filter.customFields.isSelected undefined + i.fa.fa-check + each currentBoard.customFields + li(class="{{#if Filter.customFields.isSelected _id}}active{{/if}}") + a.name.js-toggle-custom-fields-filter + span.sidebar-list-item-description + {{ name }} + if Filter.customFields.isSelected _id + i.fa.fa-check 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 f02d3a4a..ba2633de 100644 --- a/client/components/sidebar/sidebarFilters.js +++ b/client/components/sidebar/sidebarFilters.js @@ -11,6 +11,11 @@ BlazeComponent.extendComponent({ Filter.members.toggle(this.currentData()._id); Filter.resetExceptions(); }, + 'click .js-toggle-custom-fields-filter'(evt) { + evt.preventDefault(); + Filter.customFields.toggle(this.currentData()._id); + Filter.resetExceptions(); + }, 'click .js-clear-all'(evt) { evt.preventDefault(); Filter.reset(); diff --git a/client/lib/filter.js b/client/lib/filter.js index 8129776b..f68c9711 100644 --- a/client/lib/filter.js +++ b/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','field2']} (subField would be: _id) class SetFilter { - constructor() { + constructor(subField = '') { this._dep = new Tracker.Dependency(); this._selectedElements = []; + this.subField = subField; } isSelected(val) { @@ -86,8 +89,9 @@ Filter = { // before changing the schema. labelIds: new SetFilter(), members: new SetFilter(), + customFields: new SetFilter('_id'), - _fields: ['labelIds', 'members'], + _fields: ['labelIds', 'members', 'customFields'], // We don't filter cards that have been added after the last filter change. To // implement this we keep the id of these cards in this `_exceptions` fields @@ -111,7 +115,14 @@ Filter = { this._fields.forEach((fieldName) => { const filter = this[fieldName]; if (filter._isActive()) { - filterSelector[fieldName] = filter._getMongoSelector(); + if (filter.subField !== '') + { + filterSelector[`${fieldName}.${filter.subField}`] = filter._getMongoSelector(); + } + else + { + filterSelector[fieldName] = filter._getMongoSelector(); + } emptySelector[fieldName] = filter._getEmptySelector(); if (emptySelector[fieldName] !== null) { includeEmptySelectors = true; |