diff options
Diffstat (limited to 'client/components/rules/rulesMain.js')
-rw-r--r-- | client/components/rules/rulesMain.js | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/client/components/rules/rulesMain.js b/client/components/rules/rulesMain.js new file mode 100644 index 00000000..d4af38f4 --- /dev/null +++ b/client/components/rules/rulesMain.js @@ -0,0 +1,97 @@ +BlazeComponent.extendComponent({ + onCreated() { + this.rulesCurrentTab = new ReactiveVar('rulesList'); + this.ruleName = new ReactiveVar(''); + this.triggerVar = new ReactiveVar(); + this.ruleId = new ReactiveVar(); + }, + + setTrigger() { + this.rulesCurrentTab.set('trigger'); + }, + sanitizeObject(obj){ + Object.keys(obj).forEach((key) => { + if(obj[key] === '' || obj[key] === undefined){ + obj[key] = '*'; + }} + ); + }, + setRulesList() { + this.rulesCurrentTab.set('rulesList'); + }, + + setAction() { + this.rulesCurrentTab.set('action'); + }, + + setRuleDetails() { + this.rulesCurrentTab.set('ruleDetails'); + }, + + events() { + return [{ + 'click .js-delete-rule' () { + const rule = this.currentData(); + Rules.remove(rule._id); + Actions.remove(rule.actionId); + Triggers.remove(rule.triggerId); + + }, + 'click .js-goto-trigger' (event) { + event.preventDefault(); + const ruleTitle = this.find('#ruleTitle').value; + if(ruleTitle !== undefined && ruleTitle !== ''){ + this.find('#ruleTitle').value = ''; + this.ruleName.set(ruleTitle); + this.setTrigger(); + } + }, + 'click .js-goto-action' (event) { + event.preventDefault(); + // Add user to the trigger + const username = $(event.currentTarget.offsetParent).find('.user-name').val(); + let trigger = this.triggerVar.get(); + trigger.userId = '*'; + if(username !== undefined ){ + const userFound = Users.findOne({username}); + if(userFound !== undefined){ + trigger.userId = userFound._id; + this.triggerVar.set(trigger); + } + } + // Sanitize trigger + trigger = this.triggerVar.get(); + this.sanitizeObject(trigger); + this.triggerVar.set(trigger); + this.setAction(); + }, + 'click .js-show-user-field' (event) { + event.preventDefault(); + $(event.currentTarget.offsetParent).find('.user-details').removeClass('hide-element'); + }, + 'click .js-goto-rules' (event) { + event.preventDefault(); + this.setRulesList(); + }, + 'click .js-goback' (event) { + event.preventDefault(); + if(this.rulesCurrentTab.get() === 'trigger' || this.rulesCurrentTab.get() === 'ruleDetails' ){ + this.setRulesList(); + } + if(this.rulesCurrentTab.get() === 'action'){ + this.setTrigger(); + } + }, + 'click .js-goto-details' (event) { + event.preventDefault(); + const rule = this.currentData(); + this.ruleId.set(rule._id); + this.setRuleDetails(); + }, + + }]; + }, + +}).register('rulesMain'); + + |