From 6015fe19372a8b55ba8ccdb66279b276450840d0 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 18 Jul 2021 11:29:22 +0200
Subject: [PATCH] #585 - dynamically show chart group type buttons

---
 .../budgetmaster/charts/ChartController.java  |  1 +
 .../budgetmaster/charts/ChartGroupType.java   | 20 +++++++++++++++----
 .../resources/languages/base_de.properties    |  4 ++++
 .../resources/languages/base_en.properties    |  4 ++++
 .../resources/templates/charts/charts.ftl     | 20 ++++++++++++++-----
 5 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
index d5b5bd1a7..784975cab 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
@@ -67,6 +67,7 @@ public class ChartController extends BaseController
 		model.addAttribute("chartSettings", defaultChartSettings);
 		model.addAttribute("charts", charts);
 		model.addAttribute("displayTypes", ChartDisplayType.values());
+		model.addAttribute("groupTypes", ChartGroupType.values());
 		return "charts/charts";
 	}
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartGroupType.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartGroupType.java
index 59d280591..b1f7e24ad 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartGroupType.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartGroupType.java
@@ -4,17 +4,29 @@ import de.deadlocker8.budgetmaster.utils.LocalizedEnum;
 
 public enum ChartGroupType implements LocalizedEnum
 {
-	NONE("none"),
-	MONTH("month"),
-	YEAR("year");
+	NONE("far fa-calendar-times", "none"),
+	MONTH("far fa-calendar", "month"),
+	YEAR("far fa-calendar-alt", "year");
 
+	private final String icon;
 	private final String localizationKey;
 
-	ChartGroupType(String localizationKey)
+	ChartGroupType(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 da24580db..ee2ad2d12 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -570,3 +570,7 @@ chart.display.type.pie=Torte
 chart.display.type.bar=Balken
 chart.display.type.line=Linien
 chart.display.type.custom=Benutzerdefiniert
+
+chart.group.type.none=keine
+chart.group.type.month=Monat
+chart.group.type.year=Jahr
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index 5651efba6..f1be92b2c 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -569,3 +569,7 @@ chart.display.type.pie=Pie
 chart.display.type.bar=Bar
 chart.display.type.line=Line
 chart.display.type.custom=Custom
+
+chart.group.type.none=None
+chart.group.type.month=Month
+chart.group.type.year=Year
diff --git a/src/main/resources/templates/charts/charts.ftl b/src/main/resources/templates/charts/charts.ftl
index 1dfeca7ca..31b18b9d2 100644
--- a/src/main/resources/templates/charts/charts.ftl
+++ b/src/main/resources/templates/charts/charts.ftl
@@ -33,7 +33,17 @@
                         <div class="row hide-on-small-and-down">
                             <div class="col s12 center-align">
                                 <#list displayTypes as displayType>
-                                    <@chartDisplayTypeButton displayType/>
+                                    <@chartTypeButton displayType/>
+                                </#list>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="container">
+                        <div class="row hide-on-small-and-down">
+                            <div class="col s12 center-align">
+                                <#list groupTypes as groupType>
+                                    <@chartTypeButton groupType/>
                                 </#list>
                             </div>
                         </div>
@@ -312,12 +322,12 @@
     </@stepCollapsible>
 </#macro>
 
-<#macro chartDisplayTypeButton displayType>
+<#macro chartTypeButton item>
     <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())}
+        <#if item.hasFontAwesomeIcon()>
+            <i class="${item.getIcon()} left"></i> ${locale.getString(item.getLocalizationKey())}
         <#else>
-            <i class="material-icons left">${displayType.getIcon()}</i> ${locale.getString(displayType.getLocalizationKey())}
+            <i class="material-icons left">${item.getIcon()}</i> ${locale.getString(item.getLocalizationKey())}
         </#if>
     </a>
 </#macro>
-- 
GitLab