From 917cef3a9a101518ddcf9d86e6109648f5609f0b Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Fri, 18 Feb 2022 23:20:23 +0100
Subject: [PATCH] Fixed #675: New chart: Average monthly income/expenditure sum
 per category

---
 .../budgetmaster/charts/DefaultCharts.java    |   5 +
 ...hlyIncomesAndExpendituresPerCategoryBar.js | 150 ++++++++++++++++++
 .../AverageTransactionAmountPerCategoryBar.js |  42 -----
 .../resources/languages/base_de.properties    |   2 +
 .../resources/languages/base_en.properties    |   2 +
 ...lyIncomesAndExpendituresPerCategoryBar.png | Bin 0 -> 28229 bytes
 6 files changed, 159 insertions(+), 42 deletions(-)
 create mode 100644 src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerCategoryBar.js
 create mode 100644 src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerCategoryBar.png

diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
index d7800b2be..1c9f805d3 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
@@ -62,6 +62,10 @@ public class DefaultCharts
 			getChartFromFile("charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js"),
 			ChartType.DEFAULT, 9, ChartDisplayType.BAR, ChartGroupType.YEAR, "averageMonthlyIncomesAndExpendituresPerYearBar.png");
 
+	private static final Chart CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_CATEGORY_BAR = new Chart("charts.default.averageMonthlyIncomesAndExpendituresPerCategoryBar",
+			getChartFromFile("charts/AverageMonthlyIncomesAndExpendituresPerCategoryBar.js"),
+			ChartType.DEFAULT, 1, ChartDisplayType.BAR, ChartGroupType.NONE, "averageMonthlyIncomesAndExpendituresPerCategoryBar.png");
+
 	private DefaultCharts()
 	{
 	}
@@ -80,6 +84,7 @@ public class DefaultCharts
 		charts.add(CHART_INCOMES_AND_EXPENDITURES_PER_YEAR_BY_CATEGORIES);
 		charts.add(CHART_AVERAGE_TRANSACTION_AMOUNT_PER_CATEGORY);
 		charts.add(CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR);
+		charts.add(CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_CATEGORY_BAR);
 		return charts;
 	}
 
