Browse Source

Almost full circle

Angelo Gallarello 6 years ago
parent
commit
9b0eb0a9f1

+ 1 - 1
client/components/boards/boardHeader.js

@@ -109,7 +109,7 @@ BlazeComponent.extendComponent({
         Sidebar.setView('search');
       },
       'click .js-open-rules-view'() {
-        Modal.open('rules');
+        Modal.open('rulesMain');
       },
       'click .js-multiselection-activate'() {
         const currentCard = Session.get('currentCard');

+ 1 - 0
client/components/forms/forms.styl

@@ -1,5 +1,6 @@
 @import 'nib'
 
+select,
 textarea,
 input:not([type=file]),
 button

BIN
client/components/rules/.DS_Store


+ 22 - 0
client/components/rules/actions/boardActions.jade

@@ -0,0 +1,22 @@
+template(name="boardActions")
+  div.trigger-item
+    div.trigger-content
+      div.trigger-text 
+        | Move card to 
+      div.trigger-dropdown
+        select(id="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
+      i.fa.fa-plus
+
+
+   
+  
+
+
+

+ 32 - 0
client/components/rules/actions/boardActions.js

@@ -0,0 +1,32 @@
+BlazeComponent.extendComponent({
+  onCreated() {
+
+  },
+
+
+
+  events() {
+    return [
+    {'click .js-add-move-action'(event) {
+
+      console.log(this.data());
+      console.log(this.data().triggerIdVar.get());
+      const ruleName = this.data().ruleName.get();
+      const triggerId = this.data().triggerIdVar.get();
+      const actionSelected = this.find('#action').value;
+
+      if(actionSelected == "top"){
+       Actions.insert({actionType: "moveCardToTop"},function(err,id){
+        Rules.insert({title: ruleName, triggerId: triggerId, actionId: id});  
+      });
+     }
+     if(actionSelected == "bottom"){
+       Actions.insert({actionType: "moveCardToBottom"},function(err,id){
+       Rules.insert({title: ruleName, triggerId: triggerId, actionId: id});  
+      });
+     }
+   },
+ }];
+},
+
+}).register('boardActions');

+ 0 - 65
client/components/rules/rules.jade

@@ -1,65 +0,0 @@
-template(name="rules")
-  if rulesListVar.get
-    +rulesList
-  else if rulesTriggerVar.get
-    +rulesTrigger
-
-template(name="rulesList")
-  .rules
-    h2
-      i.fa.fa-cutlery
-      | Project rules
-
-    ul.rules-list
-      each rules
-        li.rules-lists-item
-          p 
-            = title
-          div.rules-btns-group
-            button
-              i.fa.fa-eye
-              | View rule
-            button.js-delete-rule
-              i.fa.fa-trash-o
-              | Delete rule
-      else
-        li.no-items-message No rules
-    div.rules-add
-      button.js-add-rule
-        i.fa.fa-plus
-        | Add rule
-      input(type=text,placeholder="New rule name",id="ruleTitle")
-
-template(name="rulesTrigger")
-  h2
-    i.fa.fa-cutlery
-    | Rule "#{ruleName.get}"" - Add triggers
-  .triggers-content
-    .triggers-body
-      .triggers-side-menu
-        ul
-          li.active
-            i.fa.fa-columns
-          li
-            i.fa.fa-sticky-note
-          li
-            i.fa.fa-check
-      .triggers-main-body
-        +boardTriggers
-
-template(name="boardTriggers")
-  div.trigger-item
-    div.trigger-content
-      div.trigger-text 
-        | When a card is
-      div.trigger-dropdown
-        select
-    div.trigger-button
-      i.fa.fa-plus
-
-
-   
-  
-
-
-

+ 0 - 47
client/components/rules/rules.js

@@ -1,47 +0,0 @@
-BlazeComponent.extendComponent({
-  onCreated() {
-    this.rulesListVar = new ReactiveVar(true);
-    this.rulesTriggerVar = new ReactiveVar(false);
-    this.ruleName = new ReactiveVar("");
-  },
-
-  setTrigger() {
-    this.rulesListVar.set(false);
-    this.rulesTriggerVar.set(true);
-  },
-
-  events() {
-    return [{'click .js-delete-rule'(event) {
-          const rule = this.currentData();
-          Rules.remove(rule._id);
-          
-        },
-        'click .js-add-rule'(event) {
-
-          event.preventDefault();
-          const ruleTitle = this.find('#ruleTitle').value;
-          Rules.insert({title: ruleTitle});
-          this.find('#ruleTitle').value = "";
-          this.ruleName.set(ruleTitle)
-          this.setTrigger();
-
-        }}];
-  },
-
-}).register('rules');
-
-
-BlazeComponent.extendComponent({
-  onCreated() {
-    this.subscribe('allRules');
-  },
-
-  rules() {
-    return Rules.find({});
-  },
-  events() {
-    return [{}];
-      },
-}).register('rulesList');
-
-

+ 21 - 12
client/components/rules/rules.styl

@@ -49,10 +49,11 @@
     height 100%
 
     .triggers-side-menu
-      background-color: #f7f7f7;
-      border: 1px solid #f0f0f0;
-      border-radius: 4px;
-      box-shadow: inset -1px -1px 3px rgba(0,0,0,.05);
+      background-color: #f7f7f7
+      border: 1px solid #f0f0f0
+      border-radius: 4px
+      height: intrinsic
+      box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
 
       ul
 
@@ -93,7 +94,8 @@
       .trigger-item
         overflow:auto
         padding:10px
-        height:30px
+        height:40px
+        margin-bottom:5px
         border-radius: 3px
         position: relative
         background-color: white
@@ -111,24 +113,31 @@
                 width:100px
                 height:30px
                 margin:0px
+                margin-left:5px
+              input
+                display: inline-block
+                width: 80px;
+                margin: 0;
         .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);
+          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%;
+            position: absolute
+            top: 50%
+            left: 50%
             box-shadow: none
-            transform: translate(-50%,-50%);
+            transform: translate(-50%,-50%)
+          &:hover, &.is-active
+            box-shadow: 0 0 0 2px darken(white, 60%) inset
               
 
 

+ 17 - 0
client/components/rules/rulesActions.jade

@@ -0,0 +1,17 @@
+template(name="rulesActions")
+  h2
+    i.fa.fa-cutlery
+    | Rule "#{data.ruleName}" - Add action
+  .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 showBoardActions.get
+          +boardActions(ruleName=data.ruleName triggerIdVar=data.triggerIdVar)

+ 52 - 0
client/components/rules/rulesActions.js

@@ -0,0 +1,52 @@
+BlazeComponent.extendComponent({
+  onCreated() {
+    this.showBoardActions = new ReactiveVar(true);
+    this.showCardActions = new ReactiveVar(false);
+    this.showChecklistAction = new ReactiveVar(false);
+  },
+
+
+  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');
+  },
+
+  rules() {
+    return Rules.find({});
+  },
+
+  name(){
+    console.log(this.data());
+  },
+  events() {
+    return [{'click .js-set-board-triggers'(event) {
+      this.setBoardTriggers();
+    },
+    'click .js-set-card-triggers'(event) {
+      this.setCardTriggers();
+    },
+    'click .js-set-checklist-triggers'(event) {
+      this.setChecklistTriggers();
+    },}];
+  },
+}).register('rulesActions');

+ 25 - 0
client/components/rules/rulesList.jade

@@ -0,0 +1,25 @@
+template(name="rulesList")
+  .rules
+    h2
+      i.fa.fa-cutlery
+      | Project rules
+
+    ul.rules-list
+      each rules
+        li.rules-lists-item
+          p 
+            = title
+          div.rules-btns-group
+            button
+              i.fa.fa-eye
+              | View rule
+            button.js-delete-rule
+              i.fa.fa-trash-o
+              | Delete rule
+      else
+        li.no-items-message No rules
+    div.rules-add
+      button.js-goto-trigger
+        i.fa.fa-plus
+        | Add rule
+      input(type=text,placeholder="New rule name",id="ruleTitle")

+ 12 - 0
client/components/rules/rulesList.js

@@ -0,0 +1,12 @@
+BlazeComponent.extendComponent({
+  onCreated() {
+    this.subscribe('allRules');
+  },
+
+  rules() {
+    return Rules.find({});
+  },
+  events() {
+    return [{}];
+  },
+}).register('rulesList');

+ 7 - 0
client/components/rules/rulesMain.jade

@@ -0,0 +1,7 @@
+template(name="rulesMain")
+  if rulesListVar.get
+    +rulesList
+  else if rulesTriggerVar.get
+    +rulesTriggers(ruleName=ruleName triggerIdVar=triggerIdVar)
+  else if rulesActionVar.get
+    +rulesActions(ruleName=ruleName triggerIdVar=triggerIdVar)

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

@@ -0,0 +1,62 @@
+BlazeComponent.extendComponent({
+  onCreated() {
+    this.rulesListVar = new ReactiveVar(true);
+    this.rulesTriggerVar = new ReactiveVar(false);
+    this.rulesActionVar = new ReactiveVar(false);
+    this.ruleName = new ReactiveVar("");
+    this.triggerIdVar = new ReactiveVar("");
+  },
+
+  setTrigger() {
+    this.rulesListVar.set(false);
+    this.rulesTriggerVar.set(true);
+    this.rulesActionVar.set(false);
+  },
+
+  setRulesList() {
+    this.rulesListVar.set(true);
+    this.rulesTriggerVar.set(false);
+    this.rulesActionVar.set(false);
+  },
+
+  setAction() {
+    this.rulesListVar.set(false);
+    this.rulesTriggerVar.set(false);
+    this.rulesActionVar.set(true);
+  },
+
+  events() {
+    return [{'click .js-delete-rule'(event) {
+      const rule = this.currentData();
+      Rules.remove(rule._id);
+
+    },
+    'click .js-goto-trigger'(event) {
+      event.preventDefault();
+      const ruleTitle = this.find('#ruleTitle').value;
+      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();
+    },
+
+
+  }];
+  },
+
+}).register('rulesMain');
+
+
+
+
+
+
+
+

+ 21 - 0
client/components/rules/rulesTriggers.jade

@@ -0,0 +1,21 @@
+template(name="rulesTriggers")
+  h2
+    i.fa.fa-cutlery
+    | Rule "#{data.ruleName}" - 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

+ 52 - 0
client/components/rules/rulesTriggers.js

@@ -0,0 +1,52 @@
+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'(event) {
+      this.setBoardTriggers();
+    },
+    'click .js-set-card-triggers'(event) {
+      this.setCardTriggers();
+    },
+    'click .js-set-checklist-triggers'(event) {
+      this.setChecklistTriggers();
+    },}];
+  },
+}).register('rulesTriggers');

+ 45 - 0
client/components/rules/triggers/boardTriggers.jade

@@ -0,0 +1,45 @@
+template(name="boardTriggers")
+  div.trigger-item
+    div.trigger-content
+      div.trigger-text 
+        | When a card is
+      div.trigger-dropdown
+        select(id="action")
+          option(value="created") Added to
+          option(value="removed") Removed from
+      div.trigger-text 
+        | 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 
+        | When a card is
+      div.trigger-dropdown
+        select
+          option Moved to
+      div.trigger-text 
+        | to list
+      div.trigger-dropdown
+        input(type=text,placeholder="List Name")  
+    div.trigger-button.js-add-spec-trigger.js-goto-action
+      i.fa.fa-plus
+
+  div.trigger-item
+    div.trigger-content
+      div.trigger-text 
+        | When a card is
+      div.trigger-dropdown
+        select
+          option Archived
+          option Unarchived
+    div.trigger-button.js-add-arc-trigger.js-goto-action
+      i.fa.fa-plus
+
+
+   
+  
+
+
+

+ 28 - 0
client/components/rules/triggers/boardTriggers.js

@@ -0,0 +1,28 @@
+BlazeComponent.extendComponent({
+  onCreated() {
+
+  },
+
+  events() {
+    return [
+    {'click .js-add-gen-trigger'(event) {
+
+      let datas = this.data();
+      const actionSelected = this.find('#action').value;
+      const boardId = Session.get('currentBoard')
+      if(actionSelected == "created"){
+        Triggers.insert({activityType: "createCard","boardId":boardId},function(error,id){
+          datas.triggerIdVar.set(id);
+        });
+      }
+      if(actionSelected == "removed"){
+        Triggers.insert({activityType: "removeCard","boardId":boardId},function(error,id){
+          datas.triggerIdVar.set(id);
+        });
+      }
+
+    },
+    }];
+  },
+
+}).register('boardTriggers');

