From 6397e0c51ac5cb0871758ba873dcebe5cc707f79 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 24 Aug 2019 21:10:22 +0200
Subject: [PATCH] Fixed #482 - load default chart template from js file like
 default charts

---
 .../budgetmaster/charts/ChartController.java  |  2 +-
 .../budgetmaster/charts/DefaultCharts.java    |  4 +++
 src/main/resources/charts/Default.js          | 28 ++++++++++++++++++
 src/main/resources/languages/_de.properties   | 29 -------------------
 src/main/resources/languages/_en.properties   | 29 -------------------
 .../resources/templates/charts/newChart.ftl   |  2 +-
 6 files changed, 34 insertions(+), 60 deletions(-)
 create mode 100644 src/main/resources/charts/Default.js

diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
index 4b2ec96c7..91b8e766c 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
@@ -92,7 +92,7 @@ public class ChartController extends BaseController
 	@RequestMapping("/charts/newChart")
 	public String newChart(Model model)
 	{
-		Chart emptyChart = new Chart(null, null, ChartType.CUSTOM, -1);
+		Chart emptyChart = DefaultCharts.CHART_DEFAULT;
 		model.addAttribute("chart", emptyChart);
 		model.addAttribute("settings", settingsService.getSettings());
 		return "charts/newChart";
diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
index 6c3877590..258bed052 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
@@ -14,6 +14,10 @@ public class DefaultCharts
 {
 	private static final Logger LOGGER = LoggerFactory.getLogger(DefaultCharts.class);
 
+	public static final Chart CHART_DEFAULT = new Chart(null,
+			getChartFromFile("charts/Default.js"),
+			ChartType.CUSTOM, -1);
+
 	private static final Chart CHART_ACCOUNT_SUM_PER_DAY = new Chart("charts.default.accountSumPerDay",
 			getChartFromFile("charts/AccountSumPerDay.js"),
 			ChartType.DEFAULT, 4);
diff --git a/src/main/resources/charts/Default.js b/src/main/resources/charts/Default.js
new file mode 100644
index 000000000..a8d58d417
--- /dev/null
+++ b/src/main/resources/charts/Default.js
@@ -0,0 +1,28 @@
+/* This list will be dynamically filled with all the transactions between
+* the start and and date you select on the "Show Chart" page
+* and filtered according to your specified filter.
+* An example entry for this list and tutorial about how to create custom charts ca be found in the BudgetMaster wiki:
+* https://github.com/deadlocker8/BudgetMaster/wiki/How-to-create-custom-charts
+*/
+var transactionData = [];
+
+// Prepare your chart settings here (mandatory)
+var plotlyData = [{
+    x: [],
+    y: [],
+    type: 'bar'
+}];
+
+// Add your Plotly layout settings here (optional)
+var plotlyLayout = {};
+
+// Add your Plotly configuration settings here (optional)
+var plotlyConfig = {
+    showSendToCloud: false,
+    displaylogo: false,
+    showLink: false,
+    responsive: true
+};
+
+// Don't touch this line
+Plotly.newPlot('chart-canvas', plotlyData, plotlyLayout, plotlyConfig);
diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties
index 0c776e65c..c4dfee473 100644
--- a/src/main/resources/languages/_de.properties
+++ b/src/main/resources/languages/_de.properties
@@ -371,32 +371,3 @@ chart.quick.last.week.days=Letzte 7 Tage
 chart.quick.last.month.days=Letzte 30 Tage
 chart.quick.last.year.days=Letzte 365 Tage
 chart.quick.until.today=Alle bis heute
-
-chart.script.default=/* This list will be dynamically filled with all the transactions between\n \
-* the start and and date you select on the "Show Chart" page\n \
-* and filtered according to your specified filter.\n \
-* An example entry for this list and tutorial about how to create custom charts ca be found in the BudgetMaster wiki:\n \
-* https://github.com/deadlocker8/BudgetMaster/wiki/How-to-create-custom-charts\n \
-*/\n \
-var transactionData = [];\n \
-\n \
-// Prepare your chart settings here (mandatory)\n \
-var plotlyData = ['{'\n \
-\tx: [],\n \
-\ty: [],\n \
-\ttype: 'bar'\n \
-'}'];\n \
-\n \
-// Add your Plotly layout settings here (optional)\n \
-var plotlyLayout = '{}';\n \
-\n \
-// Add your Plotly configuration settings here (optional)\n \
-var plotlyConfig = '{'\n \
-\tshowSendToCloud: false,\n \
-\tdisplaylogo: false,\n \
-\tshowLink: false,\n \
-\tresponsive: true\n \
-'}';\n \
-\n \
-// Don't touch this line\n \
-Plotly.newPlot(''chart-canvas'', plotlyData, plotlyLayout, plotlyConfig);
diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties
index 6408e4829..196150674 100644
--- a/src/main/resources/languages/_en.properties
+++ b/src/main/resources/languages/_en.properties
@@ -370,32 +370,3 @@ chart.quick.last.week.days=Last 7 days
 chart.quick.last.month.days=Last 30 days
 chart.quick.last.year.days=Last 365 days
 chart.quick.until.today=Until today
-
-chart.script.default=/* This list will be dynamically filled with all the transactions between\n \
-* the start and and date you select on the "Show Chart" page\n \
-* and filtered according to your specified filter.\n \
-* An example entry for this list and tutorial about how to create custom charts ca be found in the BudgetMaster wiki:\n \
-* https://github.com/deadlocker8/BudgetMaster/wiki/How-to-create-custom-charts\n \
-*/\n \
-var transactionData = [];\n \
-\n \
-// Prepare your chart settings here (mandatory)\n \
-var plotlyData = ['{'\n \
-\tx: [],\n \
-\ty: [],\n \
-\ttype: 'bar'\n \
-'}'];\n \
-\n \
-// Add your Plotly layout settings here (optional)\n \
-var plotlyLayout = '{}';\n \
-\n \
-// Add your Plotly configuration settings here (optional)\n \
-var plotlyConfig = '{'\n \
-\tshowSendToCloud: false,\n \
-\tdisplaylogo: false,\n \
-\tshowLink: false,\n \
-\tresponsive: true\n \
-'}';\n \
-\n \
-// Don''t touch this line\n \
-Plotly.newPlot(''chart-canvas'', plotlyData, plotlyLayout, plotlyConfig);
diff --git a/src/main/resources/templates/charts/newChart.ftl b/src/main/resources/templates/charts/newChart.ftl
index 5efd990e2..6bda7ecac 100644
--- a/src/main/resources/templates/charts/newChart.ftl
+++ b/src/main/resources/templates/charts/newChart.ftl
@@ -49,7 +49,7 @@
                         <#-- script -->
                         <div class="row">
                             <div class="input-field col sl2" style="width: 100%">
-                                <textarea id="chart-script" name="script" <@validation.validation "script" "materialize-textarea"/>><#if chart.getScript()??>${chart.getScript()}<#else>${locale.getString("chart.script.default")}</#if></textarea>
+                                <textarea id="chart-script" name="script" <@validation.validation "script" "materialize-textarea"/>>${chart.getScript()}</textarea>
                             </div>
                         </div>
 
-- 
GitLab