diff --git a/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerCategoryBar.js b/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerCategoryBar.js
new file mode 100644
index 000000000..8ab1d393d
--- /dev/null
+++ b/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerCategoryBar.js
@@ -0,0 +1,150 @@
+/* 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 = [];
+
+// Note: All variables starting with "localized" are only available inside default charts.
+moment.locale(localizedLocale);
+
+var months = [];
+var categoryNames = [];
+var colors = [];
+var incomesPerCategory = [];
+var expendituresPerCategory = [];
+
+for(var i = 0; i < transactionData.length; i++)
+{
+    var transaction = transactionData[i];
+
+    var month = moment(transaction.date).startOf('month').format('MMM YY');
+    if(!months.includes(month))
+    {
+        months.push(month);
+    }
+
+    var categoryName = transaction.category.name;
+    // create new category if not already in dict
+    if(!categoryNames.includes(categoryName))
+    {
+        categoryNames.push(categoryName);
+        colors.push(transaction.category.color);
+        incomesPerCategory.push([]);
+        expendituresPerCategory.push([]);
+    }
+
+    // determine index of categoryName in list because the transactions are not ordered by category and some categories
+    // will be missing either for income or expenditures
+    var index = categoryNames.indexOf(categoryName);
+
+    // add to income or expenditure sum
+    var amount = transaction.amount;
+    if(amount > 0)
+    {
+        incomesPerCategory[index].push(amount);
+        expendituresPerCategory[index].push(0);
+    }
+    else
+    {
+        incomesPerCategory[index].push(0);
+        expendituresPerCategory[index].push(amount);
+    }
+}
+
+
+// Prepare your chart settings here (mandatory)
+var plotlyData = [];
+
+for(var j = 0; j < categoryNames.length; j++)
+{
+    var currentName = categoryNames[j];
+
+    var incomeAverage = calculateAverage(incomesPerCategory[j], months.length);
+    var expenditureAverage = calculateAverage(expendituresPerCategory[j], months.length);
+
+    addDPlotlyData(plotlyData, incomeAverage, currentName, colors[j]);
+    addDPlotlyData(plotlyData, expenditureAverage, currentName, colors[j], false);
+}
+
+
+// Add your Plotly layout settings here (optional)
+var plotlyLayout = {
+    title: {
+        text: localizedTitle
+    },
+    xaxis: {
+    },
+    yaxis: {
+        title: localizedData['label1'] + ' ' + localizedCurrency,
+        rangemode: 'tozero',
+        tickformat: '.2f',
+        showline: true
+    },
+    barmode: 'relative',
+    hovermode: 'closest' // show hover popup only for hovered item
+};
+
+// Add your Plotly configuration settings here (optional)
+var plotlyConfig = {
+    showSendToCloud: false,
+    displaylogo: false,
+    showLink: false,
+    responsive: true,
+    displayModeBar: true,
+    toImageButtonOptions: {
+        format: 'png',
+        filename: 'BudgetMaster_chart_export',
+        height: 1080,
+        width: 1920,
+    }
+};
+
+// Don't touch this line
+Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig);
+
+
+function addDPlotlyData(plotlyData, averageValue, categoryName, color, showLegend)
+{
+    // add border if category color is white
+    var borderWidth = 0;
+    if(color.toUpperCase().startsWith('#FFFFFF'))
+    {
+        borderWidth = 1;
+    }
+
+    plotlyData.push({
+        y: [averageValue],
+        x: [categoryName],
+        orientation: 'v',
+        type: 'bar',
+        hoverinfo: 'text',
+        hovertext: [prepareHoverText(categoryName, averageValue)],
+        name: categoryName,
+        legendgroup: categoryName,
+        showlegend: showLegend,
+        marker: {
+            color: color,  // use the category's color
+            line: {
+                color: '#212121',
+                width: borderWidth
+            }
+        }
+    });
+}
+
+function calculateAverage(values, numberOfMonths)
+{
+    var sum = 0;
+    values.forEach(function(value)
+    {
+        sum += value;
+    });
+    return (sum / numberOfMonths) / 100;
+}
+
+function prepareHoverText(categoryName, value)
+{
+    return categoryName + ' ' + value.toFixed(1) + ' ' + localizedCurrency;
+}
\ No newline at end of file
diff --git a/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js b/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js
index ec9504869..cd69d8e2f 100644
--- a/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js
+++ b/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js
@@ -140,45 +140,3 @@ function prepareHoverText(categoryName, value)
 {
     return categoryName + ' ' + value.toFixed(1) + ' ' + localizedCurrency;
 }
-
-
-// Add your Plotly layout settings here (optional)
-var plotlyLayout = {
-    title: {
-        text: localizedTitle
-    },
-    xaxis: {
-    },
-    yaxis: {
-        title: localizedData['label1'] + ' ' + localizedCurrency,
-        rangemode: 'tozero',
-        tickformat: '.2f',
-        showline: true
-    },
-    barmode: 'stack',
-    hovermode: 'closest' // show hover popup only for hovered item
-};
-
-// Add your Plotly configuration settings here (optional)
-var plotlyConfig = {
-    showSendToCloud: false,
-    displaylogo: false,
-    showLink: false,
-    responsive: true,
-    displayModeBar: true,
-    toImageButtonOptions: {
-        format: 'png',
-        filename: 'BudgetMaster_chart_export',
-        height: 1080,
-        width: 1920,
-    }
-};
-
-// Don't touch this line
-Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig);
-
-
-function prepareHoverText(categoryName, value)
-{
-    return categoryName + ' ' + value.toFixed(1) + ' ' + localizedCurrency;
-}
\ No newline at end of file
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index f6a548612..88f1e7d75 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -560,6 +560,8 @@ charts.default.averageTransactionAmountPerCategory=Durchschnittlicher Transaktio
 charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Durchschnittlicher Transaktionsbetrag in"'}
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Durchschnittliche monatliche Einnahmen/Ausgaben
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Einnahmen", "traceName2": "Ausgaben"', "axisY": "Durchschnittlicher monatlicher Betrag in"'}
+charts.default.averageMonthlyIncomesAndExpendituresPerCategoryBar=Durchschnittliche monatliche Einnahmen/Ausgaben pro Kategorie
+charts.default.averageMonthlyIncomesAndExpendituresPerCategoryBar.localization='{"label1": "Durchschnittlicher Summe in"'}
 
 charts.custom=Eigene Diagramme
 charts.default=Standarddiagramme
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index 23161e21f..8fb2dc4d1 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -560,6 +560,8 @@ charts.default.averageTransactionAmountPerCategory=Average transaction amount pe
 charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Average transaction amount in"'}
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Average monthly incomes/expenditures
 charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Incomes", "traceName2": "Expenditures"', "axisY": "Average monthly amount in"'}
+charts.default.averageMonthlyIncomesAndExpendituresPerCategoryBar=Average monthly incomes/expenditures per category
+charts.default.averageMonthlyIncomesAndExpendituresPerCategoryBar.localization='{"label1": "Average sum in"'}
 
 charts.custom=Custom Charts
 charts.default=Default Charts
diff --git a/src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerCategoryBar.png b/src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerCategoryBar.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f57eb679c64903a21716019cb36a39cb544540c
GIT binary patch
literal 28229
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
IIVCg!09|bddH?_b

literal 0
HcmV?d00001

-- 
GitLab