Adds rule feature: cardAction - SetDate #2504

This commit is contained in:
Christoph Jahn 2019-06-21 07:24:21 +02:00
parent 02de9164f0
commit a9fc74a9b4
6 changed files with 197 additions and 6 deletions

View file

@ -1,11 +1,44 @@
template(name="cardActions")
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="setdate-action")
option(value="setDate") {{{_'r-set'}}}
option(value="updateDate") {{{_'r-update'}}}
div.trigger-text
| {{{_'r-datefield'}}}
div.trigger-dropdown
select(id="setdate-datefield")
option(value="startAt") {{{_'r-df-start-at'}}}
option(value="dueAt") {{{_'r-df-due-at'}}}
option(value="endAt") {{{_'r-df-end-at'}}}
option(value="receivedAt") {{{_'r-df-received-at'}}}
div.trigger-text
| {{{_'r-to-current-datetime'}}}
div.trigger-button.js-set-date-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-remove-value-from'}}}
| {{{_'r-datefield'}}}
div.trigger-dropdown
select(id="setdate-removedatefieldvalue")
option(value="startAt") {{{_'r-df-start-at'}}}
option(value="dueAt") {{{_'r-df-due-at'}}}
option(value="endAt") {{{_'r-df-end-at'}}}
option(value="receivedAt") {{{_'r-df-received-at'}}}
div.trigger-button.js-remove-datevalue-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="label-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
div.trigger-text
| {{{_'r-label'}}}
div.trigger-dropdown
select(id="label-id")
@ -21,16 +54,16 @@ template(name="cardActions")
select(id="member-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
div.trigger-text
| {{{_'r-member'}}}
div.trigger-dropdown
input(id="member-name",type=text,placeholder="{{{_'r-name'}}}")
input(id="member-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-member-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
div.trigger-text
| {{{_'r-remove-all'}}}
div.trigger-button.js-add-removeall-action.js-goto-rules
i.fa.fa-plus

View file

@ -29,6 +29,54 @@ BlazeComponent.extendComponent({
events() {
return [{
'click .js-set-date-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const triggerId = Triggers.insert(trigger);
const actionSelected = this.find('#setdate-action').value;
const dateFieldSelected = this.find('#setdate-datefield').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const actionId = Actions.insert({
actionType: actionSelected,
dateField: dateFieldSelected,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
desc,
});
},
'click .js-remove-datevalue-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const triggerId = Triggers.insert(trigger);
const dateFieldSelected = this.find('#setdate-removedatefieldvalue').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const actionId = Actions.insert({
actionType: 'removeDate',
dateField: dateFieldSelected,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
desc,
});
},
'click .js-add-label-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();

View file

@ -669,6 +669,15 @@
"r-board-note": "Hinweis: Lassen Sie ein Feld leer, um alle möglichen Werte zu finden.",
"r-checklist-note": "Hinweis: Die Elemente der Checkliste müssen als kommagetrennte Werte geschrieben werden.",
"r-when-a-card-is-moved": "Wenn eine Karte in eine andere Liste verschoben wird",
"r-set": "Setze",
"r-update": "Aktualisiere",
"r-datefield": "Datumsfeld",
"r-df-start-at": "Start",
"r-df-due-at": "Fällig",
"r-df-end-at": "Ende",
"r-df-received-at": "Empfangen",
"r-to-current-datetime": "auf das aktuelle Datum/Zeit",
"r-remove-value-from": "Entferne Wert von",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
@ -690,4 +699,4 @@
"restore-all": "Alles wiederherstellen",
"delete-all": "Alles löschen",
"loading": "Laden, bitte warten."
}
}

View file

@ -669,6 +669,15 @@
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"r-set": "Set",
"r-update": "Update",
"r-datefield": "date field",
"r-df-start-at": "start",
"r-df-due-at": "due",
"r-df-end-at": "end",
"r-df-received-at": "received",
"r-to-current-datetime": "to current date/time",
"r-remove-value-from": "Remove value from",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
@ -690,4 +699,4 @@
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait."
}
}

View file

@ -672,6 +672,15 @@
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-added-to": "added to",
"r-when-a-card-is-moved": "When a card is moved to another list",
"r-set": "Set",
"r-update": "Update",
"r-datefield": "date field",
"r-df-start-at": "start",
"r-df-due-at": "due",
"r-df-end-at": "end",
"r-df-received-at": "received",
"r-to-current-datetime": "to current date/time",
"r-remove-value-from": "Remove value from",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",

View file

@ -83,6 +83,89 @@ RulesHelper = {
return;
}
}
if(action.actionType === 'setDate') {
try {
const currentDateTime = new Date();
switch (action.dateField){
case 'startAt': {
const resStart = card.getStart();
if (typeof resStart === 'undefined') {
card.setStart(currentDateTime);
}
break;
}
case 'endAt': {
const resEnd = card.getEnd();
if (typeof resEnd === 'undefined') {
card.setEnd(currentDateTime);
}
break;
}
case 'dueAt': {
const resDue = card.getDue();
if (typeof resDue === 'undefined') {
card.setDue(currentDateTime);
}
break;
}
case 'receivedAt': {
const resReceived = card.getReceived();
if (typeof resReceived === 'undefined') {
card.setReceived(currentDateTime);
}
break;
}
}
} catch (e) {
// eslint-disable-next-line no-console
console.error(e);
return;
}
}
if(action.actionType === 'updateDate'){
const currentDateTimeUpdate = new Date();
switch (action.dateField){
case 'startAt': {
card.setStart(currentDateTimeUpdate);
break;
}
case 'endAt': {
card.setEnd(currentDateTimeUpdate);
break;
}
case 'dueAt': {
card.setDue(currentDateTimeUpdate);
break;
}
case 'receivedAt': {
card.setReceived(currentDateTimeUpdate);
break;
}
}
}
if(action.actionType === 'removeDate'){
switch (action.dateField){
case 'startAt': {
card.unsetStart();
break;
}
case 'endAt': {
card.unsetEnd();
break;
}
case 'dueAt': {
card.unsetDue();
break;
}
case 'receivedAt': {
card.unsetReceived();
break;
}
}
}
if(action.actionType === 'archive'){
card.archive();
}