rulesMain.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import { ReactiveCache } from '/imports/reactiveCache';
  2. BlazeComponent.extendComponent({
  3. onCreated() {
  4. this.rulesCurrentTab = new ReactiveVar('rulesList');
  5. this.ruleName = new ReactiveVar('');
  6. this.triggerVar = new ReactiveVar();
  7. this.ruleId = new ReactiveVar();
  8. },
  9. setTrigger() {
  10. this.rulesCurrentTab.set('trigger');
  11. },
  12. sanitizeObject(obj) {
  13. Object.keys(obj).forEach(key => {
  14. if (obj[key] === '' || obj[key] === undefined) {
  15. obj[key] = '*';
  16. }
  17. });
  18. },
  19. setRulesList() {
  20. this.rulesCurrentTab.set('rulesList');
  21. },
  22. setAction() {
  23. this.rulesCurrentTab.set('action');
  24. },
  25. setRuleDetails() {
  26. this.rulesCurrentTab.set('ruleDetails');
  27. },
  28. events() {
  29. return [
  30. {
  31. 'click .js-delete-rule'() {
  32. const rule = this.currentData();
  33. Rules.remove(rule._id);
  34. Actions.remove(rule.actionId);
  35. Triggers.remove(rule.triggerId);
  36. },
  37. 'click .js-goto-trigger'(event) {
  38. event.preventDefault();
  39. const ruleTitle = this.find('#ruleTitle').value;
  40. if (ruleTitle !== undefined && ruleTitle !== '') {
  41. this.find('#ruleTitle').value = '';
  42. this.ruleName.set(ruleTitle);
  43. this.setTrigger();
  44. }
  45. },
  46. 'click .js-goto-action'(event) {
  47. event.preventDefault();
  48. // Add user to the trigger
  49. const username = $(event.currentTarget.offsetParent)
  50. .find('.user-name')
  51. .val();
  52. let trigger = this.triggerVar.get();
  53. trigger.userId = '*';
  54. if (username !== undefined) {
  55. const userFound = ReactiveCache.getUser({ username });
  56. if (userFound !== undefined) {
  57. trigger.userId = userFound._id;
  58. this.triggerVar.set(trigger);
  59. }
  60. }
  61. // Sanitize trigger
  62. trigger = this.triggerVar.get();
  63. this.sanitizeObject(trigger);
  64. this.triggerVar.set(trigger);
  65. this.setAction();
  66. },
  67. 'click .js-show-user-field'(event) {
  68. event.preventDefault();
  69. $(event.currentTarget.offsetParent)
  70. .find('.user-details')
  71. .removeClass('hide-element');
  72. },
  73. 'click .js-goto-rules'(event) {
  74. event.preventDefault();
  75. this.setRulesList();
  76. },
  77. 'click .js-goback'(event) {
  78. event.preventDefault();
  79. if (
  80. this.rulesCurrentTab.get() === 'trigger' ||
  81. this.rulesCurrentTab.get() === 'ruleDetails'
  82. ) {
  83. this.setRulesList();
  84. }
  85. if (this.rulesCurrentTab.get() === 'action') {
  86. this.setTrigger();
  87. }
  88. },
  89. 'click .js-goto-details'(event) {
  90. event.preventDefault();
  91. const rule = this.currentData();
  92. this.ruleId.set(rule._id);
  93. this.setRuleDetails();
  94. },
  95. },
  96. ];
  97. },
  98. }).register('rulesMain');