瀏覽代碼

Completed rules

Angelo Gallarello 6 年之前
父節點
當前提交
1f5f429fc4

+ 27 - 3
client/components/rules/actions/boardActions.jade

@@ -4,16 +4,40 @@ template(name="boardActions")
       div.trigger-text 
         | Move card to 
       div.trigger-dropdown
-        select(id="action")
+        select(id="move-gen-action")
+          option(value="top") Top of
+          option(value="bottom") Bottom of
+      div.trigger-text 
+        | 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 
+        | Move card to 
+      div.trigger-dropdown
+        select(id="move-spec-action")
           option(value="top") Top of
           option(value="bottom") Bottom of
       div.trigger-text 
         | list
       div.trigger-dropdown
-        input(type=text,placeholder="List Name")  
-    div.trigger-button.js-add-move-action.js-goto-rules
+        input(id="listName",type=text,placeholder="List 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") Archive
+          option(value="unarchive") Unarchive
+      div.trigger-text 
+        | card
+    div.trigger-button.js-add-arch-action.js-goto-rules
+      i.fa.fa-plus  
+
 
    
   

+ 40 - 13
client/components/rules/actions/boardActions.js

@@ -7,23 +7,50 @@ BlazeComponent.extendComponent({
 
   events() {
     return [
-    {'click .js-add-move-action'(event) {
-
-      console.log(this.data());
-      console.log(this.data().triggerIdVar.get());
+    {'click .js-add-spec-move-action'(event) {
       const ruleName = this.data().ruleName.get();
-      const triggerId = this.data().triggerIdVar.get();
-      const actionSelected = this.find('#action').value;
-
+      const trigger = this.data().triggerVar.get();
+      const actionSelected = this.find('#move-spec-action').value;
+      const listTitle = this.find('#listName').value;
+      if(actionSelected == "top"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "moveCardToTop","listTitle":listTitle});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+     if(actionSelected == "bottom"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "moveCardToBottom","listTitle":listTitle});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+   },
+   'click .js-add-gen-move-action'(event) {
+      const ruleName = this.data().ruleName.get();
+      const trigger = this.data().triggerVar.get();
+      const actionSelected = this.find('#move-gen-action').value;
       if(actionSelected == "top"){
-       Actions.insert({actionType: "moveCardToTop"},function(err,id){
-        Rules.insert({title: ruleName, triggerId: triggerId, actionId: id});  
-      });
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "moveCardToTop","listTitle":"*"});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
      }
      if(actionSelected == "bottom"){
-       Actions.insert({actionType: "moveCardToBottom"},function(err,id){
-       Rules.insert({title: ruleName, triggerId: triggerId, actionId: id});  
-      });
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "moveCardToBottom","listTitle":"*"});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+   },
+   'click .js-add-arch-action'(event) {
+      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"});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+     if(actionSelected == "unarchive"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "unarchive"});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
      }
    },
  }];

+ 43 - 0
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") Add
+          option(value="remove") Remove
+      div.trigger-text 
+        | 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") Add
+          option(value="remove") Removed
+      div.trigger-text 
+        | member
+      div.trigger-dropdown
+        input(id="member-name",type=text,placeholder="Member name")  
+    div.trigger-button.js-add-member-action.js-goto-rules
+      i.fa.fa-plus
+
+  div.trigger-item
+    div.trigger-content
+      div.trigger-text 
+        | Remove all member from the card 
+    div.trigger-button.js-add-removeall-action.js-goto-rules
+      i.fa.fa-plus
+
+
+   
+  
+
+
+

+ 66 - 0
client/components/rules/actions/cardActions.js

@@ -0,0 +1,66 @@
+BlazeComponent.extendComponent({
+  onCreated() {
+    this.subscribe('allRules');
+  },
+
+  labels(){
+    const labels = Boards.findOne(Session.get('currentBoard')).labels;
+    console.log(labels);
+    for(let i = 0;i<labels.length;i++){
+      if(labels[i].name == "" || labels[i].name == undefined){
+        labels[i].name = labels[i].color.toUpperCase();
+      }
+    }
+    console.log(labels);
+    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;
+
+      if(actionSelected == "add"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "addLabel","labelId":labelId});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+     if(actionSelected == "remove"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "removeLabel","labelId":labelId});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+
+   },
+   '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 memberName = this.find('#member-name').value;
+      if(actionSelected == "add"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "addMember","memberName":memberName});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+     if(actionSelected == "remove"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "removeMember","memberName":memberName});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+   },
+   'click .js-add-removeall-action'(event) {
+      const ruleName = this.data().ruleName.get();
+      const trigger = this.data().triggerVar.get();
+      const triggerId = Triggers.insert(trigger);
+      const actionId = Actions.insert({actionType: "removeMember","memberName":"*"});
+      Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});
+   },
+ }];
+},
+
+}).register('cardActions');

