From 061617ef8f3a46917d8326aa20e3cd950ec5d197 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 7 Jun 2020 12:29:21 +0200 Subject: [PATCH] #338 - allow selection of "no account" --- .../budgetmaster/templates/TemplateController.java | 12 +++++++++--- .../budgetmaster/templates/TemplateService.java | 4 ++-- src/main/resources/static/js/templates.js | 13 ++++++++++++- .../resources/templates/templates/newTemplate.ftl | 6 ++++-- .../templates/templates/templateFunctions.ftl | 11 +++++++++++ .../templates/transactions/newTransactionMacros.ftl | 4 ++-- .../templates/transactions/newTransactionNormal.ftl | 4 ++-- .../transactions/newTransactionRepeating.ftl | 4 ++-- .../transactions/newTransactionTransfer.ftl | 8 ++++---- 9 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java index 4edf2e672..918a68802 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java @@ -122,7 +122,7 @@ public class TemplateController extends BaseController } final Template template = templateOptional.get(); - templateService.prepareTemplateForNewTransaction(template); + templateService.prepareTemplateForNewTransaction(template, true); boolean isPayment = true; if(template.getAmount() != null) @@ -144,7 +144,7 @@ public class TemplateController extends BaseController public String newTemplate(Model model) { final Template emptyTemplate = new Template(); - templateService.prepareTemplateForNewTransaction(emptyTemplate); + templateService.prepareTemplateForNewTransaction(emptyTemplate, false); templateService.prepareModelNewOrEdit(model, false, emptyTemplate, true, accountService.getAllAccountsAsc()); return "templates/newTemplate"; } @@ -152,7 +152,8 @@ public class TemplateController extends BaseController @PostMapping(value = "/templates/newTemplate") public String post(Model model, @ModelAttribute("NewTemplate") Template template, BindingResult bindingResult, - @RequestParam(value = "isPayment", required = false) boolean isPayment) + @RequestParam(value = "isPayment", required = false) boolean isPayment, + @RequestParam(value = "includeAccount", required = false) boolean includeAccount) { TemplateValidator templateValidator = new TemplateValidator(templateService.getExistingTemplateNames()); @@ -168,6 +169,11 @@ public class TemplateController extends BaseController return "templates/newTemplate"; } + if(!includeAccount) + { + template.setAccount(null); + } + templateService.getRepository().save(template); return "redirect:/templates"; } diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java index d4b4768ea..db8744559 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java @@ -75,14 +75,14 @@ public class TemplateService implements Resetable getRepository().save(template); } - public void prepareTemplateForNewTransaction(Template template) + public void prepareTemplateForNewTransaction(Template template, boolean prepareAccount) { if(template.getCategory() == null) { template.setCategory(categoryService.getRepository().findByType(CategoryType.NONE)); } - if(template.getAmount() == null) + if(prepareAccount && template.getAccount() == null) { final Account selectedAccount = accountService.getRepository().findByIsSelected(true); template.setAccount(selectedAccount); diff --git a/src/main/resources/static/js/templates.js b/src/main/resources/static/js/templates.js index 13d3df6e8..7daf9a19a 100644 --- a/src/main/resources/static/js/templates.js +++ b/src/main/resources/static/js/templates.js @@ -34,7 +34,6 @@ $(document).ready(function() accordion: false }); - let inputSearchTemplate = document.getElementById('searchTemplate'); if(inputSearchTemplate !== undefined) { @@ -49,6 +48,18 @@ $(document).ready(function() { document.getElementById('template-name').focus(); } + + 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'), {}); + }); + } }); function createAndOpenModal(data) diff --git a/src/main/resources/templates/templates/newTemplate.ftl b/src/main/resources/templates/templates/newTemplate.ftl index b1e2d68d5..0da3a789a 100644 --- a/src/main/resources/templates/templates/newTemplate.ftl +++ b/src/main/resources/templates/templates/newTemplate.ftl @@ -51,9 +51,11 @@ <#-- account --> <#if template.getAccount()??> - <@newTransactionMacros.account accounts template.getAccount() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@templateFunctions.templateIncludeAccountCheckbox "include-account" "includeAccount" locale.getString('template.checkbox.include.account') true/> + <@newTransactionMacros.account accounts template.getAccount() "transaction-account" "account" "" false/> <#else> - <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@templateFunctions.templateIncludeAccountCheckbox "include-account" "includeAccount" locale.getString('template.checkbox.include.account') false/> + <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" "", true/> </#if> <br> diff --git a/src/main/resources/templates/templates/templateFunctions.ftl b/src/main/resources/templates/templates/templateFunctions.ftl index 04c34cf26..ed2d0e839 100644 --- a/src/main/resources/templates/templates/templateFunctions.ftl +++ b/src/main/resources/templates/templates/templateFunctions.ftl @@ -136,4 +136,15 @@ <label for="template-name">${locale.getString("template.new.label.name")}</label> </div> </div> +</#macro> + +<#macro templateIncludeAccountCheckbox id name label checked> + <div class="row"> + <div class="input-field col s12 m12 l8 offset-l2"> + <label> + <input id="${id}" name="${name}" type="checkbox" <#if checked>checked</#if>> + <span class="columnName-checkbox-label text-color">${label}</span> + </label> + </div> + </div> </#macro> \ No newline at end of file diff --git a/src/main/resources/templates/transactions/newTransactionMacros.ftl b/src/main/resources/templates/transactions/newTransactionMacros.ftl index 69edc1a37..0a01dbf27 100644 --- a/src/main/resources/templates/transactions/newTransactionMacros.ftl +++ b/src/main/resources/templates/transactions/newTransactionMacros.ftl @@ -180,10 +180,10 @@ </script> </#macro> -<#macro account accounts selectedAccount id name label> +<#macro account accounts selectedAccount id name label disabled> <div class="row"> <div class="input-field col s12 m12 l8 offset-l2"> - <select id="${id}" name="${name}" <@validation.validation "account"/>> + <select id="${id}" name="${name}" <@validation.validation "account"/> <#if disabled>disabled</#if>> <#list accounts as account> <#if (account.getType().name() != "CUSTOM")> <#continue> diff --git a/src/main/resources/templates/transactions/newTransactionNormal.ftl b/src/main/resources/templates/transactions/newTransactionNormal.ftl index 2890327da..6cbfe5e44 100644 --- a/src/main/resources/templates/transactions/newTransactionNormal.ftl +++ b/src/main/resources/templates/transactions/newTransactionNormal.ftl @@ -51,9 +51,9 @@ <#-- account --> <#if transaction.getAccount()??> - <@newTransactionMacros.account accounts transaction.getAccount() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@newTransactionMacros.account accounts transaction.getAccount() "transaction-account" "account" locale.getString("transaction.new.label.account") false/> <#else> - <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" locale.getString("transaction.new.label.account") false/> </#if> <br> diff --git a/src/main/resources/templates/transactions/newTransactionRepeating.ftl b/src/main/resources/templates/transactions/newTransactionRepeating.ftl index ec00585ac..1fbd570c8 100644 --- a/src/main/resources/templates/transactions/newTransactionRepeating.ftl +++ b/src/main/resources/templates/transactions/newTransactionRepeating.ftl @@ -51,9 +51,9 @@ <#-- account --> <#if transaction.getAccount()??> - <@newTransactionMacros.account accounts transaction.getAccount() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@newTransactionMacros.account accounts transaction.getAccount() "transaction-account" "account" locale.getString("transaction.new.label.account") false/> <#else> - <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" locale.getString("transaction.new.label.account") false/> </#if> <#-- repeating options --> diff --git a/src/main/resources/templates/transactions/newTransactionTransfer.ftl b/src/main/resources/templates/transactions/newTransactionTransfer.ftl index 498f3cea2..6ae040977 100644 --- a/src/main/resources/templates/transactions/newTransactionTransfer.ftl +++ b/src/main/resources/templates/transactions/newTransactionTransfer.ftl @@ -49,16 +49,16 @@ <#-- account --> <#if transaction.getAccount()??> - <@newTransactionMacros.account accounts transaction.getAccount() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@newTransactionMacros.account accounts transaction.getAccount() "transaction-account" "account" locale.getString("transaction.new.label.account"), false/> <#else> - <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" locale.getString("transaction.new.label.account")/> + <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" locale.getString("transaction.new.label.account") false/> </#if> <#-- transfer account --> <#if transaction.getTransferAccount()??> - <@newTransactionMacros.account accounts transaction.getTransferAccount() "transaction-transfer-account" "transferAccount" locale.getString("transaction.new.label.transfer.account")/> + <@newTransactionMacros.account accounts transaction.getTransferAccount() "transaction-transfer-account" "transferAccount" locale.getString("transaction.new.label.transfer.account") false/> <#else> - <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-transfer-account" "transferAccount" locale.getString("transaction.new.label.transfer.account")/> + <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-transfer-account" "transferAccount" locale.getString("transaction.new.label.transfer.account") false/> </#if> <br> -- GitLab