diff --git a/client/components/swimlanes/swimlanes.jade b/client/components/swimlanes/swimlanes.jade index 3040917bb..7d0e65b58 100644 --- a/client/components/swimlanes/swimlanes.jade +++ b/client/components/swimlanes/swimlanes.jade @@ -14,7 +14,8 @@ template(name="swimlane") +addListForm else each lists - +list(this) + if visible this + +list(this) if currentCardIsInThisList _id ../_id +cardDetails(currentCard) if currentUser.isBoardMember diff --git a/client/components/swimlanes/swimlanes.js b/client/components/swimlanes/swimlanes.js index 83a112892..08e6730d5 100644 --- a/client/components/swimlanes/swimlanes.js +++ b/client/components/swimlanes/swimlanes.js @@ -137,19 +137,38 @@ BlazeComponent.extendComponent({ this._isDragging = false; this._lastDragPositionX = 0; }, - id() { return this._id; }, - currentCardIsInThisList(listId, swimlaneId) { return currentCardIsInThisList(listId, swimlaneId); }, - currentListIsInThisSwimlane(swimlaneId) { return currentListIsInThisSwimlane(swimlaneId); }, - + visible(list) { + if (list.archived) { + // Show archived list only when filter archive is on or archive is selected + if (!(Filter.archive.isSelected() || archivedRequested)) { + return false; + } + } + if (Filter.lists._isActive()) { + if (!list.title.match(Filter.lists.getRegexSelector())) { + return false; + } + } + if (Filter.hideEmpty.isSelected()) { + const swimlaneId = this.parentComponent() + .parentComponent() + .data()._id; + const cards = list.cards(swimlaneId); + if (cards.count() === 0) { + return false; + } + } + return true; + }, events() { return [ { diff --git a/client/lib/filter.js b/client/lib/filter.js index 8a7eafe32..283dbcd07 100644 --- a/client/lib/filter.js +++ b/client/lib/filter.js @@ -682,9 +682,11 @@ Filter = { const filterSelector = {}; const emptySelector = {}; let includeEmptySelectors = false; + let isFilterActive = false; // we don't want there is only Filter.lists this._fields.forEach(fieldName => { const filter = this[fieldName]; if (filter._isActive()) { + isFilterActive = true; if (filter.subField !== '') { filterSelector[ `${fieldName}.${filter.subField}` @@ -715,12 +717,23 @@ Filter = { ) selectors.push(filterSelector); if (includeEmptySelectors) selectors.push(emptySelector); - if (this.advanced._isActive()) + if (this.advanced._isActive()) { + isFilterActive = true; selectors.push(this.advanced._getMongoSelector()); + } - return { - $or: selectors, - }; + if(isFilterActive) { + return { + $or: selectors, + }; + } + else { + // we don't want there is only Filter.lists + // otherwise no card will be displayed ... + // selectors = [exceptionsSelector]; + // will return [{"_id":{"$in":[]}}] + return {}; + } }, mongoSelector(additionalSelector) {