rulesMain.js 2.9 KB

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