From 2a213de8460b42e354b74a6b69d41c6e7b9e9c81 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Fri, 22 Jul 2022 22:16:03 +0200 Subject: [PATCH] #677 - check name for keywords in java --- .../transactions/TransactionController.java | 12 ++- .../main/resources/static/js/transactions.js | 81 +++++++++++-------- .../transactions/newTransactionMacros.ftl | 2 +- .../transactionNameKeywordWarningModal.ftl | 2 +- 4 files changed, 58 insertions(+), 39 deletions(-) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java index 7050c5b6d..a7c3dff3c 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java @@ -46,6 +46,11 @@ import static java.time.temporal.TemporalAdjusters.lastDayOfMonth; @RequestMapping(Mappings.TRANSACTIONS) public class TransactionController extends BaseController { + private static class ModelAttributes + { + public static final String KEYWORD = "keyword"; + } + private static class ReturnValues { public static final String ALL_ENTITIES = "transactions/transactions"; @@ -407,9 +412,12 @@ public class TransactionController extends BaseController return ReturnValues.NEW_TRANSACTION; } - @GetMapping("/keywordWarningModal") - public String keywordWarningModal() + @GetMapping("/keywordCheck") + public String keywordWarningModal(Model model) { + // TODO implement real check + // TODO only return keyword for transaction name not template + model.addAttribute(ModelAttributes.KEYWORD, "income"); return ReturnValues.KEYWORD_WARNING; } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/static/js/transactions.js b/BudgetMasterServer/src/main/resources/static/js/transactions.js index eb1b0c1cf..e085a6df9 100644 --- a/BudgetMasterServer/src/main/resources/static/js/transactions.js +++ b/BudgetMasterServer/src/main/resources/static/js/transactions.js @@ -386,10 +386,10 @@ function validateForm(allowEmptyAmount = false, skipKeywordCheck = false) // name (keyword check) if(!skipKeywordCheck) { - let keyword = checkNameForKeywords(); - if(keyword !== null) + let nameContainsKeywords = checkNameForKeywords(); + if(nameContainsKeywords) { - openKeywordWarningModal(keyword); + console.log("nameContainsKeywords"); return false; } } @@ -480,52 +480,63 @@ function validateForm(allowEmptyAmount = false, skipKeywordCheck = false) function checkNameForKeywords() { - // TODO implement real check - // TODO only return keyword for transaction name not template - return 'income'; -} + let url = document.getElementById('keywordCheckUrl').dataset.url; -function openKeywordWarningModal(keyword) -{ - let url = document.getElementById('keywordWarningModalUrl').dataset.url; + let result; $.ajax({ + async: false, type: 'GET', url: url, data: {}, success: function(data) { - let modalID = '#modalTransactionNameKeywordWarning'; + if(data) + { + // name contains at least one keyword + result = true; + openKeywordWarningModal(data); + } + else + { + result = false; + } + }, + error: function(data) + { + console.error(data); + } + }); - $('#transactionNameKeywordWarningModalContainer').html(data); - $(modalID).modal(); - $(modalID).modal('open'); + return result; +} - document.getElementById('keyword').innerHTML = keyword; +function openKeywordWarningModal(htmlData) +{ + let modalID = '#modalTransactionNameKeywordWarning'; - $('#keyword-warning-button-ignore').click(function() - { - $(modalID).modal('close'); + $('#transactionNameKeywordWarningModalContainer').html(htmlData); + $(modalID).modal(); + $(modalID).modal('open'); - // rebind onsubmit function to skip keyword check once - document.getElementsByName('NewTransaction')[0].onsubmit = function() - { - return validateForm(false, true); - }; + // button ignore + $('#keyword-warning-button-ignore').click(function() + { + $(modalID).modal('close'); + + // rebind onsubmit function to skip keyword check once + document.getElementsByName('NewTransaction')[0].onsubmit = function() + { + return validateForm(false, true); + }; - // TODO differentiate between user clicked button "save" or "save and continue" before - document.getElementById('button-save-transaction').click(); + // TODO differentiate between user clicked button "save" or "save and continue" before + document.getElementById('button-save-transaction').click(); - // reset onsubmit function in case user edits transaction name too after fixing validation errors - document.getElementsByName('NewTransaction')[0].onsubmit = function() - { - return validateForm(false, false); - }; - }); - }, - error: function(data) + // reset onsubmit function in case user edits transaction name too after fixing validation errors + document.getElementsByName('NewTransaction')[0].onsubmit = function() { - console.error(data); - } + return validateForm(false, false); + }; }); } diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl index 4abdcea99..cd29623fe 100644 --- a/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl +++ b/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl @@ -304,7 +304,7 @@ </#macro> <#macro buttons cancelURL includeContinueButton> - <div id="keywordWarningModalUrl" class="hidden" data-url="<@s.url '/transactions/keywordWarningModal'/>"></div> + <div id="keywordCheckUrl" class="hidden" data-url="<@s.url '/transactions/keywordCheck'/>"></div> <br> <hr> diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl index 222436916..19f534606 100644 --- a/BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl +++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl @@ -9,7 +9,7 @@ <div class="row"> <div class="sol s12"> ${locale.getString("transaction.warning.name.keyword.description.part1")} - <span id="keyword"></span> + <span id="keyword">${keyword}</span> ${locale.getString("transaction.warning.name.keyword.description.part2")} </div> </div> -- GitLab