From ed1d8913af9478515e0a821bb88f2af4184975ad Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 18 Jul 2021 11:08:01 +0200 Subject: [PATCH] #585 - dynamically show chart display type buttons --- .../budgetmaster/charts/ChartController.java | 1 + .../budgetmaster/charts/ChartDisplayType.java | 22 +++++++++--- .../resources/languages/base_de.properties | 7 +++- .../resources/languages/base_en.properties | 7 +++- .../resources/templates/charts/charts.ftl | 34 ++++++++----------- 5 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java index 561848656..d5b5bd1a7 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java @@ -66,6 +66,7 @@ public class ChartController extends BaseController model.addAttribute("chartSettings", defaultChartSettings); model.addAttribute("charts", charts); + model.addAttribute("displayTypes", ChartDisplayType.values()); return "charts/charts"; } diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartDisplayType.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartDisplayType.java index c5cdeb499..de2470534 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartDisplayType.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartDisplayType.java @@ -4,18 +4,30 @@ import de.deadlocker8.budgetmaster.utils.LocalizedEnum; public enum ChartDisplayType implements LocalizedEnum { - PIE("pie"), - BAR("bar"), - LINE("line"), - CUSTOM("custom"); + PIE("fas fa-chart-pie", "pie"), + BAR("fas fa-chart-bar", "bar"), + LINE("fas fa-chart-line", "line"), + CUSTOM("insights", "custom"); + private final String icon; private final String localizationKey; - ChartDisplayType(String localizationKey) + ChartDisplayType(String icon, String localizationKey) { + this.icon = icon; this.localizationKey = localizationKey; } + public boolean hasFontAwesomeIcon() + { + return icon.startsWith("fa"); + } + + public String getIcon() + { + return icon; + } + @Override public String getLocalizationKey() { diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 8acec9797..da24580db 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -564,4 +564,9 @@ import.entity.template=Alle Vorlagen werden nacheinander importiert und dabei di import.entity.image=Icons werden automatisch mit den zugehörigen Konten, Vorlagen und Kategorien importiert. import.entity.chart=Es werden nur die benutzerdefinierten Diagramme importiert.<br>Der Import von Diagrammen ist optional. -copied=Kopiert! \ No newline at end of file +copied=Kopiert! + +chart.display.type.pie=Torte +chart.display.type.bar=Balken +chart.display.type.line=Linien +chart.display.type.custom=Benutzerdefiniert diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index 99c75ad2d..5651efba6 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -563,4 +563,9 @@ import.entity.template=All templates will be imported one by one, reassigning th import.entity.image=Icons are automatically imported with their associated accounts, templates and categories. import.entity.chart=Only user-defined charts will be imported.<br>The import of charts is optional. -copied=Copied! \ No newline at end of file +copied=Copied! + +chart.display.type.pie=Pie +chart.display.type.bar=Bar +chart.display.type.line=Line +chart.display.type.custom=Custom diff --git a/src/main/resources/templates/charts/charts.ftl b/src/main/resources/templates/charts/charts.ftl index 018ae6089..1dfeca7ca 100644 --- a/src/main/resources/templates/charts/charts.ftl +++ b/src/main/resources/templates/charts/charts.ftl @@ -31,24 +31,10 @@ <div class="container"> <div class="row hide-on-small-and-down"> - <div class="col s12 center-align "> - <a class="waves-effect waves-light btn-large background-grey text-black"><i class="fas fa-chart-pie left"></i> Pie</a> - <a class="waves-effect waves-light btn-large background-green text-black"><i class="fas fa-chart-bar left"></i> Bar</a> - <a class="waves-effect waves-light btn-large background-grey text-black"><i class="fas fa-chart-line left"></i> Line</a> - <a class="waves-effect waves-light btn-large background-grey text-black"><i class="material-icons left">insights</i> Custom</a> - </div> - </div> - - <div class="row hide-on-med-and-up"> - <div class="col s12 center-align"> - <a class="waves-effect waves-light btn background-grey text-black"><i class="fas fa-chart-pie left"></i> Pie</a> - <a class="waves-effect waves-light btn background-green text-black"><i class="fas fa-chart-bar left"></i> Bar</a> - </div> - </div> - <div class="row hide-on-med-and-up"> - <div class="col s12 center-align"> - <a class="waves-effect waves-light btn background-grey text-black"><i class="fas fa-chart-line left"></i> Line</a> - <a class="waves-effect waves-light btn background-grey text-black"><i class="material-icons left">insights</i> Custom</a> + <div class="col s12 center-align"> + <#list displayTypes as displayType> + <@chartDisplayTypeButton displayType/> + </#list> </div> </div> </div> @@ -324,4 +310,14 @@ <@transactionsMacros.buttonFilter chartSettings.getFilterConfiguration().isActive()/> </div> </@stepCollapsible> -</#macro> \ No newline at end of file +</#macro> + +<#macro chartDisplayTypeButton displayType> + <a class="waves-effect waves-light btn-large background-grey text-black"> + <#if displayType.hasFontAwesomeIcon()> + <i class="${displayType.getIcon()} left"></i> ${locale.getString(displayType.getLocalizationKey())} + <#else> + <i class="material-icons left">${displayType.getIcon()}</i> ${locale.getString(displayType.getLocalizationKey())} + </#if> + </a> +</#macro> -- GitLab