mirror of
https://github.com/wekan/wekan.git
synced 2026-01-31 05:35:16 +01:00
Add methods to models for archived entities
This commit is contained in:
parent
01bd94d2b3
commit
bbcb236a46
5 changed files with 115 additions and 44 deletions
|
|
@ -179,56 +179,26 @@ Meteor.publish('globalSearch', function(queryParams) {
|
|||
check(queryParams, Object);
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log('selector:', queryParams);
|
||||
console.log('queryParams:', queryParams);
|
||||
|
||||
const user = Users.findOne(this.userId);
|
||||
|
||||
const archivedBoards = [];
|
||||
Boards.find({ archived: true }).forEach(board => {
|
||||
archivedBoards.push(board._id);
|
||||
});
|
||||
// const archivedSwimlanes = Swimlanes.archivedSwimlaneIds();
|
||||
|
||||
const archivedSwimlanes = [];
|
||||
Swimlanes.find({ archived: true }).forEach(swimlane => {
|
||||
archivedSwimlanes.push(swimlane._id);
|
||||
});
|
||||
// const permiitedBoards = Boards.userBoardIds(user._id);
|
||||
|
||||
const archivedLists = [];
|
||||
Lists.find({ archived: true }).forEach(list => {
|
||||
archivedLists.push(list._id);
|
||||
});
|
||||
|
||||
const permiitedBoards = [];
|
||||
let selector = {
|
||||
archived: false,
|
||||
};
|
||||
// if user is not an admin allow her to see cards only from boards where
|
||||
// she is a member
|
||||
if (!user.isAdmin) {
|
||||
selector.$or = [
|
||||
{ permission: 'public' },
|
||||
{ members: { $elemMatch: { userId: user._id, isActive: true } } },
|
||||
];
|
||||
}
|
||||
if (queryParams.boards.length) {
|
||||
selector.title = { $in: [] };
|
||||
queryParams.boards.forEach(term => {
|
||||
selector.title.$in.push(term);
|
||||
});
|
||||
}
|
||||
Boards.find(selector).forEach(board => {
|
||||
permiitedBoards.push(board._id);
|
||||
});
|
||||
|
||||
const searchLists = [];
|
||||
if (queryParams.lists.length) {
|
||||
selector = {
|
||||
archived: false,
|
||||
title: { $in: [] },
|
||||
};
|
||||
queryParams.lists.forEach(term => {
|
||||
selector.title.$in.push(term);
|
||||
});
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('listsSelector:', queryParams.keys());
|
||||
if ('listsSelector' in queryParams) {
|
||||
// eslint-disable-next-line no-console
|
||||
// console.log('listsSelector:', queryParams.listsSelector.keys());
|
||||
for (const key in queryParams.listsSelector) {
|
||||
selector[key] = queryParams.listsSelector[key];
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log('search list selector:', selector);
|
||||
|
|
@ -239,17 +209,34 @@ Meteor.publish('globalSearch', function(queryParams) {
|
|||
console.log('search lists:', searchLists);
|
||||
}
|
||||
|
||||
const searchSwimlanes = [];
|
||||
if ('swimlanesSelector' in queryParams) {
|
||||
for (const key in queryParams.swimlanesSelector) {
|
||||
selector[key] = queryParams.swimlanesSelector[key];
|
||||
}
|
||||
|
||||
Lists.find(selector).forEach(swim => {
|
||||
searchSwimlanes.push(swim._id);
|
||||
});
|
||||
}
|
||||
|
||||
selector = {
|
||||
archived: false,
|
||||
boardId: { $nin: archivedBoards, $in: permiitedBoards },
|
||||
swimlaneId: { $nin: archivedSwimlanes },
|
||||
listId: { $nin: archivedLists },
|
||||
boardId: { $in: Boards.userBoardIds(user._id) },
|
||||
swimlaneId: { $nin: Swimlanes.archivedSwimlaneIds() },
|
||||
listId: { $nin: Lists.archivedListIds() },
|
||||
};
|
||||
|
||||
if (searchSwimlanes.length) {
|
||||
selector.swimlaneId.$in = searchSwimlanes;
|
||||
}
|
||||
|
||||
if (searchLists.length) {
|
||||
selector.listId.$in = searchLists;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log('selector:', selector);
|
||||
const cards = Cards.find(selector, {
|
||||
fields: {
|
||||
_id: 1,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue