mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 23:40:13 +01:00
Almost full circle
This commit is contained in:
parent
93cc7f0232
commit
9b0eb0a9f1
24 changed files with 492 additions and 165 deletions
|
|
@ -109,7 +109,7 @@ BlazeComponent.extendComponent({
|
||||||
Sidebar.setView('search');
|
Sidebar.setView('search');
|
||||||
},
|
},
|
||||||
'click .js-open-rules-view'() {
|
'click .js-open-rules-view'() {
|
||||||
Modal.open('rules');
|
Modal.open('rulesMain');
|
||||||
},
|
},
|
||||||
'click .js-multiselection-activate'() {
|
'click .js-multiselection-activate'() {
|
||||||
const currentCard = Session.get('currentCard');
|
const currentCard = Session.get('currentCard');
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
@import 'nib'
|
@import 'nib'
|
||||||
|
|
||||||
|
select,
|
||||||
textarea,
|
textarea,
|
||||||
input:not([type=file]),
|
input:not([type=file]),
|
||||||
button
|
button
|
||||||
|
|
|
||||||
BIN
client/components/rules/.DS_Store
vendored
Normal file
BIN
client/components/rules/.DS_Store
vendored
Normal file
Binary file not shown.
22
client/components/rules/actions/boardActions.jade
Normal file
22
client/components/rules/actions/boardActions.jade
Normal file
|
|
@ -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
client/components/rules/actions/boardActions.js
Normal file
32
client/components/rules/actions/boardActions.js
Normal file
|
|
@ -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');
|
||||||
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -49,10 +49,11 @@
|
||||||
height 100%
|
height 100%
|
||||||
|
|
||||||
.triggers-side-menu
|
.triggers-side-menu
|
||||||
background-color: #f7f7f7;
|
background-color: #f7f7f7
|
||||||
border: 1px solid #f0f0f0;
|
border: 1px solid #f0f0f0
|
||||||
border-radius: 4px;
|
border-radius: 4px
|
||||||
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05);
|
height: intrinsic
|
||||||
|
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
|
||||||
|
|
||||||
ul
|
ul
|
||||||
|
|
||||||
|
|
@ -93,7 +94,8 @@
|
||||||
.trigger-item
|
.trigger-item
|
||||||
overflow:auto
|
overflow:auto
|
||||||
padding:10px
|
padding:10px
|
||||||
height:30px
|
height:40px
|
||||||
|
margin-bottom:5px
|
||||||
border-radius: 3px
|
border-radius: 3px
|
||||||
position: relative
|
position: relative
|
||||||
background-color: white
|
background-color: white
|
||||||
|
|
@ -111,24 +113,31 @@
|
||||||
width:100px
|
width:100px
|
||||||
height:30px
|
height:30px
|
||||||
margin:0px
|
margin:0px
|
||||||
|
margin-left:5px
|
||||||
|
input
|
||||||
|
display: inline-block
|
||||||
|
width: 80px;
|
||||||
|
margin: 0;
|
||||||
.trigger-button
|
.trigger-button
|
||||||
position:absolute
|
position:absolute
|
||||||
top:50%
|
top:50%
|
||||||
transform: translateY(-50%)
|
transform: translateY(-50%)
|
||||||
width:30px
|
width:30px
|
||||||
height:30px
|
height:30px
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee
|
||||||
border-radius: 4px;
|
border-radius: 4px
|
||||||
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05);
|
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
|
||||||
text-align:center
|
text-align:center
|
||||||
font-size: 20px
|
font-size: 20px
|
||||||
right:10px
|
right:10px
|
||||||
i
|
i
|
||||||
position: absolute;
|
position: absolute
|
||||||
top: 50%;
|
top: 50%
|
||||||
left: 50%;
|
left: 50%
|
||||||
box-shadow: none
|
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
client/components/rules/rulesActions.jade
Normal file
17
client/components/rules/rulesActions.jade
Normal file
|
|
@ -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
client/components/rules/rulesActions.js
Normal file
52
client/components/rules/rulesActions.js
Normal file
|
|
@ -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
client/components/rules/rulesList.jade
Normal file
25
client/components/rules/rulesList.jade
Normal file
|
|
@ -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
client/components/rules/rulesList.js
Normal file
12
client/components/rules/rulesList.js
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
BlazeComponent.extendComponent({
|
||||||
|
onCreated() {
|
||||||
|
this.subscribe('allRules');
|
||||||
|
},
|
||||||
|
|
||||||
|
rules() {
|
||||||
|
return Rules.find({});
|
||||||
|
},
|
||||||
|
events() {
|
||||||
|
return [{}];
|
||||||
|
},
|
||||||
|
}).register('rulesList');
|
||||||
7
client/components/rules/rulesMain.jade
Normal file
7
client/components/rules/rulesMain.jade
Normal file
|
|
@ -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
client/components/rules/rulesMain.js
Normal file
62
client/components/rules/rulesMain.js
Normal file
|
|
@ -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
client/components/rules/rulesTriggers.jade
Normal file
21
client/components/rules/rulesTriggers.jade
Normal file
|
|
@ -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
client/components/rules/rulesTriggers.js
Normal file
52
client/components/rules/rulesTriggers.js
Normal file
|
|
@ -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
client/components/rules/triggers/boardTriggers.jade
Normal file
45
client/components/rules/triggers/boardTriggers.jade
Normal file
|
|
@ -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
client/components/rules/triggers/boardTriggers.js
Normal file
28
client/components/rules/triggers/boardTriggers.js
Normal file
|
|
@ -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
client/components/rules/triggers/cardTriggers.jade
Normal file
10
client/components/rules/triggers/cardTriggers.jade
Normal file
|
|
@ -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
client/components/rules/triggers/checklistTriggers.jade
Normal file
10
client/components/rules/triggers/checklistTriggers.jade
Normal file
|
|
@ -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
models/actions.js
Normal file
62
models/actions.js
Normal file
|
|
@ -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"});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -56,6 +56,17 @@ Activities.before.insert((userId, doc) => {
|
||||||
doc.createdAt = new Date();
|
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) {
|
if (Meteor.isServer) {
|
||||||
// For efficiency create indexes on the date of creation, and on the date of
|
// 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
|
// creation in conjunction with the card or board id, as corresponding views
|
||||||
|
|
|
||||||
|
|
@ -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"});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -39,34 +39,7 @@ Triggers.helpers({
|
||||||
return _.contains(this.labelIds, label._id);
|
return _.contains(this.labelIds, label._id);
|
||||||
});
|
});
|
||||||
return cardLabels;
|
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}});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue