From 686fa3edf94d1f8e79b95fe2f34e464f4d5bb6b9 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 12 Jun 2021 18:31:57 +0200 Subject: [PATCH] #602 - new page for tags --- .../budgetmaster/services/EntityType.java | 1 + .../budgetmaster/tags/TagController.java | 30 ++++++++++ .../budgetmaster/utils/Mappings.java | 1 + .../resources/languages/base_de.properties | 1 + .../resources/languages/base_en.properties | 1 + .../resources/templates/helpers/navbar.ftl | 1 + src/main/resources/templates/tags/tags.ftl | 55 +++++++++++++++++++ 7 files changed, 90 insertions(+) create mode 100644 src/main/java/de/deadlocker8/budgetmaster/tags/TagController.java create mode 100644 src/main/resources/templates/tags/tags.ftl diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/EntityType.java b/src/main/java/de/deadlocker8/budgetmaster/services/EntityType.java index 867f77f67..e1f3d8e8e 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/EntityType.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/EntityType.java @@ -9,6 +9,7 @@ public enum EntityType CHART("show_chart", "background-purple", ImportRequired.OPTIONAL), REPORT("description", "background-green", ImportRequired.NONE), CATEGORY("label", "background-orange", ImportRequired.REQUIRED), + TAGS("local_offer", "background-grey", ImportRequired.NONE), STATISTICS("insert_chart", "background-grey", ImportRequired.NONE), SETTINGS("settings", "background-red", ImportRequired.NONE), IMAGE("image", "background-grey", ImportRequired.REQUIRED), diff --git a/src/main/java/de/deadlocker8/budgetmaster/tags/TagController.java b/src/main/java/de/deadlocker8/budgetmaster/tags/TagController.java new file mode 100644 index 000000000..a8fd65ab6 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/tags/TagController.java @@ -0,0 +1,30 @@ +package de.deadlocker8.budgetmaster.tags; + +import de.deadlocker8.budgetmaster.controller.BaseController; +import de.deadlocker8.budgetmaster.utils.Mappings; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + + +@Controller +@RequestMapping(Mappings.TAGS) +public class TagController extends BaseController +{ + private final TagService tagService; + + @Autowired + public TagController(TagService tagService) + { + this.tagService = tagService; + } + + @GetMapping + public String tags(Model model) + { + model.addAttribute("tags", tagService.getAllEntitiesAsc()); + return "tags/tags"; + } +} \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/Mappings.java b/src/main/java/de/deadlocker8/budgetmaster/utils/Mappings.java index 10985ab6a..a2b8c9c05 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/Mappings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/Mappings.java @@ -22,4 +22,5 @@ public final class Mappings public static final String TEAPOT = "/418"; public static final String TEMPLATES = "/templates"; public static final String TRANSACTIONS = "/transactions"; + public static final String TAGS = "/tags"; } diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 7df775cfb..ac5cf554d 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -189,6 +189,7 @@ menu.templates=Vorlagen menu.categories=Kategorien menu.charts=Diagramme menu.reports=Berichte +menu.tags=Tags menu.statistics=Statistiken menu.settings=Einstellungen menu.settings.database=Datenbank diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index 29b9d04ac..7613b905a 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -190,6 +190,7 @@ menu.templates=Templates menu.categories=Categories menu.charts=Charts menu.reports=Reports +menu.tags=Tags menu.statistics=Statistics menu.settings=Settings menu.settings.database=Database diff --git a/src/main/resources/templates/helpers/navbar.ftl b/src/main/resources/templates/helpers/navbar.ftl index 46562f0e3..8a70e5106 100644 --- a/src/main/resources/templates/helpers/navbar.ftl +++ b/src/main/resources/templates/helpers/navbar.ftl @@ -15,6 +15,7 @@ <@itemWithIcon "charts" "/charts" locale.getString("menu.charts"), entityType.CHART.getIcon(), entityType.CHART.getColor(), activeID/> <@itemWithIcon "reports", "/reports", locale.getString("menu.reports"), entityType.REPORT.getIcon(), entityType.REPORT.getColor(), activeID/> <@itemWithIcon "categories", "/categories", locale.getString("menu.categories"), entityType.CATEGORY.getIcon(), entityType.CATEGORY.getColor(), activeID/> + <@itemWithIcon "tags", "/tags", locale.getString("menu.tags"), entityType.TAGS.getIcon(), entityType.TAGS.getColor(), activeID/> <@itemWithIcon "statistics", "/statistics", locale.getString("menu.statistics"), entityType.STATISTICS.getIcon(), entityType.STATISTICS.getColor(), activeID/> <@itemWithIcon "settings", "/settings", locale.getString("menu.settings"), entityType.SETTINGS.getIcon(), entityType.SETTINGS.getColor(), activeID/> diff --git a/src/main/resources/templates/tags/tags.ftl b/src/main/resources/templates/tags/tags.ftl new file mode 100644 index 000000000..f3553d6ce --- /dev/null +++ b/src/main/resources/templates/tags/tags.ftl @@ -0,0 +1,55 @@ +<html> + <head> + <#import "../helpers/header.ftl" as header> + <@header.globals/> + <@header.header "BudgetMaster - ${locale.getString('menu.tags')}"/> + <#import "/spring.ftl" as s> + </head> + <@header.body> + <#import "../helpers/navbar.ftl" as navbar> + <@navbar.navbar "tags" settings/> + + <main> + <div class="card main-card background-color"> + <div class="container"> + <div class="section center-align"> + <div class="headline"><i class="material-icons">local_offer</i> ${locale.getString("menu.tags")}</div> + </div> + </div> + + <@header.content> + <div class="container"> + <#if tags?size == 0> + <div class="headline center-align">${locale.getString("placeholder")}</div> + <#else> + <table class="bordered"> + <thead> + <tr> + <th>${locale.getString("category.new.label.name")}</th> + <th>${locale.getString("categories.usages")}</th> + <th>${locale.getString("categories.actions")}</th> + </tr> + </thead> + <#list tags as tag> + <tr> + <td>${tag.getName()} </td> + <td> + <a href="<@s.url '/search?searchCategory=true&searchText=' + tag.getName()/>" class="waves-effect waves-light text-default">?</a> + </td> + <td> + <@header.buttonFlat url='/search?searchCategory=true&searchText=' + tag.getName() icon='search' localizationKey='' classes="no-padding text-default"/> + </td> + </tr> + </#list> + </table> + </#if> + </div> + </@header.content> + </div> + </main> + + <!-- Scripts--> + <#import "../helpers/scripts.ftl" as scripts> + <@scripts.scripts/> + </@header.body> +</html> -- GitLab