From fcc2c00d86bf6b5f8acc5822b5987066f67fdc32 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 28 Apr 2021 22:50:48 +0200 Subject: [PATCH] #576 - show errors from import process on results page --- .../database/DatabaseParser_v4.java | 1 - .../settings/SettingsController.java | 1 + .../resources/languages/base_de.properties | 1 + .../resources/languages/base_en.properties | 1 + src/main/resources/static/js/charts.js | 1 - src/main/resources/static/js/import.js | 2 ++ .../templates/settings/importResult.ftl | 30 ++++++++++++++++++- .../templates/settings/importStepOne.ftl | 4 +-- 8 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v4.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v4.java index 8d42ca9ba..2f333ca43 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v4.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v4.java @@ -51,7 +51,6 @@ public class DatabaseParser_v4 extends DatabaseParser_v3 { final JsonObject transactionObject = currentTransaction.getAsJsonObject(); - int amount = transactionObject.get("amount").getAsInt(); String name = transactionObject.get("name").getAsString(); String description = transactionObject.get("description").getAsString(); diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index a5489c42b..9583bdc42 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -318,6 +318,7 @@ public class SettingsController extends BaseController final List<ImportResultItem> importResultItems = importService.importDatabase(database, accountMatchList, importTemplates, importCharts); model.addAttribute("importResultItems", importResultItems); + model.addAttribute("errorMessages", importService.getCollectedErrorMessages()); return "settings/importResult"; } diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index bb74c87f8..1d190da3a 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -129,6 +129,7 @@ info.text.database.delete=Zur Bestätigung gib folgenden Code ein:\t{0} info.title.database.import.dialog=Datenbank importieren info.database.import=Folgende Daten werden importiert info.database.import.result=Import abgeschlossen +info.database.import.result.errors=Aufgetretene Fehler info.database.import.match.accounts=Konten zuordnen info.database.import.source=Buchungen aus info.database.import.destination=importieren in diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index b654fcc14..e98fdc8c7 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -129,6 +129,7 @@ info.text.database.delete=Please enter the following code for verification:\t{0} info.title.database.import.dialog=Import database info.database.import=The following data will be imported info.database.import.result=Import completed +info.database.import.result.errors=Errors during import info.database.import.match.accounts=Assign accounts info.database.import.source=Import transactions from info.database.import.destination=to diff --git a/src/main/resources/static/js/charts.js b/src/main/resources/static/js/charts.js index d2103d41e..a832f062a 100644 --- a/src/main/resources/static/js/charts.js +++ b/src/main/resources/static/js/charts.js @@ -4,7 +4,6 @@ let chartPickerEndDate; $(document).ready(function() { - if($("#chart-script").length) { let editor = CodeMirror.fromTextArea(document.getElementById('chart-script'), { diff --git a/src/main/resources/static/js/import.js b/src/main/resources/static/js/import.js index 5fff9ce76..9cdd9e330 100644 --- a/src/main/resources/static/js/import.js +++ b/src/main/resources/static/js/import.js @@ -23,6 +23,8 @@ $(document).ready(function() let modalInstance = M.Modal.getInstance(modalElement); modalInstance.open(); }); + + $('.collapsible').collapsible(); }); function validateForm() diff --git a/src/main/resources/templates/settings/importResult.ftl b/src/main/resources/templates/settings/importResult.ftl index 3e6d1e1bc..586ac4c76 100644 --- a/src/main/resources/templates/settings/importResult.ftl +++ b/src/main/resources/templates/settings/importResult.ftl @@ -4,6 +4,7 @@ <@header.globals/> <@header.header "BudgetMaster - ${locale.getString('settings.database.import')}"/> <#import "/spring.ftl" as s> + <@header.style "collapsible"/> </head> <@header.body> <#import "../helpers/navbar.ftl" as navbar> @@ -26,7 +27,7 @@ <div class="container"> <div class="row"> <div class="col s10 offset-s1 m8 offset-m2 l6 offset-l3"> - <table> + <table class="bordered"> <#list importResultItems as item> <tr> <td><i class="material-icons left">${item.getEntityType().getIcon()}</i> @@ -40,6 +41,33 @@ </div> </div> + <#if errorMessages?has_content> + <div class="container"> + <div class="row"> + <div class="col s12"> + <ul class="collapsible"> + <li> + <div class="collapsible-header bold"> + <i class="fas fa-exclamation-triangle text-red"></i> + ${locale.getString("info.database.import.result.errors")} + </div> + <div class="collapsible-body"> + <table class="bordered"> + <#list errorMessages as error> + <tr> + <td><i class="fas fa-exclamation-triangle text-red"></i></td> + <td>${error}</td> + </tr> + </#list> + </table> + </div> + </li> + </ul> + </div> + </div> + </div> + </#if> + <div class="container"> <div class="row"> <div class="col s12 center-align"> diff --git a/src/main/resources/templates/settings/importStepOne.ftl b/src/main/resources/templates/settings/importStepOne.ftl index 6e33b7d88..46c030611 100644 --- a/src/main/resources/templates/settings/importStepOne.ftl +++ b/src/main/resources/templates/settings/importStepOne.ftl @@ -28,8 +28,8 @@ <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> <div class="row"> - <div class="col s10 offset-s1 m8 offset-m2 l6 offset-l3"> - <table> + <div class="col s12 m10 offset-m1 l10 offset-l1 xl8 offset-xl2"> + <table class="bordered"> <#list database.getNumberOfEntitiesByType() as entityType, numberOfItems> <tr> <td> -- GitLab