cardActions.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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. {
  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. username: '*',
  158. boardId,
  159. desc,
  160. });
  161. Rules.insert({
  162. title: ruleName,
  163. triggerId,
  164. actionId,
  165. boardId,
  166. });
  167. },
  168. 'click .js-show-color-palette'(event) {
  169. const funct = Popup.open('setCardActionsColor');
  170. const colorButton = this.find('#color-action');
  171. if (colorButton.value === '') {
  172. colorButton.value = 'green';
  173. }
  174. funct.call(this, event);
  175. },
  176. 'click .js-set-color-action'(event) {
  177. const ruleName = this.data().ruleName.get();
  178. const trigger = this.data().triggerVar.get();
  179. const selectedColor = this.cardColorButtonValue.get();
  180. const boardId = Session.get('currentBoard');
  181. const desc = Utils.getTriggerActionDesc(event, this);
  182. const triggerId = Triggers.insert(trigger);
  183. const actionId = Actions.insert({
  184. actionType: 'setColor',
  185. selectedColor,
  186. boardId,
  187. desc,
  188. });
  189. Rules.insert({
  190. title: ruleName,
  191. triggerId,
  192. actionId,
  193. boardId,
  194. });
  195. },
  196. },
  197. ];
  198. },
  199. }).register('cardActions');
  200. BlazeComponent.extendComponent({
  201. onCreated() {
  202. this.currentAction = this.currentData();
  203. this.colorButtonValue = Popup.getOpenerComponent().cardColorButtonValue;
  204. this.currentColor = new ReactiveVar(this.colorButtonValue.get());
  205. },
  206. colors() {
  207. return cardColors.map(color => ({ color, name: '' }));
  208. },
  209. isSelected(color) {
  210. return this.currentColor.get() === color;
  211. },
  212. events() {
  213. return [
  214. {
  215. 'click .js-palette-color'() {
  216. this.currentColor.set(this.currentData().color);
  217. },
  218. 'click .js-submit'() {
  219. this.colorButtonValue.set(this.currentColor.get());
  220. Popup.close();
  221. },
  222. },
  223. ];
  224. },
  225. }).register('setCardActionsColorPopup');