From 90a7c2f4f98117aec03049b6e72d546d529dfede Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 25 Jul 2021 12:43:09 +0200
Subject: [PATCH] #585 - initially select chart preview

---
 .../budgetmaster/charts/ChartSettings.java    |  4 ++--
 src/main/resources/static/js/charts.js        | 24 ++++++++++---------
 .../resources/templates/charts/charts.ftl     |  4 ++++
 3 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartSettings.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartSettings.java
index d4177402a..aac9e2d9f 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartSettings.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartSettings.java
@@ -56,12 +56,12 @@ public class ChartSettings
 		this.groupType = groupType;
 	}
 
-	public int getChartID()
+	public Integer getChartID()
 	{
 		return chartID;
 	}
 
-	public void setChartID(int chartID)
+	public void setChartID(Integer chartID)
 	{
 		this.chartID = chartID;
 	}
diff --git a/src/main/resources/static/js/charts.js b/src/main/resources/static/js/charts.js
index ba94c935e..896d50c8a 100644
--- a/src/main/resources/static/js/charts.js
+++ b/src/main/resources/static/js/charts.js
@@ -81,13 +81,13 @@ $(document).ready(function()
     {
         toggleChartTypeButtons('button-display-type', this);
         hideGroupTypeButtonsIfOnlyOneDistinctGroup();
-        filterChartPreviews();
+        filterChartPreviews(-1);
     });
 
     $('.button-group-type').click(function()
     {
         toggleChartTypeButtons('button-group-type', this);
-        filterChartPreviews();
+        filterChartPreviews(-1);
     });
 
     $('.chart-preview-column').click(function()
@@ -115,12 +115,13 @@ $(document).ready(function()
         applyFilter();
     });
 
-    $('#buttonShowChartSettings').click(function(){
+    $('#buttonShowChartSettings').click(function()
+    {
         document.getElementsByName('NewChartSettings')[0].classList.toggle('hidden', false);
         document.getElementById('buttonShowChartSettings').classList.toggle('hidden', true);
     });
 
-    filterChartPreviews();
+    filterChartPreviews(selectChartID);
 
     let showEditSettingsButton = document.getElementsByName('NewChartSettings')[0].classList.contains('hidden');
     document.getElementById('buttonShowChartSettings').classList.toggle('hidden', !showEditSettingsButton);
@@ -266,7 +267,7 @@ function toggleChartTypeButtons(styleClassName, item)
 function hideGroupTypeButtonsIfOnlyOneDistinctGroup()
 {
     let displayTypeName = document.querySelector('.button-display-type.active').dataset.value;
-    let chartsWithCurrentDisplayType = document.querySelectorAll('.chart-preview-column[data-display-type="' + displayTypeName +'"]');
+    let chartsWithCurrentDisplayType = document.querySelectorAll('.chart-preview-column[data-display-type="' + displayTypeName + '"]');
 
     let groupTypes = new Set();
     for(let i = 0; i < chartsWithCurrentDisplayType.length; i++)
@@ -278,7 +279,7 @@ function hideGroupTypeButtonsIfOnlyOneDistinctGroup()
     document.getElementById('chart-group-type-buttons').classList.toggle('hidden', hasOnlyOneDistinctGroupType);
 }
 
-function filterChartPreviews()
+function filterChartPreviews(initiallySelectedChartID)
 {
     let displayTypeName = document.querySelector('.button-display-type.active').dataset.value;
     let groupTypeName = document.querySelector('.button-group-type.active').dataset.value;
@@ -308,16 +309,17 @@ function filterChartPreviews()
         }
     }
 
-    unsetActiveChartPreview();
+    unsetActiveChartPreview(initiallySelectedChartID);
     toggleCustomChartButton(displayTypeName === 'CUSTOM');
 }
 
-function unsetActiveChartPreview()
+function unsetActiveChartPreview(initiallySelectedChartID)
 {
-    let allChartPreviews = document.getElementsByClassName('chart-preview');
-    for(let i = 0; i < allChartPreviews.length; i++)
+    let allChartPreviewColumns = document.getElementsByClassName('chart-preview-column');
+    for(let i = 0; i < allChartPreviewColumns.length; i++)
     {
-        allChartPreviews[i].classList.toggle('active', false);
+        let column = allChartPreviewColumns[i];
+        column.querySelector('.chart-preview').classList.toggle('active', column.dataset.id === initiallySelectedChartID);
     }
 
     document.getElementsByName('chartID')[0].value = '';
diff --git a/src/main/resources/templates/charts/charts.ftl b/src/main/resources/templates/charts/charts.ftl
index e28600489..a31298d04 100644
--- a/src/main/resources/templates/charts/charts.ftl
+++ b/src/main/resources/templates/charts/charts.ftl
@@ -68,6 +68,10 @@
                         </div>
                         <input type="hidden" name="chartID" value="">
 
+                        <script>
+                            selectChartID="${chartSettings.getChartID()!-1}";
+                        </script>
+
                         <@dateSelect/>
 
                         <@filterOptions/>
-- 
GitLab