rulesMain.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. 'click .js-delete-rule' () {
  30. const rule = this.currentData();
  31. Rules.remove(rule._id);
  32. Actions.remove(rule.actionId);
  33. Triggers.remove(rule.triggerId);
  34. },
  35. 'click .js-goto-trigger' (event) {
  36. event.preventDefault();
  37. const ruleTitle = this.find('#ruleTitle').value;
  38. if(ruleTitle !== undefined && ruleTitle !== ''){
  39. this.find('#ruleTitle').value = '';
  40. this.ruleName.set(ruleTitle);
  41. this.setTrigger();
  42. }
  43. },
  44. 'click .js-goto-action' (event) {
  45. event.preventDefault();
  46. // Add user to the trigger
  47. const username = $(event.currentTarget.offsetParent).find('.user-name').val();
  48. let trigger = this.triggerVar.get();
  49. trigger.userId = '*';
  50. if(username !== undefined ){
  51. const userFound = Users.findOne({username});
  52. if(userFound !== undefined){
  53. trigger.userId = userFound._id;
  54. this.triggerVar.set(trigger);
  55. }
  56. }
  57. // Sanitize trigger
  58. trigger = this.triggerVar.get();
  59. this.sanitizeObject(trigger);
  60. this.triggerVar.set(trigger);
  61. this.setAction();
  62. },
  63. 'click .js-show-user-field' (event) {
  64. event.preventDefault();
  65. $(event.currentTarget.offsetParent).find('.user-details').removeClass('hide-element');
  66. },
  67. 'click .js-goto-rules' (event) {
  68. event.preventDefault();
  69. this.setRulesList();
  70. },
  71. 'click .js-goback' (event) {
  72. event.preventDefault();
  73. if(this.rulesCurrentTab.get() === 'trigger' || this.rulesCurrentTab.get() === 'ruleDetails' ){
  74. this.setRulesList();
  75. }
  76. if(this.rulesCurrentTab.get() === 'action'){
  77. this.setTrigger();
  78. }
  79. },
  80. 'click .js-goto-details' (event) {
  81. event.preventDefault();
  82. const rule = this.currentData();
  83. this.ruleId.set(rule._id);
  84. this.setRuleDetails();
  85. },
  86. }];
  87. },
  88. }).register('rulesMain');