From 5a23c962d2d2c8a4ef3f30a3b0965039808924e8 Mon Sep 17 00:00:00 2001 From: Mario Orlicky Date: Sun, 13 Nov 2016 20:38:14 +0100 Subject: Filtering logic by empty labels/members --- client/lib/filter.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'client') 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) { -- cgit v1.2.3-1-g7c22 From 5968792ad2d94291721fd0f95df6d66541150442 Mon Sep 17 00:00:00 2001 From: Mario Orlicky Date: Sun, 13 Nov 2016 20:48:24 +0100 Subject: added buttons to support filtering by empty labels and members --- client/components/sidebar/sidebarFilters.jade | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'client') diff --git a/client/components/sidebar/sidebarFilters.jade b/client/components/sidebar/sidebarFilters.jade index 2b326493..0a7fbfb0 100644 --- a/client/components/sidebar/sidebarFilters.jade +++ b/client/components/sidebar/sidebarFilters.jade @@ -5,6 +5,12 @@ template(name="filterSidebar") ul.sidebar-list + li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}") + a.name.js-toggle-label-filter + span.sidebar-list-item-description + {{_ 'filter-no-label'}} + if Filter.labelIds.isSelected undefined + i.fa.fa-check each currentBoard.labels li a.name.js-toggle-label-filter @@ -18,6 +24,12 @@ template(name="filterSidebar") i.fa.fa-check hr ul.sidebar-list + li(class="{{#if Filter.members.isSelected undefined}}active{{/if}}") + a.name.js-toggle-member-filter + span.sidebar-list-item-description + {{_ 'filter-no-member'}} + if Filter.members.isSelected undefined + i.fa.fa-check each currentBoard.activeMembers with getUser userId li(class="{{#if Filter.members.isSelected _id}}active{{/if}}") -- cgit v1.2.3-1-g7c22 From 7ad74eb1b5d6fbf9e2c7486a03368c9a2f4af1e4 Mon Sep 17 00:00:00 2001 From: Mario Orlicky Date: Sun, 13 Nov 2016 20:54:50 +0100 Subject: forgotten semicolon --- client/lib/filter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'client') diff --git a/client/lib/filter.js b/client/lib/filter.js index 656f5fe2..afa992ab 100644 --- a/client/lib/filter.js +++ b/client/lib/filter.js @@ -61,7 +61,7 @@ class SetFilter { _getMongoSelector() { this._dep.depend(); - return { $in: this._selectedElements } + return { $in: this._selectedElements }; } _getEmptySelector() { -- cgit v1.2.3-1-g7c22 From 4dc0ec07b8560d0814ed5cb72b2cac93722bb93c Mon Sep 17 00:00:00 2001 From: Mario Orlicky Date: Sun, 13 Nov 2016 20:57:23 +0100 Subject: removed unused html span element --- client/components/sidebar/sidebarFilters.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'client') diff --git a/client/components/sidebar/sidebarFilters.jade b/client/components/sidebar/sidebarFilters.jade index 0a7fbfb0..deefde82 100644 --- a/client/components/sidebar/sidebarFilters.jade +++ b/client/components/sidebar/sidebarFilters.jade @@ -8,7 +8,7 @@ template(name="filterSidebar") li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}") a.name.js-toggle-label-filter span.sidebar-list-item-description - {{_ 'filter-no-label'}} + {{_ 'filter-no-label'}} if Filter.labelIds.isSelected undefined i.fa.fa-check each currentBoard.labels @@ -27,7 +27,7 @@ template(name="filterSidebar") li(class="{{#if Filter.members.isSelected undefined}}active{{/if}}") a.name.js-toggle-member-filter span.sidebar-list-item-description - {{_ 'filter-no-member'}} + {{_ 'filter-no-member'}} if Filter.members.isSelected undefined i.fa.fa-check each currentBoard.activeMembers -- cgit v1.2.3-1-g7c22