From 00e00de78e14c4909f2c905f0409f25d845aee7a Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 7 Jun 2020 15:20:41 +0200 Subject: [PATCH] #338 - allow add/update of transfer templates --- .../templates/TemplateController.java | 14 +++++----- src/main/resources/languages/_de.properties | 1 + src/main/resources/languages/_en.properties | 1 + src/main/resources/static/js/templates.js | 26 +++++++++++++------ .../templates/templates/newTemplate.ftl | 9 +++++++ 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java index e21718cab..f42e236ba 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java @@ -153,7 +153,8 @@ public class TemplateController extends BaseController public String post(Model model, @ModelAttribute("NewTemplate") Template template, BindingResult bindingResult, @RequestParam(value = "isPayment", required = false) boolean isPayment, - @RequestParam(value = "includeAccount", required = false) boolean includeAccount) + @RequestParam(value = "includeAccount", required = false) boolean includeAccount, + @RequestParam(value = "includeTransferAccount", required = false) boolean includeTransferAccount) { template.setTemplateName(template.getTemplateName().trim()); @@ -186,6 +187,11 @@ public class TemplateController extends BaseController template.setAccount(null); } + if(!includeTransferAccount) + { + template.setTransferAccount(null); + } + templateService.getRepository().save(template); return "redirect:/templates"; } @@ -200,13 +206,9 @@ public class TemplateController extends BaseController } Template template = templateOptional.get(); - + templateService.prepareTemplateForNewTransaction(template, false); templateService.prepareModelNewOrEdit(model, true, template, template.getAmount() <= 0, accountService.getAllAccountsAsc()); - if(template.isTransfer()) - { - return "templates/newTransferTemplate"; - } return "templates/newTemplate"; } } \ No newline at end of file diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index e7b0784d1..7ef5c77bc 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -250,6 +250,7 @@ search.in.tags=Tags template.checkbox.include.category=Kategorie übernehmen template.checkbox.include.account=Konto übernehmen +template.checkbox.include.account.transfer=Zielkonto übernehmen # ABOUT about=Über {0} diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 762a81a7c..7fda4a8d9 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -250,6 +250,7 @@ search.in.tags=Tags template.checkbox.include.category=Include category template.checkbox.include.account=Include account +template.checkbox.include.account.transfer=Include destination account # ABOUT about=About {0} diff --git a/src/main/resources/static/js/templates.js b/src/main/resources/static/js/templates.js index 7daf9a19a..822ea631c 100644 --- a/src/main/resources/static/js/templates.js +++ b/src/main/resources/static/js/templates.js @@ -51,17 +51,27 @@ $(document).ready(function() if($("#include-account").length) { - document.getElementById('include-account').addEventListener('change', (event) => - { - let accountSelect = document.getElementById('transaction-account') - let accountSelectInstance = M.FormSelect.getInstance(accountSelect); - accountSelectInstance.destroy(); - accountSelect.disabled = !event.target.checked; - M.FormSelect.init(document.querySelectorAll('#transaction-account'), {}); - }); + handleIncludeAccountCheckbox('include-account', 'transaction-account') + } + + if($("#include-transfer-account").length) + { + handleIncludeAccountCheckbox('include-transfer-account', 'transaction-transfer-account') } }); +function handleIncludeAccountCheckbox(checkboxID, selectID) +{ + document.getElementById(checkboxID).addEventListener('change', (event) => + { + let accountSelect = document.getElementById(selectID) + let accountSelectInstance = M.FormSelect.getInstance(accountSelect); + accountSelectInstance.destroy(); + accountSelect.disabled = !event.target.checked; + M.FormSelect.init(document.querySelectorAll('#' + selectID), {}); + }); +} + function createAndOpenModal(data) { let modalID = '#modalCreateFromTransaction'; diff --git a/src/main/resources/templates/templates/newTemplate.ftl b/src/main/resources/templates/templates/newTemplate.ftl index 0da3a789a..9a6f030b9 100644 --- a/src/main/resources/templates/templates/newTemplate.ftl +++ b/src/main/resources/templates/templates/newTemplate.ftl @@ -58,6 +58,15 @@ <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" "", true/> </#if> + <#-- transfer account --> + <#if template.getTransferAccount()??> + <@templateFunctions.templateIncludeAccountCheckbox "include-transfer-account" "includeTransferAccount" locale.getString('template.checkbox.include.account.transfer') true/> + <@newTransactionMacros.account accounts template.getTransferAccount() "transaction-transfer-account" "transferAccount" "" false/> + <#else> + <@templateFunctions.templateIncludeAccountCheckbox "include-transfer-account" "includeTransferAccount" locale.getString('template.checkbox.include.account.transfer') false/> + <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-transfer-account" "transferAccount" "", true/> + </#if> + <br> <#-- buttons --> <@newTransactionMacros.buttons/> -- GitLab