Forráskód Böngészése

Refactoring rules description

Angelo Gallarello 6 éve
szülő
commit
fc73dc5bbc

+ 2 - 3
client/components/rules/actions/boardActions.js

@@ -17,7 +17,6 @@ BlazeComponent.extendComponent({
       if(actionSelected == "top"){
        const triggerId = Triggers.insert(trigger);
        const actionId = Actions.insert({actionType: "moveCardToTop","listTitle":listTitle,"boardId":boardId});
-       console.log("Action inserted");
        Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});  
      }
      if(actionSelected == "bottom"){
@@ -49,12 +48,12 @@ BlazeComponent.extendComponent({
   const actionSelected = this.find('#arch-action').value;
   if(actionSelected == "archive"){
    const triggerId = Triggers.insert(trigger);
-   const actionId = Actions.insert({actionType: "archive"});
+   const actionId = Actions.insert({actionType: "archive","boardId":boardId});
    Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});  
  }
  if(actionSelected == "unarchive"){
    const triggerId = Triggers.insert(trigger);
-   const actionId = Actions.insert({actionType: "unarchive"});
+   const actionId = Actions.insert({actionType: "unarchive","boardId":boardId});
    Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});  
  }
 },

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

@@ -5,7 +5,6 @@ BlazeComponent.extendComponent({
 
   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();

+ 2 - 3
client/components/rules/ruleDetails.jade

@@ -3,6 +3,5 @@ template(name="ruleDetails")
     h2
       i.fa.fa-magic
       | {{{_ 'r-rule-details' }}}
-
-    | trigger
-    | action
+    = trigger 
+    = action 

+ 13 - 4
client/components/rules/ruleDetails.js

@@ -1,15 +1,24 @@
 BlazeComponent.extendComponent({
   onCreated() {
     this.subscribe('allRules');
+    this.subscribe('allTriggers');
+    this.subscribe('allActions');
+
   },
 
   trigger(){
-    const rule = Rules.findOne({_id:ruleId});
-    return Triggers.findOne({_id:rule.triggerId});
+    const ruleId = this.data().ruleId;
+    const rule = Rules.findOne({_id: ruleId.get()});
+    const trigger = Triggers.findOne({_id:rule.triggerId});
+    console.log(trigger);
+    return trigger.description();
   },
   action(){
-    const rule = Rules.findOne({_id:ruleId});
-    return Triggers.findOne({_id:rule.actionId});
+    const ruleId = this.data().ruleId;
+    const rule = Rules.findOne({_id: ruleId.get()});
+    const action = Actions.findOne({_id:rule.actionId});
+    console.log(action);
+    return action.description();
   },
 
   events() {

+ 1 - 1
client/components/rules/rulesList.jade

@@ -10,7 +10,7 @@ template(name="rulesList")
           p 
             = title
           div.rules-btns-group
-            button
+            button.js-goto-details
               i.fa.fa-eye
               | {{{_ 'r-view-rule'}}}
             if currentUser.isAdmin

+ 3 - 1
client/components/rules/rulesMain.jade

@@ -4,4 +4,6 @@ template(name="rulesMain")
   if($eq rulesCurrentTab.get 'trigger')
     +rulesTriggers(ruleName=ruleName triggerVar=triggerVar)
   if($eq rulesCurrentTab.get 'action')
-    +rulesActions(ruleName=ruleName triggerVar=triggerVar)
+    +rulesActions(ruleName=ruleName triggerVar=triggerVar)
+  if($eq rulesCurrentTab.get 'ruleDetails')
+    +ruleDetails(ruleId=ruleId)

+ 2 - 0
client/components/rules/rulesMain.js

@@ -46,6 +46,8 @@ BlazeComponent.extendComponent({
     },
     'click .js-goto-details'(event) {
       event.preventDefault();
+      const rule = this.currentData();
+      this.ruleId.set(rule._id)
       this.setRuleDetails();
     },
 

+ 2 - 2
client/components/rules/triggers/boardTriggers.jade

@@ -6,7 +6,7 @@ template(name="boardTriggers")
       div.trigger-dropdown
         select(id="gen-action")
           option(value="created") {{{_'r-added-to'}}}
-          option(value="removed") {{{_'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
@@ -19,7 +19,7 @@ template(name="boardTriggers")
       div.trigger-dropdown
         select(id="create-action")
           option(value="created") {{{_'r-added-to'}}}
-          option(value="removed") {{{_'r-added-to'}}}
+          option(value="removed") {{{_'r-removed-from'}}}
       div.trigger-text 
         | {{{_'r-list'}}}
       div.trigger-dropdown

+ 15 - 10
client/components/rules/triggers/boardTriggers.js

@@ -6,51 +6,56 @@ BlazeComponent.extendComponent({
   events() {
     return [
     {'click .js-add-gen-trigger'(event) {
-
+      const desc = Utils.getTriggerActionDesc(event,this);
       let datas = this.data();
       const actionSelected = this.find('#gen-action').value;
       const boardId = Session.get('currentBoard')
       if(actionSelected == "created"){
-        datas.triggerVar.set({activityType: "createCard","boardId":boardId,"listName":"*"});
+        datas.triggerVar.set({activityType: "createCard","boardId":boardId,"listName":"*","desc":desc});
       }
       if(actionSelected == "removed"){
-        datas.triggerVar.set({activityType: "removeCard","boardId":boardId});
+        datas.triggerVar.set({activityType: "removeCard","boardId":boardId,"desc":desc});
       }
+      
+
     },
     'click .js-add-create-trigger'(event) {
-
+      const desc = Utils.getTriggerActionDesc(event,this);
       let 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":boardId,"listName":listName});
+        datas.triggerVar.set({activityType: "createCard","boardId":boardId,"listName":listName,"desc":desc});
       }
       if(actionSelected == "removed"){
-        datas.triggerVar.set({activityType: "removeCard","boardId":boardId,"listName":listName});
+        datas.triggerVar.set({activityType: "removeCard","boardId":boardId,"listName":listName,"desc":desc});
       }
     },
     'click .js-add-moved-trigger'(event) {
       let 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":boardId,"listName":listName,"oldListName":"*"});
+        datas.triggerVar.set({activityType: "moveCard","boardId":boardId,"listName":listName,"oldListName":"*","desc":desc});
       }
       if(actionSelected == "moved-from"){
-        datas.triggerVar.set({activityType: "moveCard","boardId":boardId,"listName":"*","oldListName":listName});
+        datas.triggerVar.set({activityType: "moveCard","boardId":boardId,"listName":"*","oldListName":listName,"desc":desc});
       }
     },
     'click .js-add-arc-trigger'(event) {
       let 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":boardId});
+        datas.triggerVar.set({activityType: "archivedCard","boardId":boardId,"desc":desc});
       }
       if(actionSelected == "unarchived"){
-        datas.triggerVar.set({activityType: "restoredCard","boardId":boardId});
+        datas.triggerVar.set({activityType: "restoredCard","boardId":boardId,"desc":desc});
       }
     }
 

+ 1 - 1
client/components/rules/triggers/cardTriggers.jade

@@ -22,7 +22,7 @@ template(name="cardTriggers")
             option(value="#{_id}")
               = name
       div.trigger-text 
-        | is
+        | {{{_'r-is'}}}
       div.trigger-dropdown
         select(id="spec-label-action")
           option(value="added") {{{_'r-added-to'}}}

+ 36 - 15
client/lib/utils.js

@@ -40,14 +40,14 @@ Utils = {
       base = 0;
       increment = 1;
     // If we drop the card in the first position
-    } else if (!prevData) {
-      base = nextData.sort - 1;
-      increment = -1;
+  } else if (!prevData) {
+    base = nextData.sort - 1;
+    increment = -1;
     // If we drop the card in the last position
-    } else if (!nextData) {
-      base = prevData.sort + 1;
-      increment = 1;
-    }
+  } else if (!nextData) {
+    base = prevData.sort + 1;
+    increment = 1;
+  }
     // In the general case take the average of the previous and next element
     // sort indexes.
     else {
@@ -72,14 +72,14 @@ Utils = {
       base = 0;
       increment = 1;
     // If we drop the card in the first position
-    } else if (!prevCardDomElement) {
-      base = Blaze.getData(nextCardDomElement).sort - 1;
-      increment = -1;
+  } else if (!prevCardDomElement) {
+    base = Blaze.getData(nextCardDomElement).sort - 1;
+    increment = -1;
     // If we drop the card in the last position
-    } else if (!nextCardDomElement) {
-      base = Blaze.getData(prevCardDomElement).sort + 1;
-      increment = 1;
-    }
+  } else if (!nextCardDomElement) {
+    base = Blaze.getData(prevCardDomElement).sort + 1;
+    increment = 1;
+  }
     // In the general case take the average of the previous and next element
     // sort indexes.
     else {
@@ -121,7 +121,7 @@ Utils = {
     return Math.sqrt(
       Math.pow(touchA.screenX - touchB.screenX, 2) +
       Math.pow(touchA.screenY - touchB.screenY, 2)
-    );
+      );
   },
 
   enableClickOnTouch(selector) {
@@ -144,6 +144,27 @@ Utils = {
       }
     });
   },
+
+  getTriggerActionDesc(event,tempInstance){
+    const jqueryEl = tempInstance.$(event.currentTarget.parentNode);
+    const triggerEls = jqueryEl.find(".trigger-content").children();
+    let finalString = "";
+    for(let i = 0;i< triggerEls.length;i++){
+      const element = tempInstance.$(triggerEls[i]);
+      if(element.hasClass("trigger-text")){
+        finalString += element.text();
+      }else if(element.find("select").length > 0){
+        finalString += element.find("select option:selected").text();
+      }else if(element.find("input").length > 0){
+        finalString += element.find("input").val();
+      }
+      // Add space
+      if(i != length - 1){
+        finalString += " ";
+      }
+    }
+    return finalString.toLowerCase();
+  },
 };
 
 // A simple tracker dependency that we invalidate every time the window is

+ 25 - 1
i18n/en.i18n.json

@@ -575,7 +575,31 @@
     "r-send-email": "Send an email",
     "r-to": "to",
     "r-subject": "subject",
-    "r-rule-details": "Rule details"
+    "r-rule-details": "Rule details",
+    "r-d-move-to-top-gen": "Move card to top of its list",
+    "r-d-move-to-top-spec": "Move card to top of list",
+    "r-d-move-to-bottom-gen": "Move card to bottom of its list",
+    "r-d-move-to-bottom-spec": "Move card to bottom of list",
+    "r-d-send-email": "Send email",
+    "r-d-send-email-to": "to",
+    "r-d-send-email-subject": "subject",
+    "r-d-send-email-message": "message",
+    "r-d-archive": "Archive the card",
+    "r-d-unarchive": "Unarchive the card",
+    "r-d-add-label": "Add label",
+    "r-d-remove-label": "Remove label",
+    "r-d-add-member": "Add member",
+    "r-d-remove-member": "Remove member",
+    "r-d-remove-all-member": "Remove all member",
+    "r-d-check-all": "Check all item of list",
+    "r-d-uncheck-all": "Uncheck all item of list",
+    "r-d-check-one": "Check item",
+    "r-d-uncheck-one": "Uncheck item",
+    "r-d-check-of-list": "of checklist",
+    "r-d-add-checklist": "Add checklist",
+    "r-d-remove-checklist": "Remove checklist"
+
+
 
 
 

+ 94 - 9
models/actions.js

@@ -2,15 +2,100 @@ Actions = new Mongo.Collection('actions');
 
 
 Actions.allow({
-  insert(userId, doc) {
-    return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
-  },
-  update(userId, doc) {
-    return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
-  },
-  remove(userId, doc) {
-    return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
-  }
+	insert(userId, doc) {
+		return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
+	},
+	update(userId, doc) {
+		return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
+	},
+	remove(userId, doc) {
+		return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
+	}
+});
+
+
+Actions.helpers({
+	description() {
+		if(this.actionType == "moveCardToTop"){
+			if(this.listTitle == "*"){
+				return TAPi18n.__('r-d-move-to-top-gen');
+			}else{
+				return TAPi18n.__('r-d-move-to-top-spec') + " " + this.listTitle;
+			}
+		}
+		if(this.actionType == "moveCardToBottom"){
+			if(this.listTitle == "*"){
+				return TAPi18n.__('r-d-move-to-bottom-gen');
+			}else{
+				return TAPi18n.__('r-d-move-to-bottom-spec') + " " + this.listTitle;
+			}
+		}
+		if(this.actionType == "sendEmail"){
+			const to = " " + TAPi18n.__('r-d-send-email-to') + ": " + this.emailTo + ", ";
+			const subject = TAPi18n.__('r-d-send-email-subject') + ": " + this.emailSubject + ", ";
+			const message = TAPi18n.__('r-d-send-email-message') + ": " + this.emailMsg;
+			const total = TAPi18n.__('r-d-send-email') + to + subject + message;
+			return total;
+		}
+		if(this.actionType == "archive"){
+			return TAPi18n.__('r-d-archive');
+		}
+		if(this.actionType == "unarchive"){
+			return TAPi18n.__('r-d-unarchive');
+		}
+		if(this.actionType == "addLabel"){
+			const board = Boards.findOne(Session.get('currentBoard'));
+			const label = board.getLabelById(this.labelId);
+			let name;
+			if(label.name == "" || label.name == undefined){
+        		name = label.color.toUpperCase();
+      		}else{
+      			name = label.name;
+      		}
+    		
+			return TAPi18n.__('r-d-add-label') + ": "+name;
+		}
+		if(this.actionType == "removeLabel"){
+			const board = Boards.findOne(Session.get('currentBoard'));
+			const label = board.getLabelById(this.labelId);
+			let name;
+			if(label.name == "" || label.name == undefined){
+        		name = label.color.toUpperCase();
+      		}else{
+      			name = label.name;
+      		}
+			return TAPi18n.__('r-d-remove-label') + ": " + name;
+		}
+		if(this.actionType == "addMember"){
+			return TAPi18n.__('r-d-add-member') + ": " + this.memberName;
+		}
+		if(this.actionType == "removeMember"){
+			if(this.memberName == "*"){
+				return TAPi18n.__('r-d-remove-all-member');
+			}
+			return TAPi18n.__('r-d-remove-member') + ": "+ this.memberName;
+		}
+		if(this.actionType == "checkAll"){
+			return TAPi18n.__('r-d-check-all') + ": " + this.checklistName;
+		}
+		if(this.actionType == "uncheckAll"){
+			return TAPi18n.__('r-d-uncheck-all') + ": "+ this.checklistName;
+		}
+		if(this.actionType == "checkItem"){
+			return TAPi18n.__('r-d-check-one') + ": "+ this.checkItemName + " " + TAPi18n.__('r-d-check-of-list') + ": " +this.checklistName;
+		}
+		if(this.actionType == "uncheckItem"){
+			return TAPi18n.__('r-d-check-one') + ": "+ this.checkItemName + " " + TAPi18n.__('r-d-check-of-list') + ": " +this.checklistName;
+		}
+		if(this.actionType == "addChecklist"){
+			return TAPi18n.__('r-d-add-checklist') + ": "+ this.checklistName;
+		}
+		if(this.actionType == "removeChecklist"){
+			return TAPi18n.__('r-d-remove-checklist') + ": "+ this.checklistName;
+		}
+
+	 return "Ops not trigger description";
+	}
 });
 
 

+ 70 - 18
models/triggers.js

@@ -24,28 +24,80 @@ Triggers.allow({
 Triggers.helpers({
 
 
-  getRule(){
-    return Rules.findOne({triggerId:this._id});
-  },
+  description(){
+    if(this.activityType == "createCard"){
+      if(this.listName == "*"){
+        return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-added-to').toLowerCase() + " " + TAPi18n.__('r-the-board');
+      }else{
+        return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-added-to').toLowerCase() + " " + TAPi18n.__('r-list') + " " +this.listName;
+      }
+    }
+    if(this.activityType == "removeCard"){
+      if(this.listName == "*"){
+        return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-removed-from') + " " +  TAPi18n.__('r-the-board');
+      }else{
+        return TAPi18n.__('r-when-a-card-is') + " " +  TAPi18n.__('r-removed-from') + " " +  TAPi18n.__('r-list') + " " +this.listName;
+      }
+    }
+    if(this.activityType == "moveCard"){
+      if(this.listName = "*"){
+        return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-moved-from') + " " + this.oldListName;
+      }else{
+        return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-moved-to') + " " + this.listName;
+      }
+      
+    }
+    if(this.activityType = "archivedCard"){
+     return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-archived');
+   }
+   if(this.activityType = "restoredCard"){
+     return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-unarchived');
+   }
+   if(this.activityType = "addedLabel"){
+    if(this.labelId == "*"){
+      return TAPi18n.__('r-when-a-label-is') + " " + TAPi18n.__('r-added-to') + " " + TAPi18n.__('r-a-card');
+    }else{
+      const board = Boards.findOne(Session.get('currentBoard'));
+      const label = board.getLabelById(this.labelId);
+      let name;
+      if(label.name == "" || label.name == undefined){
+        name = label.color.toUpperCase();
+      }else{
+        name = label.name;
+      }
+    }
+  }
+  if(this.activityType = "restoredCard"){
+   return TAPi18n.__('r-when-a-card-is') + " " + TAPi18n.__('r-unarchived');
+ }
 
-  fromList() {
-    return Lists.findOne(this.fromId);
-  },
 
-  toList() {
-    return Lists.findOne(this.toId);
-  },
 
-  findList(title) {
-    return Lists.findOne({title:title});
-  },
+ return "No description found";
+},
+
+getRule(){
+  return Rules.findOne({triggerId:this._id});
+},
+
+fromList() {
+  return Lists.findOne(this.fromId);
+},
+
+toList() {
+  return Lists.findOne(this.toId);
+},
+
+findList(title) {
+  return Lists.findOne({title:title});
+},
 
-  labels() {
-    const boardLabels = this.board().labels;
-    const cardLabels = _.filter(boardLabels, (label) => {
-      return _.contains(this.labelIds, label._id);
-    });
-    return cardLabels;
+labels() {
+  const boardLabels = this.board().labels;
+  const cardLabels = _.filter(boardLabels, (label) => {
+    return _.contains(this.labelIds, label._id);
+  });
+  return cardLabels;
 }});
 
 

+ 4 - 0
server/publications/rules.js

@@ -12,3 +12,7 @@ Meteor.publish('allRules', () => {
 Meteor.publish('allTriggers', () => {
   return Triggers.find({});
 });
+
+Meteor.publish('allActions', () => {
+  return Actions.find({});
+});