+ 10 - 0
client/components/rules/triggers/cardTriggers.jade

@@ -0,0 +1,10 @@
+template(name="cardTriggers")
+  div.trigger-item
+    div.trigger-content
+      div.trigger-text 
+        | When a label is
+      div.trigger-dropdown
+        select
+          option Moved to
+    div.trigger-button
+      i.fa.fa-plus

+ 10 - 0
client/components/rules/triggers/checklistTriggers.jade

@@ -0,0 +1,10 @@
+template(name="checklistTriggers")
+  div.trigger-item
+    div.trigger-content
+      div.trigger-text 
+        | When a check is
+      div.trigger-dropdown
+        select
+          option Checked
+    div.trigger-button
+      i.fa.fa-plus

+ 62 - 0
models/actions.js

@@ -0,0 +1,62 @@
+Actions = new Mongo.Collection('actions');
+
+
+
+Actions.mutations({
+  rename(description) {
+    return { $set: { description } };
+  },
+});
+
+Actions.allow({
+  update: function () {
+    // add custom authentication code here
+    return true;
+  },
+  insert: function () {
+    // add custom authentication code here
+    return true;
+  }
+});
+
+
+Actions.helpers({
+  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;
+  }});
+
+
+
+if (Meteor.isServer) {
+  Meteor.startup(() => {
+    const rules = Triggers.findOne({});
+    if(!rules){
+       Actions.insert({actionType: "moveCardToTop"});
+    }
+  });
+}
+
+
+
+
+
+
+
+
+

