mirror of
https://github.com/wekan/wekan.git
synced 2025-04-23 13:37:09 -04:00
Refactoring rules description
This commit is contained in:
parent
e649c79bb7
commit
fc73dc5bbc
15 changed files with 270 additions and 69 deletions
|
@ -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});
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -3,6 +3,5 @@ template(name="ruleDetails")
|
|||
h2
|
||||
i.fa.fa-magic
|
||||
| {{{_ 'r-rule-details' }}}
|
||||
|
||||
| trigger
|
||||
| action
|
||||
= trigger
|
||||
= action
|
|
@ -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() {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
|
@ -46,6 +46,8 @@ BlazeComponent.extendComponent({
|
|||
},
|
||||
'click .js-goto-details'(event) {
|
||||
event.preventDefault();
|
||||
const rule = this.currentData();
|
||||
this.ruleId.set(rule._id)
|
||||
this.setRuleDetails();
|
||||
},
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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'}}}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -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";
|
||||
},
|
||||
|
||||
labels() {
|
||||
const boardLabels = this.board().labels;
|
||||
const cardLabels = _.filter(boardLabels, (label) => {
|
||||
return _.contains(this.labelIds, label._id);
|
||||
});
|
||||
return cardLabels;
|
||||
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;
|
||||
}});
|
||||
|
||||
|
||||
|
|
|
@ -12,3 +12,7 @@ Meteor.publish('allRules', () => {
|
|||
Meteor.publish('allTriggers', () => {
|
||||
return Triggers.find({});
|
||||
});
|
||||
|
||||
Meteor.publish('allActions', () => {
|
||||
return Actions.find({});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue