diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java index 8f3edab07189154a1ba7e8be04ea7bf7c27d38f7..6cce1d62d2a02d518f633c3848667a2337c726b6 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java @@ -2,10 +2,9 @@ package de.deadlocker8.budgetmaster.controller; import de.deadlocker8.budgetmaster.authentication.User; import de.deadlocker8.budgetmaster.authentication.UserRepository; -import de.deadlocker8.budgetmaster.database.AccountMatch; +import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatchList; import de.deadlocker8.budgetmaster.database.Database; import de.deadlocker8.budgetmaster.database.DatabaseParser; -import de.deadlocker8.budgetmaster.entities.Account; import de.deadlocker8.budgetmaster.entities.Settings; import de.deadlocker8.budgetmaster.repositories.AccountRepository; import de.deadlocker8.budgetmaster.repositories.SettingsRepository; @@ -33,8 +32,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.List; @Controller @@ -226,4 +223,12 @@ public class SettingsController extends BaseController model.addAttribute("availableAccounts", accountRepository.findAllByOrderByNameAsc()); return "import"; } + + @RequestMapping("/settings/database/import") + public String importDatabase(Model model, @ModelAttribute("Import") AccountMatchList accountMatchList, BindingResult bindingResult) + { + System.out.println(accountMatchList); + System.out.println(bindingResult); + return "settings"; + } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/AccountMatch.java b/src/main/java/de/deadlocker8/budgetmaster/database/accountmatches/AccountMatch.java similarity index 89% rename from src/main/java/de/deadlocker8/budgetmaster/database/AccountMatch.java rename to src/main/java/de/deadlocker8/budgetmaster/database/accountmatches/AccountMatch.java index 57d9654fe27fbe2f3b0f9140a1a7a68780e67ec5..2cc9da1bccdf9aa74c29f4100cc867419c0f1c99 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/AccountMatch.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/accountmatches/AccountMatch.java @@ -1,4 +1,4 @@ -package de.deadlocker8.budgetmaster.database; +package de.deadlocker8.budgetmaster.database.accountmatches; import de.deadlocker8.budgetmaster.entities.Account; @@ -7,6 +7,10 @@ public class AccountMatch private Account accountSource; private Account accountDestination; + public AccountMatch() + { + } + public AccountMatch(Account accountSource) { this.accountSource = accountSource; diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/accountmatches/AccountMatchList.java b/src/main/java/de/deadlocker8/budgetmaster/database/accountmatches/AccountMatchList.java new file mode 100644 index 0000000000000000000000000000000000000000..02c8b66dedb396b85f4058d0894e593f02720b01 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/accountmatches/AccountMatchList.java @@ -0,0 +1,35 @@ +package de.deadlocker8.budgetmaster.database.accountmatches; + +import java.util.List; + +public class AccountMatchList +{ + private List<AccountMatch> accountMatches; + + public AccountMatchList() + { + } + + public AccountMatchList(List<AccountMatch> accountMatches) + { + this.accountMatches = accountMatches; + } + + public List<AccountMatch> getAccountMatches() + { + return accountMatches; + } + + public void setAccountMatches(List<AccountMatch> accountMatches) + { + this.accountMatches = accountMatches; + } + + @Override + public String toString() + { + return "AccountMatchList{" + + "accountMatches=" + accountMatches + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java index 61b76954fe97a861b53d76f6795da1a67d196b7a..cd575b98c5086196f23450caa6d5fc2ee70ce943 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java @@ -1,6 +1,6 @@ package de.deadlocker8.budgetmaster.services; -import de.deadlocker8.budgetmaster.database.AccountMatch; +import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatch; import de.deadlocker8.budgetmaster.entities.Account; import de.deadlocker8.budgetmaster.entities.Payment; import de.deadlocker8.budgetmaster.entities.Settings; diff --git a/src/main/resources/static/js/import.js b/src/main/resources/static/js/import.js new file mode 100644 index 0000000000000000000000000000000000000000..34e587e96813bd11d1378c5f93e8a37c34e10b22 --- /dev/null +++ b/src/main/resources/static/js/import.js @@ -0,0 +1,35 @@ +$( document ).ready(function() { + // prevent form submit on enter + $(document).on("keypress", 'form', function (e) { + var code = e.keyCode || e.which; + if (code === 13) { + e.preventDefault(); + return false; + } + }); +}); + +function validateForm() +{ + // handle account matches + var accountSources = $('.account-source'); + var accountDestinations = $('select.account-destination'); + var parent = document.getElementById("hidden-account-matches"); + + for(var i = 0; i < accountSources.length; i++) + { + var input = document.createElement("input"); + input.setAttribute("type", "hidden"); + input.setAttribute("name", "accountMatches[" + i + "].accountSource.name"); + input.setAttribute("value", accountSources[i].innerText); + parent.appendChild(input); + + var inputDestination = document.createElement("input"); + inputDestination.setAttribute("type", "hidden"); + inputDestination.setAttribute("name", "accountMatches[" + i + "].accountDestination.name"); + inputDestination.setAttribute("value", accountDestinations[i].value); + parent.appendChild(inputDestination); + } + + return true; +} \ No newline at end of file diff --git a/src/main/resources/templates/import.ftl b/src/main/resources/templates/import.ftl index 5689216870a55578e3d88ddaafbf286d65a88372..587dcd57d365eabe100f9566d752897176c3c469 100644 --- a/src/main/resources/templates/import.ftl +++ b/src/main/resources/templates/import.ftl @@ -17,17 +17,17 @@ </div> <div class="container"> <#import "validation.ftl" as validation> - <form name="Import" action="/settings/database/import" method="post"> + <form name="Import" action="/settings/database/import" method="post" onsubmit="return validateForm()"> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> <table class="bordered"> <#list helpers.getAccountMatches(database.getAccounts()) as accountMatch> <tr> <td class="import-text">${locale.getString("info.database.import.source")}</td> - <td>${accountMatch.getAccountSource().getName()}</td> + <td class="account-source">${accountMatch.getAccountSource().getName()}</td> <td class="import-text">${locale.getString("info.database.import.destination")}</td> <td> - <select> + <select class="account-destination"> <#list availableAccounts as account> <option value="${account.getName()}">${account.getName()}</option> </#list> @@ -44,6 +44,8 @@ <div class="headline center-align">${locale.getString("placeholder")}</div> </#if> + <div id="hidden-account-matches"></div> + <br> <#-- buttons --> @@ -62,5 +64,6 @@ <!-- Scripts--> <#import "scripts.ftl" as scripts> <@scripts.scripts/> + <script src="/js/import.js"></script> </body> </html> \ No newline at end of file