cardActions.js 7.2 KB

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