myCards.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. const subManager = new SubsManager();
  2. Meteor.subscribe('myCards');
  3. Meteor.subscribe('mySwimlanes');
  4. Meteor.subscribe('myLists');
  5. Template.myCardsHeaderBar.events({
  6. 'click .js-open-archived-board'() {
  7. Modal.open('archivedBoards');
  8. },
  9. });
  10. Template.myCardsHeaderBar.helpers({
  11. title() {
  12. return FlowRouter.getRouteName() === 'home' ? 'my-boards' : 'public';
  13. },
  14. templatesUser() {
  15. return Meteor.user();
  16. },
  17. });
  18. Template.myCards.helpers({
  19. userId() {
  20. return Meteor.userId();
  21. },
  22. });
  23. BlazeComponent.extendComponent({
  24. onCreated() {
  25. Meteor.subscribe('setting');
  26. // subManager.subscribe('myCards');
  27. },
  28. cardsFind() {
  29. const userId = Meteor.userId();
  30. const boards = [];
  31. let board = null;
  32. let swimlane = null;
  33. let list = null;
  34. const cursor = Cards.find(
  35. {
  36. archived: false,
  37. $or: [{ members: userId }, { assignees: userId }],
  38. },
  39. {
  40. sort: {
  41. boardId: 1,
  42. swimlaneId: 1,
  43. listId: 1,
  44. sort: 1,
  45. },
  46. },
  47. );
  48. // eslint-disable-next-line no-console
  49. // console.log('cursor:', cursor);
  50. let newBoard = false;
  51. let newSwimlane = false;
  52. let newList = false;
  53. cursor.forEach(card => {
  54. // eslint-disable-next-line no-console
  55. // console.log('card:', card.title);
  56. if (list === null || list.id !== card.listId) {
  57. // eslint-disable-next-line no-console
  58. // console.log('new list');
  59. let l = Lists.findOne(card.listId);
  60. if (!l) {
  61. l = {
  62. _id: card.listId,
  63. title: 'undefined list',
  64. };
  65. }
  66. // eslint-disable-next-line no-console
  67. // console.log('list:', l);
  68. list = {
  69. id: l._id,
  70. title: l.title,
  71. cards: [card],
  72. };
  73. newList = true;
  74. }
  75. if (swimlane === null || card.swimlaneId !== swimlane.id) {
  76. // eslint-disable-next-line no-console
  77. // console.log('new swimlane');
  78. let s = Swimlanes.findOne(card.swimlaneId);
  79. if (!s) {
  80. s = {
  81. _id: card.swimlaneId,
  82. title: 'undefined swimlane',
  83. };
  84. }
  85. // eslint-disable-next-line no-console
  86. // console.log('swimlane:', s);
  87. swimlane = {
  88. id: s._id,
  89. title: s.title,
  90. lists: [list],
  91. };
  92. newSwimlane = true;
  93. }
  94. if (board === null || card.boardId !== board.id) {
  95. // eslint-disable-next-line no-console
  96. // console.log('new board');
  97. const b = Boards.findOne(card.boardId);
  98. // eslint-disable-next-line no-console
  99. // console.log('board:', b, b._id, b.title);
  100. board = {
  101. id: b._id,
  102. title: b.title,
  103. slug: b.slug,
  104. swimlanes: [swimlane],
  105. };
  106. newBoard = true;
  107. }
  108. if (newBoard) {
  109. boards.push(board);
  110. } else if (newSwimlane) {
  111. board.swimlanes.push(swimlane);
  112. } else if (newList) {
  113. swimlane.lists.push(list);
  114. } else {
  115. list.cards.push(card);
  116. }
  117. newBoard = false;
  118. newSwimlane = false;
  119. newList = false;
  120. });
  121. // eslint-disable-next-line no-console
  122. // console.log('boards:', boards);
  123. return boards;
  124. },
  125. events() {
  126. return [
  127. {
  128. 'click .js-my-card'(evt) {
  129. const card = this.currentData().card;
  130. // eslint-disable-next-line no-console
  131. console.log('currentData():', this.currentData());
  132. // eslint-disable-next-line no-console
  133. console.log('card:', card);
  134. if (card) {
  135. Utils.goCardId(card._id);
  136. }
  137. evt.preventDefault();
  138. },
  139. },
  140. ];
  141. },
  142. }).register('myCards');