diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/Database.java b/src/main/java/de/deadlocker8/budgetmaster/database/Database.java index 6a10a749a69b9a4778b5abe30e8320e55f07c335..5baf21d552da9b58fc99af6802836065f284e6b1 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 5c1db78f09b9446fa9fa2ff03f4028c3a971d68c..386e2a641f5d6d13f6ec3289578e9e2bc0f2ce79 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 6f53a168abe3956e0a3bca6aeb2751b4fae5b0f1..cadacbdbc37846a78819d73a8d67ee60c193e948 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 3e855247f2e21d23444584bb6641f5caca50b085..f3dc35b785ce43af4ae9bc6a775b663c746c62b2 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 ad5768c8c84f3ba5a4c6b9eac38683e1bde160ad..62d0b3c52974b4fff696fa3d8df0b075f83757be 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 87ea2a556496b9edef3f9dd0f193a859f6177df6..e4f1b4351c075f3ede549bb86745f05a18e453a0 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()">