+ 51 - 0
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") Add
+          option(value="remove") Remove
+      div.trigger-text 
+        | checklist
+      div.trigger-dropdown
+        input(id="checklist-name",type=text,placeholder="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") Check all
+          option(value="uncheck") Unchek all
+      div.trigger-text 
+        | items of checklist
+      div.trigger-dropdown
+        input(id="checklist-name2",type=text,placeholder="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") Check 
+          option(value="uncheck") Unchek
+      div.trigger-text 
+        | item
+      div.trigger-dropdown
+        input(id="checkitem-name",type=text,placeholder="name")
+      div.trigger-text 
+        | of checklist
+      div.trigger-dropdown
+        input(id="checklist-name3",type=text,placeholder="name")  
+    div.trigger-button.js-add-check-item-action.js-goto-rules
+      i.fa.fa-plus
+
+
+   
+  
+
+
+

+ 61 - 0
client/components/rules/actions/checklistActions.js

@@ -0,0 +1,61 @@
+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;
+
+      if(actionSelected == "add"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "addChecklist","checklistName":checklistName});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+     if(actionSelected == "remove"){
+       const triggerId = Triggers.insert(trigger);
+       const actionId = Actions.insert({actionType: "removeChecklist","checklistName":checklistName});
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+     }
+
+   },
+   '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;
+    if(actionSelected == "check"){
+     const triggerId = Triggers.insert(trigger);
+     const actionId = Actions.insert({actionType: "checkAll","checklistName":checklistName});
+     Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+   }
+   if(actionSelected == "uncheck"){
+     const triggerId = Triggers.insert(trigger);
+     const actionId = Actions.insert({actionType: "uncheckAll","checklistName":checklistName});
+     Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+   }
+ },
+ '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;
+  if(actionSelected == "check"){
+    const triggerId = Triggers.insert(trigger);
+    const actionId = Actions.insert({actionType: "checkItem","checklistName":checklistName,"checkItemName":checkItemName});
+    Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+  }
+  if(actionSelected == "uncheck"){
+    const triggerId = Triggers.insert(trigger);
+    const actionId = Actions.insert({actionType: "uncheckItem","checklistName":checklistName,"checkItemName":checkItemName});
+    Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+  }
+},
+}];
+},
+
+}).register('checklistActions');

+ 11 - 0
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
+        | Send an email
+      div.trigger-dropdown-mail
+        input(id="email-to",type=text,placeholder="to")
+      input(id="email-subject",type=text,placeholder="subject")
+      textarea(id="email-msg")  
+    div.trigger-button.trigger-button-email.js-mail-action.js-goto-rules
+      i.fa.fa-plus  

+ 21 - 0
client/components/rules/actions/mailActions.js

@@ -0,0 +1,21 @@
+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 actionId = Actions.insert({actionType: "sendEmail","emailTo":emailTo,"emailSubject":emailSubject,"emailMsg":emailMsg});
+      Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId});  
+    },
+  }];
+},
+
+}).register('mailActions');

+ 16 - 0
client/components/rules/rules.styl

@@ -40,6 +40,8 @@
   display: -ms-flexbox
   display: flex
 
+
+
 .triggers-content
   color: #727479
   background: #dedede
@@ -107,6 +109,10 @@
             .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
@@ -118,6 +124,9 @@
                 display: inline-block
                 width: 80px;
                 margin: 0;
+        .trigger-content-mail
+          left:20px
+          right:100px
         .trigger-button
           position:absolute
           top:50%
@@ -138,3 +147,10 @@
             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
+  
+
+

+ 13 - 5
client/components/rules/rulesActions.jade

@@ -6,12 +6,20 @@ template(name="rulesActions")
     .triggers-body
       .triggers-side-menu
         ul
-          li.active.js-set-board-triggers
+          li.active.js-set-board-actions
             i.fa.fa-columns
-          li.js-set-card-triggers
+          li.js-set-card-actions
             i.fa.fa-sticky-note
-          li.js-set-checklist-triggers
+          li.js-set-checklist-actions
             i.fa.fa-check
