diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/EntityType.java b/src/main/java/de/deadlocker8/budgetmaster/services/EntityType.java index 867f77f67d501ec5b7e75de96aee5622d965a143..e1f3d8e8eb284a618b60a1bc76faab528dfd95a8 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 0000000000000000000000000000000000000000..a8fd65ab646fb7df17c5707b69cfad67dd90ae97 --- /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 10985ab6a3358d2681dde9c763950461816d5f49..a2b8c9c054ca332b134eeebbd487c629af535eba 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 7df775cfb9cf2022cc860bff751ff9cdc5b8d050..ac5cf554d5e2a579b7a3730e26dfd6bc886330d8 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 29b9d04ac2adf45ff77824fab456f0eb4327bb5f..7613b905aa8c543f3e51ee5839ecb4da148a5184 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 46562f0e39280ec17c9bc99f2327bf5a20672fbe..8a70e510679337f6f0e1a715611372c9a89c1452 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 0000000000000000000000000000000000000000..f3553d6cefd8b47bb1252caa7d73da07fe3b2da8 --- /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>