|
@@ -179,56 +179,26 @@ Meteor.publish('globalSearch', function(queryParams) {
|
|
check(queryParams, Object);
|
|
check(queryParams, Object);
|
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
// eslint-disable-next-line no-console
|
|
- console.log('selector:', queryParams);
|
|
|
|
|
|
+ console.log('queryParams:', queryParams);
|
|
|
|
|
|
const user = Users.findOne(this.userId);
|
|
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 archivedLists = [];
|
|
|
|
- Lists.find({ archived: true }).forEach(list => {
|
|
|
|
- archivedLists.push(list._id);
|
|
|
|
- });
|
|
|
|
|
|
+ // const permiitedBoards = Boards.userBoardIds(user._id);
|
|
|
|
|
|
- const permiitedBoards = [];
|
|
|
|
let selector = {
|
|
let selector = {
|
|
archived: false,
|
|
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 = [];
|
|
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
|
|
// eslint-disable-next-line no-console
|
|
console.log('search list selector:', selector);
|
|
console.log('search list selector:', selector);
|
|
@@ -239,17 +209,34 @@ Meteor.publish('globalSearch', function(queryParams) {
|
|
console.log('search lists:', searchLists);
|
|
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 = {
|
|
selector = {
|
|
archived: false,
|
|
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) {
|
|
if (searchLists.length) {
|
|
selector.listId.$in = searchLists;
|
|
selector.listId.$in = searchLists;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // eslint-disable-next-line no-console
|
|
|
|
+ console.log('selector:', selector);
|
|
const cards = Cards.find(selector, {
|
|
const cards = Cards.find(selector, {
|
|
fields: {
|
|
fields: {
|
|
_id: 1,
|
|
_id: 1,
|