From 2977ecfa6e9ab34e2d9ea867abac8cf246bedc11 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 13 Feb 2022 16:51:19 +0100
Subject: [PATCH] Fixed #673 - split default and custom chart tables

---
 .../budgetmaster/charts/ChartController.java  |  5 +-
 .../resources/languages/base_de.properties    |  2 +
 .../resources/languages/base_en.properties    |  2 +
 src/main/resources/static/css/charts.css      |  4 ++
 .../resources/templates/charts/manage.ftl     | 52 ++++++++++++-------
 5 files changed, 46 insertions(+), 19 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
index 1cc9c8a13..37866d98d 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
@@ -45,6 +45,8 @@ public class ChartController extends BaseController
 		public static final String TRANSACTION_DATA = "transactionData";
 		public static final String DISPLAY_TYPES = "displayTypes";
 		public static final String GROUP_TYPES = "groupTypes";
+		public static final String CUSTOM_CHARTS = "customCharts";
+		public static final String DEFAULT_CHARTS = "defaultCharts";
 	}
 
 	private static class ReturnValues
@@ -150,7 +152,8 @@ public class ChartController extends BaseController
 	@GetMapping("/manage")
 	public String manage(Model model)
 	{
-		model.addAttribute(ModelAttributes.ALL_ENTITIES, chartService.getAllEntitiesAsc());
+		model.addAttribute(ModelAttributes.DEFAULT_CHARTS, chartService.getRepository().findAllByType(ChartType.DEFAULT));
+		model.addAttribute(ModelAttributes.CUSTOM_CHARTS, chartService.getRepository().findAllByType(ChartType.CUSTOM));
 		return ReturnValues.MANAGE;
 	}
 
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 9652e9eeb..5c05dfed0 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -561,6 +561,8 @@ charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Dur
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Durchschnittliche monatliche Einnahmen/Ausgaben
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Einnahmen", "traceName2": "Ausgaben"', "axisY": "Durchschnittlicher monatlicher Betrag in"'}
 
+charts.custom=Eigene Diagramme
+charts.default=Standarddiagramme
 chart.new.label.name=Name
 chart.new.label.script=Script
 chart.new.info.default=Diese mitgelieferte Diagrammvorlage kann nicht überschrieben werden, aber du kannst dir den Code ansehen.
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index 69067d821..ffeb40b57 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -561,6 +561,8 @@ charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Ave
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Average monthly incomes/expenditures
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Incomes", "traceName2": "Expenditures"', "axisY": "Average monthly amount in"'}
 
+charts.custom=Custom Charts
+charts.default=Default Charts
 chart.new.label.name=Name
 chart.new.label.script=Script
 chart.new.info.default=This default chart can''t be overwritten but you can have a look on how it''s implemented.
diff --git a/src/main/resources/static/css/charts.css b/src/main/resources/static/css/charts.css
index 5f67ce9a5..785bb21f0 100644
--- a/src/main/resources/static/css/charts.css
+++ b/src/main/resources/static/css/charts.css
@@ -97,4 +97,8 @@
 #filterActiveBadge {
     float: none;
     margin-left: 1rem;
+}
+
+.charts-default-margin {
+    margin-top: 2rem;
 }
\ No newline at end of file
diff --git a/src/main/resources/templates/charts/manage.ftl b/src/main/resources/templates/charts/manage.ftl
index 2cea7f8e6..4147e3eb8 100644
--- a/src/main/resources/templates/charts/manage.ftl
+++ b/src/main/resources/templates/charts/manage.ftl
@@ -3,6 +3,7 @@
         <#import "../helpers/header.ftl" as header>
         <@header.globals/>
         <@header.header "BudgetMaster - ${locale.getString('menu.charts')}"/>
+        <@header.style "charts"/>
         <#import "/spring.ftl" as s>
     </head>
     <@header.body>
@@ -24,43 +25,58 @@
                     <@chartFunctions.buttons/>
                     <br>
                     <div class="container">
+                        <div class="section center-align">
+                            <div class="headline-small">${locale.getString("charts.custom")}</div>
+                        </div>
+
+                        <table class="bordered">
+                            <thead>
+                                <tr>
+                                    <th>${locale.getString("chart.new.label.name")}</th>
+                                    <th>${locale.getString("chart.actions")}</th>
+                                </tr>
+                            </thead>
+                            <#list customCharts as chart>
+                                <#assign chartName=chartFunctions.getChartName(chart)>
+                                <tr>
+                                    <td>${chartName}</td>
+                                    <td>
+                                        <@header.buttonFlat url='/charts/' + chart.ID?c + '/edit' icon='edit' localizationKey='' classes="no-padding text-default"/>
+                                        <@header.buttonFlat url='/charts/' + chart.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default button-request-delete-chart" isDataUrl=true/>
+                                    </td>
+                                </tr>
+                            </#list>
+                        </table>
+                        <#if customCharts?size == 0>
+                            <div class="center-align charts-default-margin">${locale.getString("placeholder")}</div>
+                            <br>
+                        </#if>
+
+                        <div class="section center-align charts-default-margin">
+                            <div class="headline-small">${locale.getString("charts.default")}</div>
+                        </div>
+
                         <table class="bordered">
                             <thead>
                                 <tr>
                                     <th>${locale.getString("chart.new.label.name")}</th>
                                     <th>${locale.getString("chart.display.type")}</th>
                                     <th>${locale.getString("chart.group.type")}</th>
-                                    <th>${locale.getString("chart.type")}</th>
                                     <th>${locale.getString("chart.actions")}</th>
                                 </tr>
                             </thead>
-                            <#list charts as chart>
+                            <#list defaultCharts as chart>
                                 <#assign chartName=chartFunctions.getChartName(chart)>
                                 <tr>
                                     <td>${chartName}</td>
                                     <td><@chartFunctions.iconForItem item=chart.getDisplayType()/></td>
                                     <td><@chartFunctions.iconForItem item=chart.getGroupType()/></td>
                                     <td>
-                                        <#if chart.getType().name() == "DEFAULT">
-                                            <a class="no-padding text-default"><i class="material-icons left">lock</i></a>
-                                        <#else>
-                                            <a class="no-padding text-default"><i class="material-icons left">person</i></a>
-                                        </#if>
-                                    </td>
-                                    <td>
-                                        <#if (chart.getType().name() == "CUSTOM")>
-                                            <@header.buttonFlat url='/charts/' + chart.ID?c + '/edit' icon='edit' localizationKey='' classes="no-padding text-default"/>
-                                            <@header.buttonFlat url='/charts/' + chart.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default button-request-delete-chart" isDataUrl=true/>
-                                        <#else>
-                                            <@header.buttonFlat url='/charts/' + chart.ID?c + '/edit' icon='visibility' localizationKey='' classes="no-padding text-default"/>
-                                        </#if>
+                                        <@header.buttonFlat url='/charts/' + chart.ID?c + '/edit' icon='visibility' localizationKey='' classes="no-padding text-default"/>
                                     </td>
                                 </tr>
                             </#list>
                         </table>
-                        <#if charts?size == 0>
-                            <div class="headline center-align">${locale.getString("placeholder")}</div>
-                        </#if>
                     </div>
                 </@header.content>
             </div>
-- 
GitLab