| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- Meteor.publish('card', cardId => {
- check(cardId, String);
- return Cards.find({ _id: cardId });
- });
- Meteor.publish('myCards', function() {
- const userId = Meteor.userId();
- const archivedBoards = [];
- Boards.find({ archived: true }).forEach(board => {
- archivedBoards.push(board._id);
- });
- const archivedSwimlanes = [];
- Swimlanes.find({ archived: true }).forEach(swimlane => {
- archivedSwimlanes.push(swimlane._id);
- });
- const archivedLists = [];
- Lists.find({ archived: true }).forEach(list => {
- archivedLists.push(list._id);
- });
- selector = {
- archived: false,
- boardId: { $nin: archivedBoards },
- swimlaneId: { $nin: archivedSwimlanes },
- listId: { $nin: archivedLists },
- $or: [{ members: userId }, { assignees: userId }],
- };
- const cards = Cards.find(selector, {
- fields: {
- _id: 1,
- archived: 1,
- boardId: 1,
- swimlaneId: 1,
- listId: 1,
- title: 1,
- type: 1,
- sort: 1,
- members: 1,
- assignees: 1,
- colors: 1,
- dueAt: 1,
- },
- });
- const boards = [];
- const swimlanes = [];
- const lists = [];
- const users = [];
- cards.forEach(card => {
- if (card.boardId) boards.push(card.boardId);
- if (card.swimlaneId) swimlanes.push(card.swimlaneId);
- if (card.listId) lists.push(card.listId);
- if (card.members) {
- card.members.forEach(userId => {
- users.push(userId);
- });
- }
- if (card.assignees) {
- card.assignees.forEach(userId => {
- users.push(userId);
- });
- }
- });
- return [
- cards,
- Boards.find({ _id: { $in: boards } }),
- Swimlanes.find({ _id: { $in: swimlanes } }),
- Lists.find({ _id: { $in: lists } }),
- Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
- ];
- });
- Meteor.publish('dueCards', function(allUsers = false) {
- check(allUsers, Boolean);
- // eslint-disable-next-line no-console
- // console.log('all users:', allUsers);
- const user = Users.findOne({ _id: this.userId });
- const archivedBoards = [];
- Boards.find({ archived: true }).forEach(board => {
- archivedBoards.push(board._id);
- });
- const permiitedBoards = [];
- let selector = {
- archived: false,
- };
- selector.$or = [
- { permission: 'public' },
- { members: { $elemMatch: { userId: user._id, isActive: true } } },
- ];
- Boards.find(selector).forEach(board => {
- permiitedBoards.push(board._id);
- });
- const archivedSwimlanes = [];
- Swimlanes.find({ archived: true }).forEach(swimlane => {
- archivedSwimlanes.push(swimlane._id);
- });
- const archivedLists = [];
- Lists.find({ archived: true }).forEach(list => {
- archivedLists.push(list._id);
- });
- selector = {
- archived: false,
- boardId: { $nin: archivedBoards, $in: permiitedBoards },
- swimlaneId: { $nin: archivedSwimlanes },
- listId: { $nin: archivedLists },
- dueAt: { $ne: null },
- endAt: null,
- };
- if (!allUsers) {
- selector.$or = [{ members: user._id }, { assignees: user._id }];
- }
- const cards = Cards.find(selector, {
- fields: {
- _id: 1,
- archived: 1,
- boardId: 1,
- swimlaneId: 1,
- listId: 1,
- title: 1,
- type: 1,
- sort: 1,
- members: 1,
- assignees: 1,
- colors: 1,
- dueAt: 1,
- },
- });
- const boards = [];
- const swimlanes = [];
- const lists = [];
- const users = [];
- cards.forEach(card => {
- if (card.boardId) boards.push(card.boardId);
- if (card.swimlaneId) swimlanes.push(card.swimlaneId);
- if (card.listId) lists.push(card.listId);
- if (card.members) {
- card.members.forEach(userId => {
- users.push(userId);
- });
- }
- if (card.assignees) {
- card.assignees.forEach(userId => {
- users.push(userId);
- });
- }
- });
- return [
- cards,
- Boards.find({ _id: { $in: boards } }),
- Swimlanes.find({ _id: { $in: swimlanes } }),
- Lists.find({ _id: { $in: lists } }),
- Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
- ];
- });
- Meteor.publish('globalSearch', function(queryParams) {
- check(queryParams, Object);
- // eslint-disable-next-line no-console
- // console.log('queryParams:', queryParams);
- const cards = Cards.globalSearch(queryParams).cards;
- if (!cards) {
- return [];
- }
- SessionData.upsert(
- { userId: this.userId },
- {
- $set: {
- totalHits: cards.count(),
- lastHit: cards.count() > 50 ? 50 : cards.count(),
- },
- },
- );
- const boards = [];
- const swimlanes = [];
- const lists = [];
- const users = [this.userId];
- cards.forEach(card => {
- if (card.boardId) boards.push(card.boardId);
- if (card.swimlaneId) swimlanes.push(card.swimlaneId);
- if (card.listId) lists.push(card.listId);
- if (card.members) {
- card.members.forEach(userId => {
- users.push(userId);
- });
- }
- if (card.assignees) {
- card.assignees.forEach(userId => {
- users.push(userId);
- });
- }
- });
- // eslint-disable-next-line no-console
- // console.log('users:', users);
- return [
- cards,
- Boards.find({ _id: { $in: boards } }),
- Swimlanes.find({ _id: { $in: swimlanes } }),
- Lists.find({ _id: { $in: lists } }),
- Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
- SessionData.find({ userId: this.userId }),
- ];
- });
- Meteor.publish('brokenCards', function() {
- const user = Users.findOne({ _id: this.userId });
- const permiitedBoards = [null];
- let selector = {};
- selector.$or = [
- { permission: 'public' },
- { members: { $elemMatch: { userId: user._id, isActive: true } } },
- ];
- Boards.find(selector).forEach(board => {
- permiitedBoards.push(board._id);
- });
- selector = {
- boardId: { $in: permiitedBoards },
- $or: [
- { boardId: { $in: [null, ''] } },
- { swimlaneId: { $in: [null, ''] } },
- { listId: { $in: [null, ''] } },
- ],
- };
- const cards = Cards.find(selector, {
- fields: {
- _id: 1,
- archived: 1,
- boardId: 1,
- swimlaneId: 1,
- listId: 1,
- title: 1,
- type: 1,
- sort: 1,
- members: 1,
- assignees: 1,
- colors: 1,
- dueAt: 1,
- },
- });
- const boards = [];
- const swimlanes = [];
- const lists = [];
- const users = [];
- cards.forEach(card => {
- if (card.boardId) boards.push(card.boardId);
- if (card.swimlaneId) swimlanes.push(card.swimlaneId);
- if (card.listId) lists.push(card.listId);
- if (card.members) {
- card.members.forEach(userId => {
- users.push(userId);
- });
- }
- if (card.assignees) {
- card.assignees.forEach(userId => {
- users.push(userId);
- });
- }
- });
- return [
- cards,
- Boards.find({ _id: { $in: boards } }),
- Swimlanes.find({ _id: { $in: swimlanes } }),
- Lists.find({ _id: { $in: lists } }),
- Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
- ];
- });
|