From 1c38698bc8465256f6f0970d8eb617bf2811830b Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Fri, 23 Apr 2021 23:03:25 +0200 Subject: [PATCH] #576 - show how many items of each entity will be imported --- .../budgetmaster/database/Database.java | 16 ++++++++++ .../resources/languages/base_de.properties | 3 +- .../resources/languages/base_en.properties | 3 +- src/main/resources/static/css/reports.css | 5 ---- src/main/resources/static/css/style.css | 9 ++++++ .../resources/templates/settings/import.ftl | 29 ++++++++++++++++++- 6 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/Database.java b/src/main/java/de/deadlocker8/budgetmaster/database/Database.java index 6a10a749a..5baf21d55 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/Database.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/Database.java @@ -5,10 +5,13 @@ import de.deadlocker8.budgetmaster.accounts.Account; import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.charts.Chart; import de.deadlocker8.budgetmaster.images.Image; +import de.deadlocker8.budgetmaster.services.EntityType; import de.deadlocker8.budgetmaster.templates.Template; import de.deadlocker8.budgetmaster.transactions.Transaction; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; public class Database { @@ -79,4 +82,17 @@ public class Database { return images; } + + public Map<EntityType, Integer> getNumberOfEntitiesByType() + { + final Map<EntityType, Integer> numberOfEntitiesByType = new LinkedHashMap<>(); + + numberOfEntitiesByType.put(EntityType.CATEGORY, categories.size()); + numberOfEntitiesByType.put(EntityType.ACCOUNT, accounts.size()); + numberOfEntitiesByType.put(EntityType.TRANSACTION, transactions.size()); + numberOfEntitiesByType.put(EntityType.CHART, charts.size()); + numberOfEntitiesByType.put(EntityType.IMAGE, images.size()); + numberOfEntitiesByType.put(EntityType.TEMPLATE, templates.size()); + return numberOfEntitiesByType; + } } \ No newline at end of file diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 5c1db78f0..386e2a641 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -127,7 +127,8 @@ info.title.database.delete=Datenbank löschen info.header.text.database.delete=Soll die Datenbank wirklich unwiderruflich gelöscht werden?<br>Hinweis: Beim Löschen der Datenbank werden alle Buchungen, Kategorien, Konten, Diagramme, Vorlagen und Bilder unwiderruflich gelöscht. info.text.database.delete=Zur Bestätigung gib folgenden Code ein:\t{0} info.title.database.import.dialog=Datenbank importieren -info.subtitle.database.import=Konten zuordnen +info.database.import=Folgende Daten werden importiert +info.database.import.match.accounts=Konten zuordnen info.database.import.source=Buchungen aus info.database.import.destination=importieren in info.database.import.or=oder diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index 6f53a168a..cadacbdbc 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -127,7 +127,8 @@ info.title.database.delete=Delete Database info.header.text.database.delete=Do you really want to delete the database? This can''t be undone.<br>Note: Deleting the database will delete all transactions, categories, accounts, charts, templates and images permanently. info.text.database.delete=Please enter the following code for verification:\t{0} info.title.database.import.dialog=Import database -info.subtitle.database.import=Assign accounts +info.database.import=The following data will be imported +info.database.import.match.accounts=Assign accounts info.database.import.source=Import transactions from info.database.import.destination=to info.database.import.or=or diff --git a/src/main/resources/static/css/reports.css b/src/main/resources/static/css/reports.css index 3e855247f..f3dc35b78 100644 --- a/src/main/resources/static/css/reports.css +++ b/src/main/resources/static/css/reports.css @@ -1,8 +1,3 @@ -.headline-small { - font-size: 1.5rem; - text-transform: initial; -} - .report-checkbox-container { margin-bottom: 0.5rem; display: table; diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index ad5768c8c..62d0b3c52 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -166,6 +166,11 @@ main { color: var(--color-text); } +.headline-small { + font-size: 1.5rem; + text-transform: initial; +} + .headline-advice { color: var(--color-text); opacity: 0.7; @@ -437,6 +442,10 @@ input[type="radio"]:checked + span::after, [type="radio"].with-gap:checked + spa height: 2.6rem; } +.import-entity-name { + margin-left: 1rem; +} + .tooltipped:hover { cursor: pointer; } diff --git a/src/main/resources/templates/settings/import.ftl b/src/main/resources/templates/settings/import.ftl index 87ea2a556..e4f1b4351 100644 --- a/src/main/resources/templates/settings/import.ftl +++ b/src/main/resources/templates/settings/import.ftl @@ -14,9 +14,36 @@ <div class="container"> <div class="section center-align"> <div class="headline">${locale.getString("info.title.database.import.dialog")}</div> - <div>${locale.getString("info.subtitle.database.import")}</div> </div> </div> + + <div class="container"> + <div class="section center-align"> + <div class="headline-small">${locale.getString("info.database.import")}</div> + </div> + </div> + + <div class="container"> + <div class="row"> + <div class="col s10 offset-s1 m8 offset-m2 l6 offset-l3"> + <table> + <#list database.getNumberOfEntitiesByType() as entityType, numberOfItems> + <tr> + <td class="valign-wrapper"><i class="material-icons">${entityType.getIcon()}</i><div class="import-entity-name">${locale.getString(entityType.getLocalizationKey())}</div></td> + <td>${numberOfItems}</td> + </tr> + </#list> + </table> + </div> + </div> + </div> + + <div class="container"> + <div class="section center-align"> + <div class="headline-small">${locale.getString("info.database.import.match.accounts")}</div> + </div> + </div> + <div class="container"> <#import "../helpers/validation.ftl" as validation> <form name="Import" action="<@s.url '/settings/database/import'/>" method="post" onsubmit="return validateForm()"> -- GitLab