Try to fix : Filter List by Title - prevent showing only the list title - Hiding empty lists in Swimlane view

This commit is contained in:
Ben0it-T 2021-10-30 00:58:57 +02:00
parent 89a7bb8bc8
commit 6c83cb5b44
3 changed files with 42 additions and 9 deletions

View file

@ -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

View file

@ -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 [
{

View file

@ -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) {