From 3cd724afe35ef9b4b268069670bd127d386c6d9f Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 22 Jun 2019 20:42:40 +0200 Subject: [PATCH] Fixed #451 - categories page: show number of times used for each category --- .../budgetmaster/services/HelpersService.java | 6 ++++++ .../transactions/TransactionRepository.java | 3 +++ src/main/resources/languages/_de.properties | 2 ++ src/main/resources/languages/_en.properties | 2 ++ .../resources/templates/categories/categories.ftl | 12 +++++++++++- .../unit/database/DatabaseImportTest.java | 6 ++++++ 6 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java index 8cc11d4de..d90b807a0 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java @@ -1,6 +1,7 @@ package de.deadlocker8.budgetmaster.services; import de.deadlocker8.budgetmaster.accounts.AccountService; +import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatch; import de.deadlocker8.budgetmaster.reports.Budget; import de.deadlocker8.budgetmaster.settings.Settings; @@ -282,4 +283,9 @@ public class HelpersService return DateTime.parse(cookieDate, DateTimeFormat.forPattern("dd.MM.yy").withLocale(getSettings().getLanguage().getLocale())); } } + + public Long getUsageCountForCategory(Category category) + { + return transactionService.getRepository().countByCategory(category); + } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java index 533ab1844..3510a0040 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java @@ -1,5 +1,6 @@ package de.deadlocker8.budgetmaster.transactions; +import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.tags.Tag; import de.deadlocker8.budgetmaster.accounts.Account; import org.joda.time.DateTime; @@ -18,6 +19,8 @@ public interface TransactionRepository extends JpaRepository<Transaction, Intege List<Transaction> findAllByAccount(Account account); + Long countByCategory(Category category); + List<Transaction> findAllByTagsContaining(Tag tag); @Query(value = "SELECT SUM(t.amount) FROM `transaction` as t WHERE t.account_id = ?1 AND t.transfer_account_id IS NULL AND t.date BETWEEN ?2 AND ?3", nativeQuery = true) diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 92666c96e..dd25b1651 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -141,6 +141,8 @@ menu.update=Update verf menu.search.results=Suchergebnisse ({0}) category.new.label.name=Name +categories.usages=Verweise +categories.actions=Aktionen settings.password=Passwort settings.password.confirmation=Passwort Wiederholung diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 63d3ce081..6b23e2279 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -142,6 +142,8 @@ menu.update=Update available menu.search.results=Search results ({0}) category.new.label.name=Name +categories.usages=Usages +categories.actions=Actions settings.password=Password settings.password.confirmation=Password Confirmation diff --git a/src/main/resources/templates/categories/categories.ftl b/src/main/resources/templates/categories/categories.ftl index cd910707d..ea3e30143 100644 --- a/src/main/resources/templates/categories/categories.ftl +++ b/src/main/resources/templates/categories/categories.ftl @@ -24,8 +24,17 @@ <br> <div class="container"> <table class="bordered"> + <thead> + <tr> + <th></th> + <th>${locale.getString("category.new.label.name")}</th> + <th>${locale.getString("categories.usages")}</th> + <th>${locale.getString("categories.actions")}</th> + </tr> + </thead> <#list categories as category> <#assign categoryName=categoriesFunctions.getCategoryName(category)> + <#assign usageCount=helpers.getUsageCountForCategory(category)/> <tr> <td> <div class="category-circle" style="background-color: ${category.color}"> @@ -34,7 +43,8 @@ </span> </div> </td> - <td>${categoryName}</td> + <td>${categoryName} </td> + <td>${usageCount}</td> <td> <a href="<@s.url '/categories/${category.ID?c}/edit'/>" class="btn-flat no-padding text-color"><i class="material-icons left">edit</i></a> <#if (category.getType().name() == "CUSTOM")> diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java index 16a39b397..13dccf4e3 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java @@ -226,6 +226,12 @@ public class DatabaseImportTest return null; } + @Override + public Long countByCategory(Category category) + { + return null; + } + @Override public Page<Transaction> findAll(Specification<Transaction> specification, Pageable pageable) { -- GitLab