mirror of
https://github.com/wekan/wekan.git
synced 2025-04-22 04:57:07 -04: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,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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue