diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java index 4edf2e672b0dfdafd2ef8b90ab12a0694d66e42d..918a68802b302346b5f84e173611bcb9fc8fef18 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 d4b4768ea131fda6855786114e0af9381fd0228a..db87445597d00b3cbac58b00b306b1f4bdb7c88a 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 13d3df6e8ed10a25cb450665eb247f4efa3f0b4f..7daf9a19a441753d742cf1fcd5c16353e0b3feb9 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 b1e2d68d57a36bef5fed2c96b498827bdee39dda..0da3a789acdecd6924eca34965362c3094af7915 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 04c34cf26bcab6643deffb9f2e76720baf8b98e4..ed2d0e839e992d8e88913d12d70471c236e38056 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 69edc1a3722a36e952acaaa428c2ab16b381c351..0a01dbf279cb039cdd8c8793ea23fdcc4dab41e2 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 2890327da7fe9da85409e7428eeace6517da813a..6cbfe5e448b889fd5b3e3e3b893338dcace651f2 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 ec00585ac0fb1861fec9916dfea22f869e978e62..1fbd570c88a7087ea2388d9d81efa390175c9388 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 498f3cea2d0c7f13334e6944a89d0b914e75093c..6ae0409777c35f58c854f6ba545503601e12bffd 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>