brokenCards.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. BlazeComponent.extendComponent({}).register('brokenCardsHeaderBar');
  2. Template.brokenCards.helpers({
  3. userId() {
  4. return Meteor.userId();
  5. },
  6. });
  7. BlazeComponent.extendComponent({
  8. onCreated() {
  9. Meteor.subscribe('setting');
  10. Meteor.subscribe('brokenCards');
  11. },
  12. brokenCardsList() {
  13. const user = Meteor.user();
  14. const permiitedBoards = [null];
  15. let selector = {};
  16. // if user is not an admin allow her to see cards only from boards where
  17. // she is a member
  18. if (!user.isAdmin) {
  19. selector.$or = [
  20. { permission: 'public' },
  21. { members: { $elemMatch: { userId: user._id, isActive: true } } },
  22. ];
  23. }
  24. Boards.find(selector).forEach(board => {
  25. permiitedBoards.push(board._id);
  26. });
  27. selector = {
  28. boardId: { $in: permiitedBoards },
  29. $or: [{ boardId: null }, { swimlaneId: null }, { listId: null }],
  30. };
  31. const cards = Cards.find(selector, {
  32. fields: {
  33. _id: 1,
  34. archived: 1,
  35. boardId: 1,
  36. swimlaneId: 1,
  37. listId: 1,
  38. title: 1,
  39. type: 1,
  40. sort: 1,
  41. members: 1,
  42. assignees: 1,
  43. colors: 1,
  44. dueAt: 1,
  45. },
  46. });
  47. // eslint-disable-next-line no-console
  48. // console.log('cards:', cards);
  49. return cards;
  50. },
  51. }).register('brokenCards');