+          li.js-set-mail-actions
+            i.fa.fa-at
       .triggers-main-body
-        if showBoardActions.get
-          +boardActions(ruleName=data.ruleName triggerIdVar=data.triggerIdVar)
+        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)  

+ 37 - 32
client/components/rules/rulesActions.js

@@ -1,34 +1,36 @@
 BlazeComponent.extendComponent({
   onCreated() {
-    this.showBoardActions = new ReactiveVar(true);
-    this.showCardActions = new ReactiveVar(false);
-    this.showChecklistAction = new ReactiveVar(false);
+    this.currentActions = new ReactiveVar("board");
   },
 
 
-  setBoardTriggers(){
-    this.showBoardActions.set(true);
-    this.showCardActions.set(false);
-    this.showChecklistActionsr.set(false);
-    $('.js-set-card-triggers').removeClass('active');
-    $('.js-set-board-triggers').addClass('active');
-    $('.js-set-checklist-triggers').removeClass('active');
-  },
-  setCardTriggers(){
-    this.showBoardActions.set(false);
-    this.showCardActions.set(true);
-    this.showChecklistActions.set(false);
-    $('.js-set-card-triggers').addClass('active');
-    $('.js-set-board-triggers').removeClass('active');
-    $('.js-set-checklist-triggers').removeClass('active');
-  },
-  setChecklistTriggers(){
-    this.showBoardActions.set(false);
-    this.showCardActions.set(false);
-    this.showChecklistActions.set(true);
-    $('.js-set-card-triggers').removeClass('active');
-    $('.js-set-board-triggers').removeClass('active');
-    $('.js-set-checklist-triggers').addClass('active');
+  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() {
@@ -39,14 +41,17 @@ BlazeComponent.extendComponent({
     console.log(this.data());
   },
   events() {
-    return [{'click .js-set-board-triggers'(event) {
-      this.setBoardTriggers();
+    return [{'click .js-set-board-actions'(event) {
+      this.setBoardActions();
+    },
+    'click .js-set-card-actions'(event) {
+      this.setCardActions();
     },
-    'click .js-set-card-triggers'(event) {
-      this.setCardTriggers();
+    'click .js-set-mail-actions'(event) {
+      this.setMailActions();
     },
-    'click .js-set-checklist-triggers'(event) {
-      this.setChecklistTriggers();
+    'click .js-set-checklist-actions'(event) {
+      this.setChecklistActions();
     },}];
   },
 }).register('rulesActions');

+ 2 - 2
client/components/rules/rulesMain.jade

@@ -2,6 +2,6 @@ template(name="rulesMain")
   if rulesListVar.get
     +rulesList
   else if rulesTriggerVar.get
-    +rulesTriggers(ruleName=ruleName triggerIdVar=triggerIdVar)
+    +rulesTriggers(ruleName=ruleName triggerVar=triggerVar)
   else if rulesActionVar.get
-    +rulesActions(ruleName=ruleName triggerIdVar=triggerIdVar)
+    +rulesActions(ruleName=ruleName triggerVar=triggerVar)

+ 1 - 1
client/components/rules/rulesMain.js

@@ -4,7 +4,7 @@ BlazeComponent.extendComponent({
     this.rulesTriggerVar = new ReactiveVar(false);
     this.rulesActionVar = new ReactiveVar(false);
     this.ruleName = new ReactiveVar("");
-    this.triggerIdVar = new ReactiveVar("");
+    this.triggerVar = new ReactiveVar();
   },
 
   setTrigger() {

+ 8 - 24
client/components/rules/triggers/boardTriggers.js

@@ -11,14 +11,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#gen-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "created"){
-        Triggers.insert({activityType: "createCard","boardId":boardId,"listName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "createCard","boardId":boardId,"listName":"*"});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "removeCard","boardId":boardId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "removeCard","boardId":boardId});
       }
     },
     'click .js-add-create-trigger'(event) {
@@ -28,14 +24,10 @@ BlazeComponent.extendComponent({
       const listName = this.find('#create-list-name').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "created"){
-        Triggers.insert({activityType: "createCard","boardId":boardId,"listName":listName},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "createCard","boardId":boardId,"listName":listName});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "removeCard","boardId":boardId,"listName":listName},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "removeCard","boardId":boardId,"listName":listName});
       }
     },
     'click .js-add-moved-trigger'(event) {
@@ -44,14 +36,10 @@ BlazeComponent.extendComponent({
       const listName = this.find('#move-list-name').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "moved-to"){
-        Triggers.insert({activityType: "moveCard","boardId":boardId,"listName":listName,"oldListName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "moveCard","boardId":boardId,"listName":listName,"oldListName":"*"});
       }
       if(actionSelected == "moved-from"){
-        Triggers.insert({activityType: "moveCard","boardId":boardId,"listName":"*","oldListName":listName},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "moveCard","boardId":boardId,"listName":"*","oldListName":listName});
       }
     },
     'click .js-add-arc-trigger'(event) {
@@ -59,14 +47,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#arch-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "archived"){
-        Triggers.insert({activityType: "archivedCard","boardId":boardId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "archivedCard","boardId":boardId});
       }
       if(actionSelected == "unarchived"){
-        Triggers.insert({activityType: "restoredCard","boardId":boardId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "restoredCard","boardId":boardId});
       }
     }
 

+ 10 - 30
client/components/rules/triggers/cardTriggers.js

@@ -22,14 +22,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#label-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "added"){
-        Triggers.insert({activityType: "addedLabel","boardId":boardId,"labelId":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "addedLabel","boardId":boardId,"labelId":"*"});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "removedLabel","boardId":boardId,"labelId":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "removedLabel","boardId":boardId,"labelId":"*"});
       }
     },
     'click .js-add-spec-label-trigger'(event) {
@@ -38,14 +34,10 @@ BlazeComponent.extendComponent({
       const labelId = this.find('#spec-label').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "added"){
-        Triggers.insert({activityType: "addedLabel","boardId":boardId,"labelId":labelId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "addedLabel","boardId":boardId,"labelId":labelId});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "removedLabel","boardId":boardId,"labelId":labelId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "removedLabel","boardId":boardId,"labelId":labelId});
       }
     },
     'click .js-add-gen-member-trigger'(event) {
@@ -54,14 +46,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#gen-member-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "added"){
-        Triggers.insert({activityType: "joinMember","boardId":boardId,"memberId":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "joinMember","boardId":boardId,"memberId":"*"});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "unjoinMember","boardId":boardId,"memberId":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "unjoinMember","boardId":boardId,"memberId":"*"});
       }
     },
     'click .js-add-spec-member-trigger'(event) {
@@ -70,14 +58,10 @@ BlazeComponent.extendComponent({
       const memberId = this.find('#spec-member').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "added"){
-        Triggers.insert({activityType: "joinMember","boardId":boardId,"memberId":memberId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "joinMember","boardId":boardId,"memberId":memberId});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "unjoinMember","boardId":boardId,"memberId":memberId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "unjoinMember","boardId":boardId,"memberId":memberId});
       }
     },
     'click .js-add-attachment-trigger'(event) {
@@ -86,14 +70,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#attach-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "added"){
-        Triggers.insert({activityType: "addAttachment","boardId":boardId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "addAttachment","boardId":boardId});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "deleteAttachment","boardId":boardId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "deleteAttachment","boardId":boardId});
       }
     },
     }];

