summaryrefslogtreecommitdiffstats
path: root/client/components/rules
diff options
context:
space:
mode:
Diffstat (limited to 'client/components/rules')
-rw-r--r--client/components/rules/.DS_Storebin0 -> 6148 bytes
-rw-r--r--client/components/rules/actions/boardActions.jade46
-rw-r--r--client/components/rules/actions/boardActions.js122
-rw-r--r--client/components/rules/actions/cardActions.jade43
-rw-r--r--client/components/rules/actions/cardActions.js118
-rw-r--r--client/components/rules/actions/checklistActions.jade51
-rw-r--r--client/components/rules/actions/checklistActions.js128
-rw-r--r--client/components/rules/actions/mailActions.jade11
-rw-r--r--client/components/rules/actions/mailActions.js35
-rw-r--r--client/components/rules/ruleDetails.jade20
-rw-r--r--client/components/rules/ruleDetails.js38
-rw-r--r--client/components/rules/rules.styl167
-rw-r--r--client/components/rules/rulesActions.jade29
-rw-r--r--client/components/rules/rulesActions.js58
-rw-r--r--client/components/rules/rulesList.jade27
-rw-r--r--client/components/rules/rulesList.js15
-rw-r--r--client/components/rules/rulesMain.jade9
-rw-r--r--client/components/rules/rulesMain.js70
-rw-r--r--client/components/rules/rulesTriggers.jade25
-rw-r--r--client/components/rules/rulesTriggers.js53
-rw-r--r--client/components/rules/triggers/boardTriggers.jade68
-rw-r--r--client/components/rules/triggers/boardTriggers.js116
-rw-r--r--client/components/rules/triggers/cardTriggers.jade79
-rw-r--r--client/components/rules/triggers/cardTriggers.js128
-rw-r--r--client/components/rules/triggers/checklistTriggers.jade83
-rw-r--r--client/components/rules/triggers/checklistTriggers.js146
26 files changed, 1685 insertions, 0 deletions
diff --git a/client/components/rules/.DS_Store b/client/components/rules/.DS_Store
new file mode 100644
index 00000000..5008ddfc
--- /dev/null
+++ b/client/components/rules/.DS_Store
Binary files differ
diff --git a/client/components/rules/actions/boardActions.jade b/client/components/rules/actions/boardActions.jade
new file mode 100644
index 00000000..768d77cf
--- /dev/null
+++ b/client/components/rules/actions/boardActions.jade
@@ -0,0 +1,46 @@
+template(name="boardActions")
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-move-card-to'}}
+ div.trigger-dropdown
+ select(id="move-gen-action")
+ option(value="top") {{_'r-top-of'}}
+ option(value="bottom") {{_'r-bottom-of'}}
+ div.trigger-text
+ | {{_'r-its-list'}}
+ div.trigger-button.js-add-gen-move-action.js-goto-rules
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-move-card-to'}}
+ div.trigger-dropdown
+ select(id="move-spec-action")
+ option(value="top") {{_'r-top-of'}}
+ option(value="bottom") {{_'r-bottom-of'}}
+ div.trigger-text
+ | {{_'r-list'}}
+ div.trigger-dropdown
+ input(id="listName",type=text,placeholder="{{_'r-name'}}")
+ div.trigger-button.js-add-spec-move-action.js-goto-rules
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-dropdown
+ select(id="arch-action")
+ option(value="archive") {{_'r-archive'}}
+ option(value="unarchive") {{_'r-unarchive'}}
+ div.trigger-text
+ | {{_'r-card'}}
+ div.trigger-button.js-add-arch-action.js-goto-rules
+ i.fa.fa-plus
+
+
+
+
+
+
+
diff --git a/client/components/rules/actions/boardActions.js b/client/components/rules/actions/boardActions.js
new file mode 100644
index 00000000..95771fce
--- /dev/null
+++ b/client/components/rules/actions/boardActions.js
@@ -0,0 +1,122 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+
+ },
+
+ events() {
+ return [{
+ 'click .js-add-spec-move-action' (event) {
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const actionSelected = this.find('#move-spec-action').value;
+ const listTitle = this.find('#listName').value;
+ const boardId = Session.get('currentBoard');
+ const desc = Utils.getTriggerActionDesc(event, this);
+ if (actionSelected === 'top') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'moveCardToTop',
+ listTitle,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ if (actionSelected === 'bottom') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'moveCardToBottom',
+ listTitle,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ },
+ 'click .js-add-gen-move-action' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const boardId = Session.get('currentBoard');
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const actionSelected = this.find('#move-gen-action').value;
+ if (actionSelected === 'top') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'moveCardToTop',
+ 'listTitle': '*',
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ if (actionSelected === 'bottom') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'moveCardToBottom',
+ 'listTitle': '*',
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ },
+ 'click .js-add-arch-action' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const boardId = Session.get('currentBoard');
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const actionSelected = this.find('#arch-action').value;
+ if (actionSelected === 'archive') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'archive',
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ if (actionSelected === 'unarchive') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'unarchive',
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ },
+ }];
+ },
+
+}).register('boardActions');
+/* eslint-no-undef */
diff --git a/client/components/rules/actions/cardActions.jade b/client/components/rules/actions/cardActions.jade
new file mode 100644
index 00000000..74ad9ab5
--- /dev/null
+++ b/client/components/rules/actions/cardActions.jade
@@ -0,0 +1,43 @@
+template(name="cardActions")
+ div.trigger-item
+ div.trigger-content
+ div.trigger-dropdown
+ select(id="label-action")
+ option(value="add") {{{_'r-add'}}}
+ option(value="remove") {{{_'r-remove'}}}
+ div.trigger-text
+ | {{{_'r-label'}}}
+ div.trigger-dropdown
+ select(id="label-id")
+ each labels
+ option(value="#{_id}")
+ = name
+ div.trigger-button.js-add-label-action.js-goto-rules
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-dropdown
+ select(id="member-action")
+ option(value="add") {{{_'r-add'}}}
+ option(value="remove") {{{_'r-remove'}}}
+ div.trigger-text
+ | {{{_'r-member'}}}
+ div.trigger-dropdown
+ input(id="member-name",type=text,placeholder="{{{_'r-name'}}}")
+ div.trigger-button.js-add-member-action.js-goto-rules
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{{_'r-remove-all'}}}
+ div.trigger-button.js-add-removeall-action.js-goto-rules
+ i.fa.fa-plus
+
+
+
+
+
+
+
diff --git a/client/components/rules/actions/cardActions.js b/client/components/rules/actions/cardActions.js
new file mode 100644
index 00000000..b04440bd
--- /dev/null
+++ b/client/components/rules/actions/cardActions.js
@@ -0,0 +1,118 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.subscribe('allRules');
+ },
+
+ labels() {
+ const labels = Boards.findOne(Session.get('currentBoard')).labels;
+ for (let i = 0; i < labels.length; i++) {
+ if (labels[i].name === '' || labels[i].name === undefined) {
+ labels[i].name = labels[i].color.toUpperCase();
+ }
+ }
+ return labels;
+ },
+
+ events() {
+ return [{
+ 'click .js-add-label-action' (event) {
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const actionSelected = this.find('#label-action').value;
+ const labelId = this.find('#label-id').value;
+ const boardId = Session.get('currentBoard');
+ const desc = Utils.getTriggerActionDesc(event, this);
+ if (actionSelected === 'add') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'addLabel',
+ labelId,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ if (actionSelected === 'remove') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'removeLabel',
+ labelId,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+
+ },
+ 'click .js-add-member-action' (event) {
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const actionSelected = this.find('#member-action').value;
+ const username = this.find('#member-name').value;
+ const boardId = Session.get('currentBoard');
+ const desc = Utils.getTriggerActionDesc(event, this);
+ if (actionSelected === 'add') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'addMember',
+ username,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ desc,
+ });
+ }
+ if (actionSelected === 'remove') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'removeMember',
+ username,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ },
+ 'click .js-add-removeall-action' (event) {
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const triggerId = Triggers.insert(trigger);
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const boardId = Session.get('currentBoard');
+ const actionId = Actions.insert({
+ actionType: 'removeMember',
+ 'username': '*',
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ },
+ }];
+ },
+
+}).register('cardActions');
diff --git a/client/components/rules/actions/checklistActions.jade b/client/components/rules/actions/checklistActions.jade
new file mode 100644
index 00000000..8414a1a5
--- /dev/null
+++ b/client/components/rules/actions/checklistActions.jade
@@ -0,0 +1,51 @@
+template(name="checklistActions")
+ div.trigger-item
+ div.trigger-content
+ div.trigger-dropdown
+ select(id="check-action")
+ option(value="add") {{{_'r-add'}}}
+ option(value="remove") {{{_'r-remove'}}}
+ div.trigger-text
+ | {{{_'r-checklist'}}}
+ div.trigger-dropdown
+ input(id="checklist-name",type=text,placeholder="{{{_'r-name'}}}")
+ div.trigger-button.js-add-checklist-action.js-goto-rules
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-dropdown
+ select(id="checkall-action")
+ option(value="check") {{{_'r-check-all'}}}
+ option(value="uncheck") {{{_'r-uncheck-all'}}}
+ div.trigger-text
+ | {{{_'r-items-check'}}}
+ div.trigger-dropdown
+ input(id="checklist-name2",type=text,placeholder="{{{_'r-name'}}}")
+ div.trigger-button.js-add-checkall-action.js-goto-rules
+ i.fa.fa-plus
+
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-dropdown
+ select(id="check-item-action")
+ option(value="check") {{{_'r-check'}}}
+ option(value="uncheck") {{{_'r-uncheck'}}}
+ div.trigger-text
+ | {{{_'r-item'}}}
+ div.trigger-dropdown
+ input(id="checkitem-name",type=text,placeholder="{{{_'r-name'}}}")
+ div.trigger-text
+ | {{{_'r-of-checklist'}}}
+ div.trigger-dropdown
+ input(id="checklist-name3",type=text,placeholder="{{{_'r-name'}}}")
+ div.trigger-button.js-add-check-item-action.js-goto-rules
+ i.fa.fa-plus
+
+
+
+
+
+
+
diff --git a/client/components/rules/actions/checklistActions.js b/client/components/rules/actions/checklistActions.js
new file mode 100644
index 00000000..4b70f959
--- /dev/null
+++ b/client/components/rules/actions/checklistActions.js
@@ -0,0 +1,128 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.subscribe('allRules');
+ },
+ events() {
+ return [{
+ 'click .js-add-checklist-action' (event) {
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const actionSelected = this.find('#check-action').value;
+ const checklistName = this.find('#checklist-name').value;
+ const boardId = Session.get('currentBoard');
+ const desc = Utils.getTriggerActionDesc(event, this);
+ if (actionSelected === 'add') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'addChecklist',
+ checklistName,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ if (actionSelected === 'remove') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'removeChecklist',
+ checklistName,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+
+ },
+ 'click .js-add-checkall-action' (event) {
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const actionSelected = this.find('#checkall-action').value;
+ const checklistName = this.find('#checklist-name2').value;
+ const boardId = Session.get('currentBoard');
+ const desc = Utils.getTriggerActionDesc(event, this);
+ if (actionSelected === 'check') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'checkAll',
+ checklistName,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ if (actionSelected === 'uncheck') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'uncheckAll',
+ checklistName,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ },
+ 'click .js-add-check-item-action' (event) {
+ const ruleName = this.data().ruleName.get();
+ const trigger = this.data().triggerVar.get();
+ const checkItemName = this.find('#checkitem-name');
+ const checklistName = this.find('#checklist-name3');
+ const actionSelected = this.find('#check-item-action').value;
+ const boardId = Session.get('currentBoard');
+ const desc = Utils.getTriggerActionDesc(event, this);
+ if (actionSelected === 'check') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'checkItem',
+ checklistName,
+ checkItemName,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ if (actionSelected === 'uncheck') {
+ const triggerId = Triggers.insert(trigger);
+ const actionId = Actions.insert({
+ actionType: 'uncheckItem',
+ checklistName,
+ checkItemName,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ }
+ },
+ }];
+ },
+
+}).register('checklistActions');
diff --git a/client/components/rules/actions/mailActions.jade b/client/components/rules/actions/mailActions.jade
new file mode 100644
index 00000000..7be78c75
--- /dev/null
+++ b/client/components/rules/actions/mailActions.jade
@@ -0,0 +1,11 @@
+template(name="mailActions")
+ div.trigger-item.trigger-item-mail
+ div.trigger-content.trigger-content-mail
+ div.trigger-text.trigger-text-email
+ | {{_'r-send-email'}}
+ div.trigger-dropdown-mail
+ input(id="email-to",type=text,placeholder="{{_'r-to'}}")
+ input(id="email-subject",type=text,placeholder="{{_'r-subject'}}")
+ textarea(id="email-msg")
+ div.trigger-button.trigger-button-email.js-mail-action.js-goto-rules
+ i.fa.fa-plus
diff --git a/client/components/rules/actions/mailActions.js b/client/components/rules/actions/mailActions.js
new file mode 100644
index 00000000..40cbc280
--- /dev/null
+++ b/client/components/rules/actions/mailActions.js
@@ -0,0 +1,35 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+
+ },
+
+ events() {
+ return [{
+ 'click .js-mail-action' (event) {
+ const emailTo = this.find('#email-to').value;
+ const emailSubject = this.find('#email-subject').value;
+ const emailMsg = this.find('#email-msg').value;
+ const trigger = this.data().triggerVar.get();
+ const ruleName = this.data().ruleName.get();
+ const triggerId = Triggers.insert(trigger);
+ const boardId = Session.get('currentBoard');
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const actionId = Actions.insert({
+ actionType: 'sendEmail',
+ emailTo,
+ emailSubject,
+ emailMsg,
+ boardId,
+ desc,
+ });
+ Rules.insert({
+ title: ruleName,
+ triggerId,
+ actionId,
+ boardId,
+ });
+ },
+ }];
+ },
+
+}).register('mailActions');
diff --git a/client/components/rules/ruleDetails.jade b/client/components/rules/ruleDetails.jade
new file mode 100644
index 00000000..7183cf96
--- /dev/null
+++ b/client/components/rules/ruleDetails.jade
@@ -0,0 +1,20 @@
+template(name="ruleDetails")
+ .rules
+ h2
+ i.fa.fa-magic
+ | {{{_ 'r-rule-details' }}}
+ .triggers-content
+ .triggers-body
+ .triggers-main-body
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ = trigger
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ = action
+ div.rules-back
+ button.js-goback
+ i.fa.fa-chevron-left
+ | {{{_ 'back'}}}
diff --git a/client/components/rules/ruleDetails.js b/client/components/rules/ruleDetails.js
new file mode 100644
index 00000000..17c86dc3
--- /dev/null
+++ b/client/components/rules/ruleDetails.js
@@ -0,0 +1,38 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.subscribe('allRules');
+ this.subscribe('allTriggers');
+ this.subscribe('allActions');
+
+ },
+
+ trigger() {
+ const ruleId = this.data().ruleId;
+ const rule = Rules.findOne({
+ _id: ruleId.get(),
+ });
+ const trigger = Triggers.findOne({
+ _id: rule.triggerId,
+ });
+ const desc = trigger.description();
+ const upperdesc = desc.charAt(0).toUpperCase() + desc.substr(1);
+ return upperdesc;
+ },
+ action() {
+ const ruleId = this.data().ruleId;
+ const rule = Rules.findOne({
+ _id: ruleId.get(),
+ });
+ const action = Actions.findOne({
+ _id: rule.actionId,
+ });
+ const desc = action.description();
+ const upperdesc = desc.charAt(0).toUpperCase() + desc.substr(1);
+ return upperdesc;
+ },
+
+ events() {
+ return [{}];
+ },
+
+}).register('ruleDetails');
diff --git a/client/components/rules/rules.styl b/client/components/rules/rules.styl
new file mode 100644
index 00000000..b52f84a7
--- /dev/null
+++ b/client/components/rules/rules.styl
@@ -0,0 +1,167 @@
+.rules-list
+ overflow:hidden
+ overflow-y:scroll
+ max-height: 400px
+.rules-lists-item
+ display: block
+ position: relative
+ overflow: auto
+ p
+ display: inline-block
+ float: left
+ margin: revert
+
+.rules-btns-group
+ position: absolute
+ right: 0
+ top: 50%
+ transform: translateY(-50%)
+ button
+ margin: auto
+.rules-add
+ display: block
+ overflow: auto
+ margin-top: 15px
+ margin-bottom: 5px
+ input
+ display: inline-block
+ float: right
+ margin: auto
+ margin-right: 10px
+ button
+ display: inline-block
+ float: right
+ margin: auto
+.rules-back
+ display: block
+ overflow: auto
+ margin-top: 15px
+ margin-bottom: 5px
+ button
+ display: inline-block
+ float: right
+ margin: auto
+ margin-right:14px
+
+.flex
+ display: -webkit-box
+ display: -moz-box
+ display: -webkit-flex
+ display: -moz-flex
+ display: -ms-flexbox
+ display: flex
+
+
+
+.triggers-content
+ color: #727479
+ background: #dedede
+ .triggers-body
+ display flex
+ padding-top 15px
+ height 100%
+
+ .triggers-side-menu
+ background-color: #f7f7f7
+ border: 1px solid #f0f0f0
+ border-radius: 4px
+ height: intrinsic
+ box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
+
+ ul
+
+ li
+ margin: 0.1rem 0.2rem;
+ width:50px
+ height:50px
+ text-align:center
+ font-size: 25px
+ position: relative
+
+ i
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ box-shadow: none
+ transform: translate(-50%,-50%);
+
+
+ &.active
+ background #fff
+ box-shadow 0 1px 2px rgba(0,0,0,0.15);
+
+ &:hover
+ background #fff
+ box-shadow 0 1px 2px rgba(0,0,0,0.15);
+ a
+ @extends .flex
+ padding: 1rem 0 1rem 1rem
+ width: 100% - 5rem
+
+
+ span
+ font-size: 13px
+ .triggers-main-body
+ padding: 0.1em 1em
+ width:100%
+ .trigger-item
+ overflow:auto
+ padding:10px
+ height:40px
+ margin-bottom:5px
+ border-radius: 3px
+ position: relative
+ background-color: white
+ .trigger-content
+ position:absolute
+ top:50%
+ transform: translateY(-50%)
+ left:10px
+ .trigger-text
+ font-size: 16px
+ display:inline-block
+ .trigger-text.trigger-text-email
+ margin-left: 5px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ .trigger-dropdown
+ display:inline-block
+ select
+ width:auto
+ height:30px
+ margin:0px
+ margin-left:5px
+ input
+ display: inline-block
+ width: 80px;
+ margin: 0;
+ .trigger-content-mail
+ left:20px
+ right:100px
+ .trigger-button
+ position:absolute
+ top:50%
+ transform: translateY(-50%)
+ width:30px
+ height:30px
+ border: 1px solid #eee
+ border-radius: 4px
+ box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
+ text-align:center
+ font-size: 20px
+ right:10px
+ i
+ position: absolute
+ top: 50%
+ left: 50%
+ box-shadow: none
+ transform: translate(-50%,-50%)
+ &:hover, &.is-active
+ box-shadow: 0 0 0 2px darken(white, 60%) inset
+ .trigger-button.trigger-button-email
+ top:30px
+ .trigger-item.trigger-item-mail
+ height:300px
+
+
+
diff --git a/client/components/rules/rulesActions.jade b/client/components/rules/rulesActions.jade
new file mode 100644
index 00000000..3ac04e1c
--- /dev/null
+++ b/client/components/rules/rulesActions.jade
@@ -0,0 +1,29 @@
+template(name="rulesActions")
+ h2
+ i.fa.fa-magic
+ | {{{_ 'r-rule' }}} "#{data.ruleName.get}" - {{{_ 'r-add-action'}}}
+ .triggers-content
+ .triggers-body
+ .triggers-side-menu
+ ul
+ li.active.js-set-board-actions
+ i.fa.fa-columns
+ li.js-set-card-actions
+ i.fa.fa-sticky-note
+ li.js-set-checklist-actions
+ i.fa.fa-check
+ li.js-set-mail-actions
+ i.fa.fa-at
+ .triggers-main-body
+ if ($eq currentActions.get 'board')
+ +boardActions(ruleName=data.ruleName triggerVar=data.triggerVar)
+ else if ($eq currentActions.get 'card')
+ +cardActions(ruleName=data.ruleName triggerVar=data.triggerVar)
+ else if ($eq currentActions.get 'checklist')
+ +checklistActions(ruleName=data.ruleName triggerVar=data.triggerVar)
+ else if ($eq currentActions.get 'mail')
+ +mailActions(ruleName=data.ruleName triggerVar=data.triggerVar)
+ div.rules-back
+ button.js-goback
+ i.fa.fa-chevron-left
+ | {{{_ 'back'}}}
diff --git a/client/components/rules/rulesActions.js b/client/components/rules/rulesActions.js
new file mode 100644
index 00000000..64a5c70e
--- /dev/null
+++ b/client/components/rules/rulesActions.js
@@ -0,0 +1,58 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.currentActions = new ReactiveVar('board');
+ },
+
+ setBoardActions() {
+ this.currentActions.set('board');
+ $('.js-set-card-actions').removeClass('active');
+ $('.js-set-board-actions').addClass('active');
+ $('.js-set-checklist-actions').removeClass('active');
+ $('.js-set-mail-actions').removeClass('active');
+ },
+ setCardActions() {
+ this.currentActions.set('card');
+ $('.js-set-card-actions').addClass('active');
+ $('.js-set-board-actions').removeClass('active');
+ $('.js-set-checklist-actions').removeClass('active');
+ $('.js-set-mail-actions').removeClass('active');
+ },
+ setChecklistActions() {
+ this.currentActions.set('checklist');
+ $('.js-set-card-actions').removeClass('active');
+ $('.js-set-board-actions').removeClass('active');
+ $('.js-set-checklist-actions').addClass('active');
+ $('.js-set-mail-actions').removeClass('active');
+ },
+ setMailActions() {
+ this.currentActions.set('mail');
+ $('.js-set-card-actions').removeClass('active');
+ $('.js-set-board-actions').removeClass('active');
+ $('.js-set-checklist-actions').removeClass('active');
+ $('.js-set-mail-actions').addClass('active');
+ },
+
+ rules() {
+ return Rules.find({});
+ },
+
+ name() {
+ // console.log(this.data());
+ },
+ events() {
+ return [{
+ 'click .js-set-board-actions'(){
+ this.setBoardActions();
+ },
+ 'click .js-set-card-actions'() {
+ this.setCardActions();
+ },
+ 'click .js-set-mail-actions'() {
+ this.setMailActions();
+ },
+ 'click .js-set-checklist-actions'() {
+ this.setChecklistActions();
+ },
+ }];
+ },
+}).register('rulesActions');
diff --git a/client/components/rules/rulesList.jade b/client/components/rules/rulesList.jade
new file mode 100644
index 00000000..c2676aa7
--- /dev/null
+++ b/client/components/rules/rulesList.jade
@@ -0,0 +1,27 @@
+template(name="rulesList")
+ .rules
+ h2
+ i.fa.fa-magic
+ | {{{_ 'r-board-rules' }}}
+
+ ul.rules-list
+ each rules
+ li.rules-lists-item
+ p
+ = title
+ div.rules-btns-group
+ button.js-goto-details
+ i.fa.fa-eye
+ | {{{_ 'r-view-rule'}}}
+ if currentUser.isAdmin
+ button.js-delete-rule
+ i.fa.fa-trash-o
+ | {{{_ 'r-delete-rule'}}}
+ else
+ li.no-items-message {{{_ 'r-no-rules' }}}
+ if currentUser.isAdmin
+ div.rules-add
+ button.js-goto-trigger
+ i.fa.fa-plus
+ | {{{_ 'r-add-rule'}}}
+ input(type=text,placeholder="{{{_ 'r-new-rule-name' }}}",id="ruleTitle") \ No newline at end of file
diff --git a/client/components/rules/rulesList.js b/client/components/rules/rulesList.js
new file mode 100644
index 00000000..d3923bf9
--- /dev/null
+++ b/client/components/rules/rulesList.js
@@ -0,0 +1,15 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.subscribe('allRules');
+ },
+
+ rules() {
+ const boardId = Session.get('currentBoard');
+ return Rules.find({
+ boardId,
+ });
+ },
+ events() {
+ return [{}];
+ },
+}).register('rulesList');
diff --git a/client/components/rules/rulesMain.jade b/client/components/rules/rulesMain.jade
new file mode 100644
index 00000000..dc33ee4e
--- /dev/null
+++ b/client/components/rules/rulesMain.jade
@@ -0,0 +1,9 @@
+template(name="rulesMain")
+ if($eq rulesCurrentTab.get 'rulesList')
+ +rulesList
+ if($eq rulesCurrentTab.get 'trigger')
+ +rulesTriggers(ruleName=ruleName triggerVar=triggerVar)
+ if($eq rulesCurrentTab.get 'action')
+ +rulesActions(ruleName=ruleName triggerVar=triggerVar)
+ if($eq rulesCurrentTab.get 'ruleDetails')
+ +ruleDetails(ruleId=ruleId) \ No newline at end of file
diff --git a/client/components/rules/rulesMain.js b/client/components/rules/rulesMain.js
new file mode 100644
index 00000000..0752a541
--- /dev/null
+++ b/client/components/rules/rulesMain.js
@@ -0,0 +1,70 @@
+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');
+ },
+
+ 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();
+ this.setAction();
+ },
+ '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');
diff --git a/client/components/rules/rulesTriggers.jade b/client/components/rules/rulesTriggers.jade
new file mode 100644
index 00000000..79d9d98e
--- /dev/null
+++ b/client/components/rules/rulesTriggers.jade
@@ -0,0 +1,25 @@
+template(name="rulesTriggers")
+ h2
+ i.fa.fa-magic
+ | {{{_ 'r-rule' }}} "#{data.ruleName.get}" - {{{_ 'r-add-trigger'}}}
+ .triggers-content
+ .triggers-body
+ .triggers-side-menu
+ ul
+ li.active.js-set-board-triggers
+ i.fa.fa-columns
+ li.js-set-card-triggers
+ i.fa.fa-sticky-note
+ li.js-set-checklist-triggers
+ i.fa.fa-check
+ .triggers-main-body
+ if showBoardTrigger.get
+ +boardTriggers
+ else if showCardTrigger.get
+ +cardTriggers
+ else if showChecklistTrigger.get
+ +checklistTriggers
+ div.rules-back
+ button.js-goback
+ i.fa.fa-chevron-left
+ | {{{_ 'back'}}}
diff --git a/client/components/rules/rulesTriggers.js b/client/components/rules/rulesTriggers.js
new file mode 100644
index 00000000..e3c16221
--- /dev/null
+++ b/client/components/rules/rulesTriggers.js
@@ -0,0 +1,53 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.showBoardTrigger = new ReactiveVar(true);
+ this.showCardTrigger = new ReactiveVar(false);
+ this.showChecklistTrigger = new ReactiveVar(false);
+ },
+
+ setBoardTriggers() {
+ this.showBoardTrigger.set(true);
+ this.showCardTrigger.set(false);
+ this.showChecklistTrigger.set(false);
+ $('.js-set-card-triggers').removeClass('active');
+ $('.js-set-board-triggers').addClass('active');
+ $('.js-set-checklist-triggers').removeClass('active');
+ },
+ setCardTriggers() {
+ this.showBoardTrigger.set(false);
+ this.showCardTrigger.set(true);
+ this.showChecklistTrigger.set(false);
+ $('.js-set-card-triggers').addClass('active');
+ $('.js-set-board-triggers').removeClass('active');
+ $('.js-set-checklist-triggers').removeClass('active');
+ },
+ setChecklistTriggers() {
+ this.showBoardTrigger.set(false);
+ this.showCardTrigger.set(false);
+ this.showChecklistTrigger.set(true);
+ $('.js-set-card-triggers').removeClass('active');
+ $('.js-set-board-triggers').removeClass('active');
+ $('.js-set-checklist-triggers').addClass('active');
+ },
+
+ rules() {
+ return Rules.find({});
+ },
+
+ name() {
+ // console.log(this.data());
+ },
+ events() {
+ return [{
+ 'click .js-set-board-triggers' () {
+ this.setBoardTriggers();
+ },
+ 'click .js-set-card-triggers' () {
+ this.setCardTriggers();
+ },
+ 'click .js-set-checklist-triggers' () {
+ this.setChecklistTriggers();
+ },
+ }];
+ },
+}).register('rulesTriggers');
diff --git a/client/components/rules/triggers/boardTriggers.jade b/client/components/rules/triggers/boardTriggers.jade
new file mode 100644
index 00000000..48b9345c
--- /dev/null
+++ b/client/components/rules/triggers/boardTriggers.jade
@@ -0,0 +1,68 @@
+template(name="boardTriggers")
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-card-is'}}
+ div.trigger-dropdown
+ select(id="gen-action")
+ option(value="created") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-the-board'}}
+ div.trigger-button.js-add-gen-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-card-is'}}
+ div.trigger-dropdown
+ select(id="create-action")
+ option(value="created") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-list'}}
+ div.trigger-dropdown
+ input(id="create-list-name",type=text,placeholder="{{_'r-list-name'}}")
+ div.trigger-button.js-add-create-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-card-is-moved'}}
+ div.trigger-button.js-add-gen-moved-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-card-is'}}
+ div.trigger-dropdown
+ select(id="move-action")
+ option(value="moved-to") {{_'r-moved-to'}}
+ option(value="moved-from") {{_'r-moved-from'}}
+ div.trigger-text
+ | {{_'r-list'}}
+ div.trigger-dropdown
+ input(id="move-list-name",type=text,placeholder="{{_'r-list-name'}}")
+ div.trigger-button.js-add-moved-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-card-is'}}
+ div.trigger-dropdown
+ select(id="arch-action")
+ option(value="archived") {{_'r-archived'}}
+ option(value="unarchived") {{_'r-unarchived'}}
+ div.trigger-button.js-add-arch-trigger.js-goto-action
+ i.fa.fa-plus
+
+
+
+
+
+
+
diff --git a/client/components/rules/triggers/boardTriggers.js b/client/components/rules/triggers/boardTriggers.js
new file mode 100644
index 00000000..40c5b07e
--- /dev/null
+++ b/client/components/rules/triggers/boardTriggers.js
@@ -0,0 +1,116 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+
+ },
+
+ events() {
+ return [{
+ 'click .js-add-gen-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#gen-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'created') {
+ datas.triggerVar.set({
+ activityType: 'createCard',
+ boardId,
+ 'listName': '*',
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'removeCard',
+ boardId,
+ desc,
+ });
+ }
+
+ },
+ 'click .js-add-create-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#create-action').value;
+ const listName = this.find('#create-list-name').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'created') {
+ datas.triggerVar.set({
+ activityType: 'createCard',
+ boardId,
+ listName,
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'removeCard',
+ boardId,
+ listName,
+ desc,
+ });
+ }
+ },
+ 'click .js-add-moved-trigger' (event) {
+ const datas = this.data();
+ const desc = Utils.getTriggerActionDesc(event, this);
+
+ const actionSelected = this.find('#move-action').value;
+ const listName = this.find('#move-list-name').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'moved-to') {
+ datas.triggerVar.set({
+ activityType: 'moveCard',
+ boardId,
+ listName,
+ 'oldListName': '*',
+ desc,
+ });
+ }
+ if (actionSelected === 'moved-from') {
+ datas.triggerVar.set({
+ activityType: 'moveCard',
+ boardId,
+ 'listName': '*',
+ 'oldListName': listName,
+ desc,
+ });
+ }
+ },
+ 'click .js-add-gen-moved-trigger' (event){
+ const datas = this.data();
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const boardId = Session.get('currentBoard');
+
+ datas.triggerVar.set({
+ activityType: 'moveCard',
+ boardId,
+ 'listName':'*',
+ 'oldListName': '*',
+ desc,
+ });
+ },
+ 'click .js-add-arc-trigger' (event) {
+ const datas = this.data();
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const actionSelected = this.find('#arch-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'archived') {
+ datas.triggerVar.set({
+ activityType: 'archivedCard',
+ boardId,
+ desc,
+ });
+ }
+ if (actionSelected === 'unarchived') {
+ datas.triggerVar.set({
+ activityType: 'restoredCard',
+ boardId,
+ desc,
+ });
+ }
+ },
+
+ }];
+ },
+
+}).register('boardTriggers');
diff --git a/client/components/rules/triggers/cardTriggers.jade b/client/components/rules/triggers/cardTriggers.jade
new file mode 100644
index 00000000..5226e3c4
--- /dev/null
+++ b/client/components/rules/triggers/cardTriggers.jade
@@ -0,0 +1,79 @@
+template(name="cardTriggers")
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-label-is'}}
+ div.trigger-dropdown
+ select(id="label-action")
+ option(value="added") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-a-card'}}
+ div.trigger-button.js-add-gen-label-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-the-label-is'}}
+ div.trigger-dropdown
+ select(id="spec-label")
+ each labels
+ option(value="#{_id}")
+ = name
+ div.trigger-text
+ | {{_'r-is'}}
+ div.trigger-dropdown
+ select(id="spec-label-action")
+ option(value="added") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-a-card'}}
+ div.trigger-button.js-add-spec-label-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-member'}}
+ div.trigger-dropdown
+ select(id="gen-member-action")
+ option(value="added") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-a-card'}}
+ div.trigger-button.js-add-gen-member-trigger.js-goto-action
+ i.fa.fa-plus
+
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-the-member'}}
+ div.trigger-dropdown
+ input(id="spec-member",type=text,placeholder="{{_'r-name'}}")
+ div.trigger-text
+ | {{_'r-is'}}
+ div.trigger-dropdown
+ select(id="spec-member-action")
+ option(value="added") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-a-card'}}
+ div.trigger-button.js-add-spec-member-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-attach'}}
+ div.trigger-text
+ | {{_'r-is'}}
+ div.trigger-dropdown
+ select(id="attach-action")
+ option(value="added") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-a-card'}}
+ div.trigger-button.js-add-attachment-trigger.js-goto-action
+ i.fa.fa-plus
diff --git a/client/components/rules/triggers/cardTriggers.js b/client/components/rules/triggers/cardTriggers.js
new file mode 100644
index 00000000..2303a85b
--- /dev/null
+++ b/client/components/rules/triggers/cardTriggers.js
@@ -0,0 +1,128 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.subscribe('allRules');
+ },
+ labels() {
+ const labels = Boards.findOne(Session.get('currentBoard')).labels;
+ for (let i = 0; i < labels.length; i++) {
+ if (labels[i].name === '' || labels[i].name === undefined) {
+ labels[i].name = labels[i].color.toUpperCase();
+ }
+ }
+ return labels;
+ },
+ events() {
+ return [{
+ 'click .js-add-gen-label-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#label-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'added') {
+ datas.triggerVar.set({
+ activityType: 'addedLabel',
+ boardId,
+ 'labelId': '*',
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'removedLabel',
+ boardId,
+ 'labelId': '*',
+ desc,
+ });
+ }
+ },
+ 'click .js-add-spec-label-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#spec-label-action').value;
+ const labelId = this.find('#spec-label').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'added') {
+ datas.triggerVar.set({
+ activityType: 'addedLabel',
+ boardId,
+ labelId,
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'removedLabel',
+ boardId,
+ labelId,
+ desc,
+ });
+ }
+ },
+ 'click .js-add-gen-member-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#gen-member-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'added') {
+ datas.triggerVar.set({
+ activityType: 'joinMember',
+ boardId,
+ 'username': '*',
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'unjoinMember',
+ boardId,
+ 'username': '*',
+ desc,
+ });
+ }
+ },
+ 'click .js-add-spec-member-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#spec-member-action').value;
+ const username = this.find('#spec-member').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'added') {
+ datas.triggerVar.set({
+ activityType: 'joinMember',
+ boardId,
+ username,
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'unjoinMember',
+ boardId,
+ username,
+ desc,
+ });
+ }
+ },
+ 'click .js-add-attachment-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#attach-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'added') {
+ datas.triggerVar.set({
+ activityType: 'addAttachment',
+ boardId,
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'deleteAttachment',
+ boardId,
+ desc,
+ });
+ }
+ },
+ }];
+ },
+}).register('cardTriggers');
diff --git a/client/components/rules/triggers/checklistTriggers.jade b/client/components/rules/triggers/checklistTriggers.jade
new file mode 100644
index 00000000..c6cd99a6
--- /dev/null
+++ b/client/components/rules/triggers/checklistTriggers.jade
@@ -0,0 +1,83 @@
+template(name="checklistTriggers")
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-checklist'}}
+ div.trigger-dropdown
+ select(id="gen-check-action")
+ option(value="created") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-a-card'}}
+ div.trigger-button.js-add-gen-check-trigger.js-goto-action
+ i.fa.fa-plus
+
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-the-checklist'}}
+ div.trigger-dropdown
+ input(id="check-name",type=text,placeholder="{{_'r-name'}}")
+ div.trigger-text
+ | {{_'r-is'}}
+ div.trigger-dropdown
+ select(id="spec-check-action")
+ option(value="created") {{_'r-added-to'}}
+ option(value="removed") {{_'r-removed-from'}}
+ div.trigger-text
+ | {{_'r-a-card'}}
+ div.trigger-button.js-add-spec-check-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-checklist'}}
+ div.trigger-dropdown
+ select(id="gen-comp-check-action")
+ option(value="completed") {{_'r-completed'}}
+ option(value="uncompleted") {{_'r-made-incomplete'}}
+ div.trigger-button.js-add-gen-comp-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-the-checklist'}}
+ div.trigger-dropdown
+ input(id="spec-comp-check-name",type=text,placeholder="{{_'r-name'}}")
+ div.trigger-text
+ | {{_'r-is'}}
+ div.trigger-dropdown
+ select(id="spec-comp-check-action")
+ option(value="completed") {{_'r-completed'}}
+ option(value="uncompleted") {{_'r-made-incomplete'}}
+ div.trigger-button.js-add-spec-comp-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-a-item'}}
+ div.trigger-dropdown
+ select(id="check-item-gen-action")
+ option(value="checked") {{_'r-checked'}}
+ option(value="unchecked") {{_'r-unchecked'}}
+ div.trigger-button.js-add-gen-check-item-trigger.js-goto-action
+ i.fa.fa-plus
+
+ div.trigger-item
+ div.trigger-content
+ div.trigger-text
+ | {{_'r-when-the-item'}}
+ div.trigger-dropdown
+ input(id="check-item-name",type=text,placeholder="{{_'r-name'}}")
+ div.trigger-text
+ | {{_'r-is'}}
+ div.trigger-dropdown
+ select(id="check-item-spec-action")
+ option(value="checked") {{_'r-checked'}}
+ option(value="unchecked") {{_'r-unchecked'}}
+ div.trigger-button.js-add-spec-check-item-trigger.js-goto-action
+ i.fa.fa-plus
diff --git a/client/components/rules/triggers/checklistTriggers.js b/client/components/rules/triggers/checklistTriggers.js
new file mode 100644
index 00000000..2272be29
--- /dev/null
+++ b/client/components/rules/triggers/checklistTriggers.js
@@ -0,0 +1,146 @@
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.subscribe('allRules');
+ },
+ events() {
+ return [{
+ 'click .js-add-gen-check-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#gen-check-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'created') {
+ datas.triggerVar.set({
+ activityType: 'addChecklist',
+ boardId,
+ 'checklistName': '*',
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'removeChecklist',
+ boardId,
+ 'checklistName': '*',
+ desc,
+ });
+ }
+ },
+ 'click .js-add-spec-check-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#spec-check-action').value;
+ const checklistId = this.find('#check-name').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'created') {
+ datas.triggerVar.set({
+ activityType: 'addChecklist',
+ boardId,
+ 'checklistName': checklistId,
+ desc,
+ });
+ }
+ if (actionSelected === 'removed') {
+ datas.triggerVar.set({
+ activityType: 'removeChecklist',
+ boardId,
+ 'checklistName': checklistId,
+ desc,
+ });
+ }
+ },
+ 'click .js-add-gen-comp-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+
+ const datas = this.data();
+ const actionSelected = this.find('#gen-comp-check-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'completed') {
+ datas.triggerVar.set({
+ activityType: 'completeChecklist',
+ boardId,
+ 'checklistName': '*',
+ desc,
+ });
+ }
+ if (actionSelected === 'uncompleted') {
+ datas.triggerVar.set({
+ activityType: 'uncompleteChecklist',
+ boardId,
+ 'checklistName': '*',
+ desc,
+ });
+ }
+ },
+ 'click .js-add-spec-comp-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#spec-comp-check-action').value;
+ const checklistId = this.find('#spec-comp-check-name').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'completed') {
+ datas.triggerVar.set({
+ activityType: 'completeChecklist',
+ boardId,
+ 'checklistName': checklistId,
+ desc,
+ });
+ }
+ if (actionSelected === 'uncompleted') {
+ datas.triggerVar.set({
+ activityType: 'uncompleteChecklist',
+ boardId,
+ 'checklistName': checklistId,
+ desc,
+ });
+ }
+ },
+ 'click .js-add-gen-check-item-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#check-item-gen-action').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'checked') {
+ datas.triggerVar.set({
+ activityType: 'checkedItem',
+ boardId,
+ 'checklistItemName': '*',
+ desc,
+ });
+ }
+ if (actionSelected === 'unchecked') {
+ datas.triggerVar.set({
+ activityType: 'uncheckedItem',
+ boardId,
+ 'checklistItemName': '*',
+ desc,
+ });
+ }
+ },
+ 'click .js-add-spec-check-item-trigger' (event) {
+ const desc = Utils.getTriggerActionDesc(event, this);
+ const datas = this.data();
+ const actionSelected = this.find('#check-item-spec-action').value;
+ const checklistItemId = this.find('#check-item-name').value;
+ const boardId = Session.get('currentBoard');
+ if (actionSelected === 'checked') {
+ datas.triggerVar.set({
+ activityType: 'checkedItem',
+ boardId,
+ 'checklistItemName': checklistItemId,
+ desc,
+ });
+ }
+ if (actionSelected === 'unchecked') {
+ datas.triggerVar.set({
+ activityType: 'uncheckedItem',
+ boardId,
+ 'checklistItemName': checklistItemId,
+ desc,
+ });
+ }
+ },
+ }];
+ },
+
+}).register('checklistTriggers');