diff --git a/BudgetMasterServer/pom.xml b/BudgetMasterServer/pom.xml index 948a2d428e5dfeea9e96b8f5807c387d0e1bb945..a754525a3b74d7eef4b08095047067a139b95166 100644 --- a/BudgetMasterServer/pom.xml +++ b/BudgetMasterServer/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>BudgetMaster</artifactId> <groupId>de.deadlocker8</groupId> - <version>2.17.0</version> + <version>2.17.1</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java index a573df662b4e2433b4782523dca2cddd6e43716a..5354f34bd80266464189bf592d2a0c06dcf1549d 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java @@ -50,7 +50,7 @@ public class AboutController extends BaseController newsEntries.add(NewsEntry.createWithLocalizationKey("accountEndDate")); newsEntries.add(NewsEntry.createWithLocalizationKey("accountDescription")); newsEntries.add(NewsEntry.createWithLocalizationKey("transactionNameSuggestionsSort")); - newsEntries.add(NewsEntry.createWithLocalizationKey("transactionNameSuggestionsSort")); + newsEntries.add(NewsEntry.createWithLocalizationKey("bugfixCsvImport")); model.addAttribute(ModelAttributes.NEWS_ENTRIES, newsEntries); return ReturnValues.WHATS_NEW; diff --git a/BudgetMasterServer/src/main/resources/static/css/transactionImport.css b/BudgetMasterServer/src/main/resources/static/css/transactionImport.css index 5a298f8380a1db5242dd94c6c8da0d694d741d27..d7e7b0d4cf5f4be6c0ff611e64495dd5721fcb90 100644 --- a/BudgetMasterServer/src/main/resources/static/css/transactionImport.css +++ b/BudgetMasterServer/src/main/resources/static/css/transactionImport.css @@ -24,6 +24,10 @@ opacity: 0.5; } +#table-transaction-rows tr { + border-bottom: none !important; +} + #table-transaction-rows td { padding: 5px; } @@ -33,10 +37,10 @@ margin: auto; } -#table-transaction-rows_filter input { - height: 1rem; - border: none; - border-radius: 0; +.dt-search input[type=search] { + height: 1rem !important; + border: none !important; + border-radius: 0 !important; } /* override custom select styling*/ @@ -57,30 +61,30 @@ } /* label focus color */ -#table-transaction-rows_filter input[type=search]:focus + label { +.dt-search input[type=search]:focus + label { color: var(--color-blue) !important; } /* label underline focus color */ -#table-transaction-rows_filter input[type=search]:focus:not(.invalid) { +.dt-search input[type=search]:focus:not(.invalid) { border-bottom: 1px solid var(--color-blue) !important; box-shadow: 0 1px 0 0 #CCCCCC !important; } /* input text color */ -[data-theme="dark"] #table-transaction-rows_filter input[type=search] { - color: var(--color-white); - border-bottom: 1px solid var(--color-white); - box-shadow: 0 1px 0 0 #CCCCCC; +[data-theme="dark"] .dt-search input[type=search] { + color: var(--color-white) !important; + border-bottom: 1px solid var(--color-white) !important; + box-shadow: 0 1px 0 0 #CCCCCC !important; } /* input label color */ -[data-theme="dark"] #table-transaction-rows_filter input[type=search] + label { +[data-theme="dark"] .dt-search input[type=search] + label { color: var(--color-white) !important; } /* label underline focus color */ -[data-theme="dark"] #table-transaction-rows_filter input[type=search]:focus:not(.invalid) { +[data-theme="dark"] .dt-search input[type=search]:focus:not(.invalid) { border-bottom: 1px solid var(--color-blue) !important; box-shadow: 0 1px 0 0 var(--color-blue) !important; } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/resources/static/js/transactionImport.js b/BudgetMasterServer/src/main/resources/static/js/transactionImport.js index 17d879e297a1659d051579986d47fd480bb990d6..251e89c1a4c6e4d135e3b560ee296c797036447b 100644 --- a/BudgetMasterServer/src/main/resources/static/js/transactionImport.js +++ b/BudgetMasterServer/src/main/resources/static/js/transactionImport.js @@ -7,16 +7,25 @@ $(document).ready(function() $('.collapsible').collapsible(); + DataTable.type('date', 'className', 'dt-center'); $('#table-transaction-rows').DataTable({ paging: false, - order: [[2, 'desc']], + order: [[1, 'desc']], info: false, scrollX: true, scrollY: false, columnDefs: [ - { orderable: false, targets: 6} + { + className: "dt-head-center", + targets: [0, 1, 3, 4, 6] + }, + { + // amount column + orderable: false, + targets: 5 + } ], - language: { search: '' , searchPlaceholder: localizedSearch}, + language: {search: '', searchPlaceholder: localizedSearch}, }); if(transactionNameSuggestions !== undefined) @@ -24,7 +33,10 @@ $(document).ready(function() let nameElements = document.querySelectorAll('.autocomplete'); let autoCompleteInstances = M.Autocomplete.init(nameElements, { data: transactionNameSuggestions, - sortFunction: function(a,b, inputString) {return false;} + sortFunction: function(a, b, inputString) + { + return false; + } }); // prevent tab traversal for dropdown (otherwise "tab" needs to be hit twice to jump from name input to amount input) diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImportMacros.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImportMacros.ftl index fa1b64a646eaa6e3ff54bfed02d9eafbcd06c342..da4773f618a2a9c3d6c45641bf5bdb2ff2c668d9 100644 --- a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImportMacros.ftl +++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImportMacros.ftl @@ -167,10 +167,9 @@ <#macro renderCsvTransactions> <div id="transaction-import-list"> - <table class="bordered centered" id="table-transaction-rows" style="width:100%"> + <table class="centered" id="table-transaction-rows" style="width:100%"> <thead> <tr> - <td class="hidden"></td> <td class="bold">${locale.getString("transactions.import.status")}</td> <td class="bold">${locale.getString("transaction.new.label.date")}</td> <td class="bold">${locale.getString("transaction.new.label.category")}</td> @@ -187,6 +186,14 @@ </#list> </tbody> </table> + + <div class="hidden"> + <#list csvTransactions as csvTransaction> + <form name="NewTransactionInPlace" id="newTransactionInPlace_${csvTransaction?index}" method="POST" action="<@s.url '/transactionImport/' + csvTransaction?index + '/newTransactionInPlace'/>" data-index="${csvTransaction?index}"> + <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> + </form> + </#list> + </div> </div> <@newTransactionMacros.insertNameSuggestions/> @@ -194,11 +201,6 @@ <#macro renderCsvTransaction csvTransaction index> <tr class="transaction-import-row <#if csvTransaction.getStatus().name() == 'SKIPPED'>transaction-import-row-skipped</#if>" id="transaction-import-row-${index}"> - <td class="hidden"> - <form name="NewTransactionInPlace" id="newTransactionInPlace_${index}" method="POST" action="<@s.url '/transactionImport/' + index + '/newTransactionInPlace'/>" data-index="${index}"> - <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> - </form> - </td> <td data-order="${locale.getString(csvTransaction.getStatus().getLocalizationKey())}" data-search="${locale.getString(csvTransaction.getStatus().getLocalizationKey())}"><@statusBanner csvTransaction.getStatus()/></td> <td data-order="${csvTransaction.getDate()}" data-search="${csvTransaction.getDate()}">${csvTransaction.getDate()}</td> <td data-order="${csvTransaction.getCategory().getName()}" data-search="${csvTransaction.getCategory().getName()}"> diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java index 29fce9d7433878e254bb4750a9d6612fc763d57c..0d79a7a2da384005c757e09f9a9a00b2d088787e 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java @@ -655,23 +655,23 @@ class CsvImportTest extends SeleniumTestBase { final List<WebElement> columns = row.findElements(By.tagName("td")); - assertThat(columns.get(1).findElements(By.cssSelector(".banner.background-" + statusColor))) + assertThat(columns.get(0).findElements(By.cssSelector(".banner.background-" + statusColor))) .hasSize(1); - assertThat(columns.get(2).getText()) + assertThat(columns.get(1).getText()) .isEqualTo(date); - final WebElement categoryCircle = columns.get(3).findElement(By.className("category-circle")); + final WebElement categoryCircle = columns.get(2).findElement(By.className("category-circle")); categoryName = categoryName.substring(0, 1).toUpperCase(); assertThat(categoryCircle.findElement(By.tagName("span"))).hasFieldOrPropertyWithValue("text", categoryName); - assertThat(columns.get(4).findElement(By.name("name")).getAttribute("value")) + assertThat(columns.get(3).findElement(By.name("name")).getAttribute("value")) .isEqualTo(name); - assertThat(columns.get(5).findElement(By.name("description")).getAttribute("value")) + assertThat(columns.get(4).findElement(By.name("description")).getAttribute("value")) .isEqualTo(description); - assertThat(columns.get(6).getText()) + assertThat(columns.get(5).getText()) .isEqualTo(amount); } } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 4ea8b6947ec190dca48d33d467179e565eb0ad9f..bffc2debd5a8809ff83669d747cf9af9be1e3eba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ARG APP_DIR=/BudgetMaster RUN mkdir -p $APP_DIR RUN mkdir -p /root/.Deadlocker/BudgetMaster -COPY BudgetMasterServer/build/2.17.0/BudgetMasterServer-v2.17.0.jar /BudgetMaster/BudgetMaster.jar +COPY BudgetMasterServer/build/2.17.1/BudgetMasterServer-v2.17.1.jar /BudgetMaster/BudgetMaster.jar COPY BudgetMasterServer/src/main/resources/config/templates/settings-docker.properties /root/.Deadlocker/BudgetMaster/settings.properties RUN echo "server.port=9000" > ~/.Deadlocker/BudgetMaster/settings.properties diff --git a/README.md b/README.md index c3949ee03a11c000c2fcc1bd52ea02802923566b..17f7918b49338133ef6058c109960eadc7fc354e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Manage your monthly budget easily with BudgetMaster - __start:__ 17.12.16 -- __current release:__ v2.17.0 (47) from 05.10.24 +- __current release:__ v2.17.1 (48) from 14.10.24 ## Key Features - Keep your data private - Host your own BudgetMaster server or use it in standalone mode. All data remains on your machines. diff --git a/pom.xml b/pom.xml index 40a831d73318e965704602964ff96b5b4f20466a..b161e0d8996160ab1d3f7e37d1df8b7a119dc044 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ <groupId>de.deadlocker8</groupId> <artifactId>BudgetMaster</artifactId> <packaging>pom</packaging> - <version>2.17.0</version> + <version>2.17.1</version> <name>BudgetMaster</name> <modules> @@ -50,7 +50,7 @@ <app.versionDate>${maven.build.timestamp}</app.versionDate> <maven.build.timestamp.format>dd.MM.yy</maven.build.timestamp.format> - <app.versionCode>47</app.versionCode> + <app.versionCode>48</app.versionCode> <app.author>Robert Goldmann</app.author> <testcontainer.version>1.20.2</testcontainer.version>