+ 14 - 38
client/components/rules/triggers/checklistTriggers.js

@@ -10,14 +10,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#gen-check-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "created"){
-        Triggers.insert({activityType: "addChecklist","boardId":boardId,"checklistName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "addChecklist","boardId":boardId,"checklistName":"*"});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "removeChecklist","boardId":boardId,"checklistName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "removeChecklist","boardId":boardId,"checklistName":"*"});
       }
     },
     'click .js-add-spec-check-trigger'(event) {
@@ -26,14 +22,10 @@ BlazeComponent.extendComponent({
       const checklistId = this.find('#check-name').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "created"){
-        Triggers.insert({activityType: "addChecklist","boardId":boardId,"checklistName":checklistId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "addChecklist","boardId":boardId,"checklistName":checklistId});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "removeChecklist","boardId":boardId,"checklistName":checklistId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "removeChecklist","boardId":boardId,"checklistName":checklistId});
       }
     },
     'click .js-add-gen-comp-trigger'(event) {
@@ -42,14 +34,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#gen-comp-check-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "completed"){
-        Triggers.insert({activityType: "completeChecklist","boardId":boardId,"checklistName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "completeChecklist","boardId":boardId,"checklistName":"*"});
       }
       if(actionSelected == "uncompleted"){
-        Triggers.insert({activityType: "uncompleteChecklist","boardId":boardId,"checklistName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "uncompleteChecklist","boardId":boardId,"checklistName":"*"});
       }
     },
     'click .js-add-spec-comp-trigger'(event) {
@@ -58,14 +46,10 @@ BlazeComponent.extendComponent({
       const checklistId = this.find('#spec-comp-check-name').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "added"){
-        Triggers.insert({activityType: "joinMember","boardId":boardId,"checklistName":checklistId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "completeChecklist","boardId":boardId,"checklistName":checklistId});
       }
       if(actionSelected == "removed"){
-        Triggers.insert({activityType: "unjoinMember","boardId":boardId,"checklistName":checklistId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "uncompleteChecklist","boardId":boardId,"checklistName":checklistId});
       }
     },
     'click .js-add-gen-check-item-trigger'(event) {
@@ -74,14 +58,10 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#check-item-gen-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "checked"){
-        Triggers.insert({activityType: "checkedItem","boardId":boardId,"checklistItemName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "checkedItem","boardId":boardId,"checklistItemName":"*"});
       }
       if(actionSelected == "unchecked"){
-        Triggers.insert({activityType: "uncheckedItem","boardId":boardId,"checklistItemName":"*"},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+        datas.triggerVar.set({activityType: "uncheckedItem","boardId":boardId,"checklistItemName":"*"});
       }
     },
     'click .js-add-spec-check-item-trigger'(event) {
@@ -89,15 +69,11 @@ BlazeComponent.extendComponent({
       const actionSelected = this.find('#check-item-spec-action').value;
       const checklistItemId = this.find('#check-item-name').value;
       const boardId = Session.get('currentBoard')
-      if(actionSelected == "added"){
-        Triggers.insert({activityType: "joinMember","boardId":boardId,"checklistItemName":checklistItemId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+      if(actionSelected == "checked"){
+        datas.triggerVar.set({activityType: "checkedItem","boardId":boardId,"checklistItemName":checklistItemId});
       }
-      if(actionSelected == "removed"){
-        Triggers.insert({activityType: "unjoinMember","boardId":boardId,"checklistItemName":checklistItemId},function(error,id){
-          datas.triggerIdVar.set(id);
-        });
+      if(actionSelected == "unchecked"){
+        datas.triggerVar.set({activityType: "uncheckedItem","boardId":boardId,"checklistItemName":checklistItemId});
       }
     },
     }];

+ 4 - 0
models/actions.js

@@ -16,6 +16,10 @@ Actions.allow({
   insert: function () {
     // add custom authentication code here
     return true;
+  },
+  remove: function () {
+    // add custom authentication code here
+    return true;
   }
 });
 

+ 6 - 0
models/checklistItems.js

@@ -44,6 +44,12 @@ ChecklistItems.mutations({
   setTitle(title) {
     return { $set: { title } };
   },
+  check(){
+    return { $set: { isFinished: true } };
+  },
+  uncheck(){
+    return { $set: { isFinished: false } };
+  },
   toggleItem() {
     return { $set: { isFinished: !this.isFinished } };
   },

+ 12 - 0
models/checklists.js

@@ -47,6 +47,18 @@ Checklists.helpers({
   isFinished() {
     return 0 !== this.itemCount() && this.itemCount() === this.finishedCount();
   },
+  checkAllItems(){
+    const checkItems = ChecklistItems.find({checklistId: this._id});
+    checkItems.forEach(function(item){
+      item.check();
+    });
+  },
+  uncheckAllItems(){
+    const checkItems = ChecklistItems.find({checklistId: this._id});
+    checkItems.forEach(function(item){
+      item.uncheck();
+    });
+  },
   itemIndex(itemId) {
     const items = self.findOne({_id : this._id}).items;
     return _.pluck(items, '_id').indexOf(itemId);

+ 2 - 0
server/notifications/email.js

@@ -39,3 +39,5 @@ Meteor.startup(() => {
     }, 30000);
   });
 });
+
+

+ 108 - 11
server/rulesHelper.js

@@ -1,19 +1,12 @@
 RulesHelper = {
 	executeRules(activity){
 		const matchingRules = this.findMatchingRules(activity);
+		console.log("Matching rules:")
 		console.log(matchingRules);
 		for(let i = 0;i< matchingRules.length;i++){
 			console.log(matchingRules[i]);
-			const actionType = matchingRules[i].getAction().actionType;
-			this.performAction(activity,actionType);
-		}
-	},
-
-	performAction(activity,actionType){
-		if(actionType == "moveCardToTop"){
-			const card = Cards.findOne({_id:activity.cardId});
-		    const minOrder = _.min(card.list().cards(card.swimlaneId).map((c) => c.sort));
-		    card.move(card.swimlaneId, card.listId, minOrder - 1);
+			const action = matchingRules[i].getAction();
+			this.performAction(activity,action);
 		}
 	},
 	findMatchingRules(activity){
@@ -39,6 +32,110 @@ RulesHelper = {
 			matchingMap[matchingFields[i]] = { $in: [activity[matchingFields[i]],"*"]};
 		}
 		return matchingMap;
-	}
+	},
+	performAction(activity,action){
+
+		console.log("Performing action - Activity");
+		console.log(activity);
+		console.log("Performing action - Action");
+		console.log(action);
+		const card = Cards.findOne({_id:activity.cardId});
+		if(action.actionType == "moveCardToTop"){
+			let listId;
+			let list;
+			if(activity.listTitle == "*"){
+				listId = card.swimlaneId;
+				list = card.list();
+			}else{
+				list = Lists.findOne({title: action.listTitle});
+				listId = list._id;
+			}
+			const minOrder = _.min(list.cards(card.swimlaneId).map((c) => c.sort));
+			card.move(card.swimlaneId, listId, minOrder - 1);
+		}
+		if(action.actionType == "moveCardToBottom"){
+			let listId;
+			let list;
+			if(activity.listTitle == "*"){
+				listId = card.swimlaneId;
+				list = card.list();
+			}else{
+				list = Lists.findOne({title: action.listTitle});
+				listId = list._id;
+			}
+			const maxOrder = _.max(list.cards(card.swimlaneId).map((c) => c.sort));
+    		card.move(card.swimlaneId, listId, maxOrder + 1);
+		}
+		if(action.actionType == "sendEmail"){
+			const emailTo = action.emailTo;
+			const emailMsg = action.emailMsg;
+			const emailSubject = action.emailSubject;
+			try {
+				Email.send({
+					to: to,
+					from: Accounts.emailTemplates.from,
+					subject: subject,
+					text,
+				});
+			} catch (e) {
+				return;
+			}
+		}
+		if(action.actionType == "archive"){
+			card.archive();
+		}
+		if(action.actionType == "unarchive"){
+			card.restore();
+		}
+		if(action.actionType == "addLabel"){
+			card.addLabel(action.labelId);
+		}
+		if(action.actionType == "removeLabel"){
+			card.removeLabel(action.labelId);
+		}
+		if(action.actionType == "addMember"){
+			const memberId = Users.findOne({username:action.memberName})._id;
+			console.log(memberId);
+			card.assignMember(memberId);
+		}
+		if(action.actionType == "removeMember"){
+			if(action.memberName == "*"){
+				console.log(card);
+				const members = card.members;
+				console.log(members);
+				for(let i = 0;i< members.length;i++){
+					card.unassignMember(members[i]);
+				}
+			}else{
+				const memberId = Users.findOne({username:action.memberName})._id;
+				card.unassignMember(memberId);
+			}
+		}
+		if(action.actionType == "checkAll"){
+			const checkList = Checklists.findOne({"title":action.checklistName,"cardId":card._id});
+			checkList.checkAllItems();
+		}
+		if(action.actionType == "uncheckAll"){
+			const checkList = Checklists.findOne({"title":action.checklistName,"cardId":card._id});
+			checkList.uncheckAllItems();
+		}
+		if(action.actionType == "checkItem"){
+			const checkList = Checklists.findOne({"title":action.checklistName,"cardId":card._id});
+			const checkItem = ChecklistItems.findOne({"title":action.checkItemName,"checkListId":checkList._id})
+			checkItem.check();
+		}
+		if(action.actionType == "uncheckItem"){
+			const checkList = Checklists.findOne({"title":action.checklistName,"cardId":card._id});
+			const checkItem = ChecklistItems.findOne({"title":action.checkItemName,"checkListId":checkList._id})
+			checkItem.uncheck();
+		}
+		if(action.actionType == "addChecklist"){
+			Checklists.insert({"title":action.checklistName,"cardId":card._id,"sort":0});
+		}
+		if(action.actionType == "removeChecklist"){
+			Checklists.remove({"title":action.checklistName,"cardId":card._id,"sort":0});
+		}
+
+	},
 
 }