mirror of
https://github.com/wekan/wekan.git
synced 2025-12-17 07:50:12 +01:00
Adds rule feature: cardAction - SetDate #2504
This commit is contained in:
parent
02de9164f0
commit
a9fc74a9b4
6 changed files with 197 additions and 6 deletions
|
|
@ -1,4 +1,37 @@
|
||||||
template(name="cardActions")
|
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-item
|
||||||
div.trigger-content
|
div.trigger-content
|
||||||
div.trigger-dropdown
|
div.trigger-dropdown
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,54 @@ BlazeComponent.extendComponent({
|
||||||
|
|
||||||
events() {
|
events() {
|
||||||
return [{
|
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) {
|
'click .js-add-label-action' (event) {
|
||||||
const ruleName = this.data().ruleName.get();
|
const ruleName = this.data().ruleName.get();
|
||||||
const trigger = this.data().triggerVar.get();
|
const trigger = this.data().triggerVar.get();
|
||||||
|
|
|
||||||
|
|
@ -669,6 +669,15 @@
|
||||||
"r-board-note": "Hinweis: Lassen Sie ein Feld leer, um alle möglichen Werte zu finden.",
|
"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-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-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",
|
"ldap": "LDAP",
|
||||||
"oauth2": "OAuth2",
|
"oauth2": "OAuth2",
|
||||||
"cas": "CAS",
|
"cas": "CAS",
|
||||||
|
|
|
||||||
|
|
@ -669,6 +669,15 @@
|
||||||
"r-board-note": "Note: leave a field empty to match every possible value.",
|
"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-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-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",
|
"ldap": "LDAP",
|
||||||
"oauth2": "OAuth2",
|
"oauth2": "OAuth2",
|
||||||
"cas": "CAS",
|
"cas": "CAS",
|
||||||
|
|
|
||||||
|
|
@ -672,6 +672,15 @@
|
||||||
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
||||||
"r-added-to": "added to",
|
"r-added-to": "added to",
|
||||||
"r-when-a-card-is-moved": "When a card is moved to another list",
|
"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",
|
"ldap": "LDAP",
|
||||||
"oauth2": "OAuth2",
|
"oauth2": "OAuth2",
|
||||||
"cas": "CAS",
|
"cas": "CAS",
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,89 @@ RulesHelper = {
|
||||||
return;
|
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'){
|
if(action.actionType === 'archive'){
|
||||||
card.archive();
|
card.archive();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue