cardActions.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. let cardColors;
  2. Meteor.startup(() => {
  3. cardColors = Cards.simpleSchema()._schema.color.allowedValues;
  4. });
  5. BlazeComponent.extendComponent({
  6. onCreated() {
  7. this.subscribe('allRules');
  8. this.cardColorButtonValue = new ReactiveVar('green');
  9. },
  10. cardColorButton() {
  11. return this.cardColorButtonValue.get();
  12. },
  13. cardColorButtonText() {
  14. return `color-${ this.cardColorButtonValue.get() }`;
  15. },
  16. labels() {
  17. const labels = Boards.findOne(Session.get('currentBoard')).labels;
  18. for (let i = 0; i < labels.length; i++) {
  19. if (labels[i].name === '' || labels[i].name === undefined) {
  20. labels[i].name = labels[i].color.toUpperCase();
  21. }
  22. }
  23. return labels;
  24. },
  25. events() {
  26. return [{
  27. 'click .js-add-label-action' (event) {
  28. const ruleName = this.data().ruleName.get();
  29. const trigger = this.data().triggerVar.get();
  30. const actionSelected = this.find('#label-action').value;
  31. const labelId = this.find('#label-id').value;
  32. const boardId = Session.get('currentBoard');
  33. const desc = Utils.getTriggerActionDesc(event, this);
  34. if (actionSelected === 'add') {
  35. const triggerId = Triggers.insert(trigger);
  36. const actionId = Actions.insert({
  37. actionType: 'addLabel',
  38. labelId,
  39. boardId,
  40. desc,
  41. });
  42. Rules.insert({
  43. title: ruleName,
  44. triggerId,
  45. actionId,
  46. boardId,
  47. });
  48. }
  49. if (actionSelected === 'remove') {
  50. const triggerId = Triggers.insert(trigger);
  51. const actionId = Actions.insert({
  52. actionType: 'removeLabel',
  53. labelId,
  54. boardId,
  55. desc,
  56. });
  57. Rules.insert({
  58. title: ruleName,
  59. triggerId,
  60. actionId,
  61. boardId,
  62. });
  63. }
  64. },
  65. 'click .js-add-member-action' (event) {
  66. const ruleName = this.data().ruleName.get();
  67. const trigger = this.data().triggerVar.get();
  68. const actionSelected = this.find('#member-action').value;
  69. const username = this.find('#member-name').value;
  70. const boardId = Session.get('currentBoard');
  71. const desc = Utils.getTriggerActionDesc(event, this);
  72. if (actionSelected === 'add') {
  73. const triggerId = Triggers.insert(trigger);
  74. const actionId = Actions.insert({
  75. actionType: 'addMember',
  76. username,
  77. boardId,
  78. desc,
  79. });
  80. Rules.insert({
  81. title: ruleName,
  82. triggerId,
  83. actionId,
  84. boardId,
  85. desc,
  86. });
  87. }
  88. if (actionSelected === 'remove') {
  89. const triggerId = Triggers.insert(trigger);
  90. const actionId = Actions.insert({
  91. actionType: 'removeMember',
  92. username,
  93. boardId,
  94. desc,
  95. });
  96. Rules.insert({
  97. title: ruleName,
  98. triggerId,
  99. actionId,
  100. boardId,
  101. });
  102. }
  103. },
  104. 'click .js-add-removeall-action' (event) {
  105. const ruleName = this.data().ruleName.get();
  106. const trigger = this.data().triggerVar.get();
  107. const triggerId = Triggers.insert(trigger);
  108. const desc = Utils.getTriggerActionDesc(event, this);
  109. const boardId = Session.get('currentBoard');
  110. const actionId = Actions.insert({
  111. actionType: 'removeMember',
  112. 'username': '*',
  113. boardId,
  114. desc,
  115. });
  116. Rules.insert({
  117. title: ruleName,
  118. triggerId,
  119. actionId,
  120. boardId,
  121. });
  122. },
  123. 'click .js-show-color-palette'(event){
  124. const funct = Popup.open('setCardActionsColor');
  125. const colorButton = this.find('#color-action');
  126. if (colorButton.value === '') {
  127. colorButton.value = 'green';
  128. }
  129. funct.call(this, event);
  130. },
  131. 'click .js-set-color-action' (event) {
  132. const ruleName = this.data().ruleName.get();
  133. const trigger = this.data().triggerVar.get();
  134. const selectedColor = this.cardColorButtonValue.get();
  135. const boardId = Session.get('currentBoard');
  136. const desc = Utils.getTriggerActionDesc(event, this);
  137. const triggerId = Triggers.insert(trigger);
  138. const actionId = Actions.insert({
  139. actionType: 'setColor',
  140. selectedColor,
  141. boardId,
  142. desc,
  143. });
  144. Rules.insert({
  145. title: ruleName,
  146. triggerId,
  147. actionId,
  148. boardId,
  149. });
  150. },
  151. }];
  152. },
  153. }).register('cardActions');
  154. BlazeComponent.extendComponent({
  155. onCreated() {
  156. this.currentAction = this.currentData();
  157. this.colorButtonValue = Popup.getOpenerComponent().cardColorButtonValue;
  158. this.currentColor = new ReactiveVar(this.colorButtonValue.get());
  159. },
  160. colors() {
  161. return cardColors.map((color) => ({ color, name: '' }));
  162. },
  163. isSelected(color) {
  164. return this.currentColor.get() === color;
  165. },
  166. events() {
  167. return [{
  168. 'click .js-palette-color'() {
  169. this.currentColor.set(this.currentData().color);
  170. },
  171. 'click .js-submit' () {
  172. this.colorButtonValue.set(this.currentColor.get());
  173. Popup.close();
  174. },
  175. }];
  176. },
  177. }).register('setCardActionsColorPopup');