cardActions.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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-set-date-action' (event) {
  28. const ruleName = this.data().ruleName.get();
  29. const trigger = this.data().triggerVar.get();
  30. const triggerId = Triggers.insert(trigger);
  31. const actionSelected = this.find('#setdate-action').value;
  32. const dateFieldSelected = this.find('#setdate-datefield').value;
  33. const boardId = Session.get('currentBoard');
  34. const desc = Utils.getTriggerActionDesc(event, this);
  35. const actionId = Actions.insert({
  36. actionType: actionSelected,
  37. dateField: dateFieldSelected,
  38. boardId,
  39. desc,
  40. });
  41. Rules.insert({
  42. title: ruleName,
  43. triggerId,
  44. actionId,
  45. boardId,
  46. desc,
  47. });
  48. },
  49. 'click .js-remove-datevalue-action' (event) {
  50. const ruleName = this.data().ruleName.get();
  51. const trigger = this.data().triggerVar.get();
  52. const triggerId = Triggers.insert(trigger);
  53. const dateFieldSelected = this.find('#setdate-removedatefieldvalue').value;
  54. const boardId = Session.get('currentBoard');
  55. const desc = Utils.getTriggerActionDesc(event, this);
  56. const actionId = Actions.insert({
  57. actionType: 'removeDate',
  58. dateField: dateFieldSelected,
  59. boardId,
  60. desc,
  61. });
  62. Rules.insert({
  63. title: ruleName,
  64. triggerId,
  65. actionId,
  66. boardId,
  67. desc,
  68. });
  69. },
  70. 'click .js-add-label-action' (event) {
  71. const ruleName = this.data().ruleName.get();
  72. const trigger = this.data().triggerVar.get();
  73. const actionSelected = this.find('#label-action').value;
  74. const labelId = this.find('#label-id').value;
  75. const boardId = Session.get('currentBoard');
  76. const desc = Utils.getTriggerActionDesc(event, this);
  77. if (actionSelected === 'add') {
  78. const triggerId = Triggers.insert(trigger);
  79. const actionId = Actions.insert({
  80. actionType: 'addLabel',
  81. labelId,
  82. boardId,
  83. desc,
  84. });
  85. Rules.insert({
  86. title: ruleName,
  87. triggerId,
  88. actionId,
  89. boardId,
  90. });
  91. }
  92. if (actionSelected === 'remove') {
  93. const triggerId = Triggers.insert(trigger);
  94. const actionId = Actions.insert({
  95. actionType: 'removeLabel',
  96. labelId,
  97. boardId,
  98. desc,
  99. });
  100. Rules.insert({
  101. title: ruleName,
  102. triggerId,
  103. actionId,
  104. boardId,
  105. });
  106. }
  107. },
  108. 'click .js-add-member-action' (event) {
  109. const ruleName = this.data().ruleName.get();
  110. const trigger = this.data().triggerVar.get();
  111. const actionSelected = this.find('#member-action').value;
  112. const username = this.find('#member-name').value;
  113. const boardId = Session.get('currentBoard');
  114. const desc = Utils.getTriggerActionDesc(event, this);
  115. if (actionSelected === 'add') {
  116. const triggerId = Triggers.insert(trigger);
  117. const actionId = Actions.insert({
  118. actionType: 'addMember',
  119. username,
  120. boardId,
  121. desc,
  122. });
  123. Rules.insert({
  124. title: ruleName,
  125. triggerId,
  126. actionId,
  127. boardId,
  128. desc,
  129. });
  130. }
  131. if (actionSelected === 'remove') {
  132. const triggerId = Triggers.insert(trigger);
  133. const actionId = Actions.insert({
  134. actionType: 'removeMember',
  135. username,
  136. boardId,
  137. desc,
  138. });
  139. Rules.insert({
  140. title: ruleName,
  141. triggerId,
  142. actionId,
  143. boardId,
  144. });
  145. }
  146. },
  147. 'click .js-add-removeall-action' (event) {
  148. const ruleName = this.data().ruleName.get();
  149. const trigger = this.data().triggerVar.get();
  150. const triggerId = Triggers.insert(trigger);
  151. const desc = Utils.getTriggerActionDesc(event, this);
  152. const boardId = Session.get('currentBoard');
  153. const actionId = Actions.insert({
  154. actionType: 'removeMember',
  155. 'username': '*',
  156. boardId,
  157. desc,
  158. });
  159. Rules.insert({
  160. title: ruleName,
  161. triggerId,
  162. actionId,
  163. boardId,
  164. });
  165. },
  166. 'click .js-show-color-palette'(event){
  167. const funct = Popup.open('setCardActionsColor');
  168. const colorButton = this.find('#color-action');
  169. if (colorButton.value === '') {
  170. colorButton.value = 'green';
  171. }
  172. funct.call(this, event);
  173. },
  174. 'click .js-set-color-action' (event) {
  175. const ruleName = this.data().ruleName.get();
  176. const trigger = this.data().triggerVar.get();
  177. const selectedColor = this.cardColorButtonValue.get();
  178. const boardId = Session.get('currentBoard');
  179. const desc = Utils.getTriggerActionDesc(event, this);
  180. const triggerId = Triggers.insert(trigger);
  181. const actionId = Actions.insert({
  182. actionType: 'setColor',
  183. selectedColor,
  184. boardId,
  185. desc,
  186. });
  187. Rules.insert({
  188. title: ruleName,
  189. triggerId,
  190. actionId,
  191. boardId,
  192. });
  193. },
  194. }];
  195. },
  196. }).register('cardActions');
  197. BlazeComponent.extendComponent({
  198. onCreated() {
  199. this.currentAction = this.currentData();
  200. this.colorButtonValue = Popup.getOpenerComponent().cardColorButtonValue;
  201. this.currentColor = new ReactiveVar(this.colorButtonValue.get());
  202. },
  203. colors() {
  204. return cardColors.map((color) => ({ color, name: '' }));
  205. },
  206. isSelected(color) {
  207. return this.currentColor.get() === color;
  208. },
  209. events() {
  210. return [{
  211. 'click .js-palette-color'() {
  212. this.currentColor.set(this.currentData().color);
  213. },
  214. 'click .js-submit' () {
  215. this.colorButtonValue.set(this.currentColor.get());
  216. Popup.close();
  217. },
  218. }];
  219. },
  220. }).register('setCardActionsColorPopup');