From 4918c2a4429a5221d74df24720de922f2df97578 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Thu, 21 Jul 2022 23:30:47 +0200 Subject: [PATCH] #677 - show modal if keyword in transaction name (WIP) --- .../main/resources/static/js/transactions.js | 69 ++++++++++++++++++- .../transactions/newTransactionMacros.ftl | 2 + 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/BudgetMasterServer/src/main/resources/static/js/transactions.js b/BudgetMasterServer/src/main/resources/static/js/transactions.js index a4d6a6af5..eb1b0c1cf 100644 --- a/BudgetMasterServer/src/main/resources/static/js/transactions.js +++ b/BudgetMasterServer/src/main/resources/static/js/transactions.js @@ -261,7 +261,9 @@ $(document).ready(function() $('.button-request-delete-transaction').click(function() { - fetchAndShowModalContent(this.dataset.url, '#deleteModalContainerOnDemand', '#modalConfirmDelete', function(){}); + fetchAndShowModalContent(this.dataset.url, '#deleteModalContainerOnDemand', '#modalConfirmDelete', function() + { + }); }); $('#button-transaction-add-repeating-option').click(function() @@ -379,8 +381,19 @@ function convertDateWithoutDots(dateString) return dateString.substr(0, 2) + '.' + dateString.substr(2, 2) + '.' + dateString.substr(4, yearLength); } -function validateForm(allowEmptyAmount = false) +function validateForm(allowEmptyAmount = false, skipKeywordCheck = false) { + // name (keyword check) + if(!skipKeywordCheck) + { + let keyword = checkNameForKeywords(); + if(keyword !== null) + { + openKeywordWarningModal(keyword); + return false; + } + } + // amount let isValidAmount = validateAmount($('#transaction-amount').val(), allowEmptyAmount); if(!isValidAmount) @@ -464,3 +477,55 @@ function validateForm(allowEmptyAmount = false) return true; } + +function checkNameForKeywords() +{ + // TODO implement real check + // TODO only return keyword for transaction name not template + return 'income'; +} + +function openKeywordWarningModal(keyword) +{ + let url = document.getElementById('keywordWarningModalUrl').dataset.url; + + $.ajax({ + type: 'GET', + url: url, + data: {}, + success: function(data) + { + let modalID = '#modalTransactionNameKeywordWarning'; + + $('#transactionNameKeywordWarningModalContainer').html(data); + $(modalID).modal(); + $(modalID).modal('open'); + + document.getElementById('keyword').innerHTML = keyword; + + $('#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(); + + // 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) + { + console.error(data); + } + }); +} diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl index 5465db96c..4abdcea99 100644 --- a/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl +++ b/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl @@ -304,6 +304,8 @@ </#macro> <#macro buttons cancelURL includeContinueButton> + <div id="keywordWarningModalUrl" class="hidden" data-url="<@s.url '/transactions/keywordWarningModal'/>"></div> + <br> <hr> <br> -- GitLab