+ 11 - 0
models/activities.js

@@ -56,6 +56,17 @@ Activities.before.insert((userId, doc) => {
   doc.createdAt = new Date();
 });
 
+
+
+Activities.after.insert((userId, doc) => {
+   const activity = Activities._transform(doc);
+   const matchedTriggers = Triggers.find(activity);
+   if(matchedTriggers.count() > 0){
+     const card = activity.card();
+     Cards.direct.update({_id: card._id},{$set: {title: "ciaooo"}});
+   }
+});
+
 if (Meteor.isServer) {
   // For efficiency create indexes on the date of creation, and on the date of
   // creation in conjunction with the card or board id, as corresponding views

+ 0 - 12
models/rules.js

@@ -39,15 +39,3 @@ Rules.allow({
   },
 });
 
-
-
-
-if (Meteor.isServer) {
-  Meteor.startup(() => {
-    const rules = Rules.findOne({});
-    if(!rules){
-      Rules.insert({title: "regola1", description: "bella"});
-      Rules.insert({title: "regola2", description: "bella2"});
-    }
-  });
-}

+ 1 - 28
models/triggers.js

@@ -39,34 +39,7 @@ Triggers.helpers({
       return _.contains(this.labelIds, label._id);
     });
     return cardLabels;
-  }});
-
-
-
-if (Meteor.isServer) {
-  Meteor.startup(() => {
-    const rules = Triggers.findOne({});
-    if(!rules){
-       Triggers.insert({group: "cards", activityType: "moveCard","fromId":-1,"toId":-1 });
-    }
-  });
-}
-
-
-
-  Activities.after.insert((userId, doc) => {
-  		const activity = Activities._transform(doc);
-  		const matchedTriggers = Triggers.find({activityType: activity.activityType,fromId:activity.oldListId,toId:activity.listId})
-  		if(matchedTriggers.count() > 0){
-	  		const card = activity.card();
-	  		const oldTitle = card.title;
-	  		const fromListTitle = activity.oldList().title;
-			Cards.direct.update({_id: card._id, listId: card.listId, boardId: card.boardId, archived: false},
-	        {$set: {title: "[From "+fromListTitle +"] "+ oldTitle}});
-  		}
-  });
-
-
+}});