From 4ca4b83c1921a4f0116a78a0c983eaa4cd891701 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 13 Feb 2022 10:57:36 +0100
Subject: [PATCH] #672: calculate average incomes and expenditures per month
 instead of average over all transactions of a given year

---
 .../budgetmaster/charts/DefaultCharts.java    |   8 +-
 ...AverageIncomesAndExpendituresPerYearBar.js | 112 ---------------
 ...MonthlyIncomesAndExpendituresPerYearBar.js | 134 ++++++++++++++++++
 .../resources/languages/base_de.properties    |   4 +-
 .../resources/languages/base_en.properties    |   4 +-
 ...verageIncomesAndExpendituresPerYearBar.png | Bin 15994 -> 0 bytes
 ...onthlyIncomesAndExpendituresPerYearBar.png | Bin 0 -> 16700 bytes
 7 files changed, 142 insertions(+), 120 deletions(-)
 delete mode 100644 src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js
 create mode 100644 src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js
 delete mode 100644 src/main/resources/static/images/charts/averageIncomesAndExpendituresPerYearBar.png
 create mode 100644 src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerYearBar.png

diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
index 6afbf2681..ad67a8300 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
@@ -58,9 +58,9 @@ public class DefaultCharts
 			getChartFromFile("charts/AverageTransactionAmountPerCategoryBar.js"),
 			ChartType.DEFAULT, 3, ChartDisplayType.BAR, ChartGroupType.NONE, "averageTransactionAmountPerCategory.png");
 
-	private static final Chart CHART_AVERAGE_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR = new Chart("charts.default.averageIncomesAndExpendituresPerYearBar",
-			getChartFromFile("charts/AverageIncomesAndExpendituresPerYearBar.js"),
-			ChartType.DEFAULT, 4, ChartDisplayType.BAR, ChartGroupType.YEAR, "averageIncomesAndExpendituresPerYearBar.png");
+	private static final Chart CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR = new Chart("charts.default.averageMonthlyIncomesAndExpendituresPerYearBar",
+			getChartFromFile("charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js"),
+			ChartType.DEFAULT, 9, ChartDisplayType.BAR, ChartGroupType.YEAR, "averageMonthlyIncomesAndExpendituresPerYearBar.png");
 
 	private DefaultCharts()
 	{
@@ -79,7 +79,7 @@ public class DefaultCharts
 		charts.add(CHART_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR);
 		charts.add(CHART_INCOMES_AND_EXPENDITURES_PER_YEAR_BY_CATEGORIES);
 		charts.add(CHART_AVERAGE_TRANSACTION_AMOUNT_PER_CATEGORY);
-		charts.add(CHART_AVERAGE_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR);
+		charts.add(CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR);
 		return charts;
 	}
 
diff --git a/src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js b/src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js
deleted file mode 100644
index df534b8ca..000000000
--- a/src/main/resources/charts/AverageIncomesAndExpendituresPerYearBar.js
+++ /dev/null
@@ -1,112 +0,0 @@
-/* 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 dates = [];
-var incomes = [];
-var incomeSums = [];
-var numberOfIncomes = [];
-var numberOfExpenditures = [];
-var expenditureSums = [];
-
-transactionData = transactionData.reverse();
-
-for(var i = 0; i < transactionData.length; i++)
-{
-    var transaction = transactionData[i];
-
-    // create new sums if year is not already in list
-    var date = moment(transaction.date).startOf('year').format('YYYY');
-    if(!dates.includes(date))
-    {
-        dates.push(date);
-        incomeSums.push(0);
-        numberOfIncomes.push(0);
-        expenditureSums.push(0);
-        numberOfExpenditures.push(0);
-    }
-
-    // add to income or expenditure sum
-    var amount = transaction.amount;
-    if(amount > 0)
-    {
-        var lastIndex = incomeSums.length - 1;
-        incomeSums[lastIndex] = incomeSums[lastIndex] + amount;
-        numberOfIncomes[lastIndex] = numberOfIncomes[lastIndex] + 1;
-    }
-    else
-    {
-        var lastIndex = expenditureSums.length - 1;
-        expenditureSums[lastIndex] = expenditureSums[lastIndex] + Math.abs(amount);
-        numberOfExpenditures[lastIndex] = numberOfExpenditures[lastIndex] + 1;
-    }
-}
-
-var incomeAverages = [];
-var expenditureAverages = [];
-
-for(let i = 0; i < dates.length; i++)
-{
-    var currentIncomeAverage = (incomeSums[i] / 100) / numberOfIncomes[i];
-    incomeAverages.push(currentIncomeAverage);
-
-    var currentExpenditureAverage = (expenditureSums[i] / 100) / numberOfExpenditures[i];
-    expenditureAverages.push(currentExpenditureAverage);
-}
-
-// Prepare your chart settings here (mandatory)
-var plotlyData = [
-    {
-        x: dates,
-        y: incomeAverages,
-        type: 'bar',
-        name: localizedData['traceName1']
-    },
-    {
-        x: dates,
-        y: expenditureAverages,
-        type: 'bar',
-        name: localizedData['traceName2']
-    }
-];
-
-// Add your Plotly layout settings here (optional)
-var plotlyLayout = {
-    title: {
-        text: localizedTitle
-    },
-    yaxis: {
-        title: localizedData['axisY'] + localizedCurrency,
-        rangemode: 'tozero',
-        tickformat: '.2f',
-        showline: true
-    },
-    xaxis: {
-
-    }
-};
-
-// 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);
\ No newline at end of file
diff --git a/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js b/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js
new file mode 100644
index 000000000..31314af2c
--- /dev/null
+++ b/src/main/resources/charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js
@@ -0,0 +1,134 @@
+/* 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 years = [];
+var transactionsPerYear = [];
+
+
+transactionData = transactionData.reverse();
+
+// group transactions by years
+for(var i = 0; i < transactionData.length; i++)
+{
+    var transaction = transactionData[i];
+
+    // create new sums if year is not already in list
+    var date = moment(transaction.date).startOf('year').format('YYYY');
+
+    if(!years.includes(date))
+    {
+        years.push(date);
+        transactionsPerYear.push([]);
+    }
+
+    var index = years.indexOf(date);
+
+    transactionsPerYear[index].push(transaction);
+}
+
+
+var incomeAveragesPerYear = [];
+var incomeAveragesHoverTexts = [];
+var expenditureAveragesPerYear = [];
+var expenditureAveragesHoverTexts = [];
+
+for(let i = 0; i < years.length; i++)
+{
+    var year = years[i];
+    var transactionsOfYear = transactionsPerYear[i];
+
+    var incomeSum = 0;
+    var expenditureSum = 0;
+
+    for(let j = 0; j < transactionsOfYear.length; j++)
+    {
+        var currentTransaction = transactionsOfYear[j];
+        var month = moment(currentTransaction.date).startOf('month').format('M') - 1;
+
+        var amount = currentTransaction.amount;
+        if(amount > 0)
+        {
+            incomeSum = incomeSum + amount;
+        }
+        else
+        {
+            expenditureSum = expenditureSum + Math.abs(amount);
+        }
+    }
+
+    var currentIncomeAverage = (incomeSum / 100) / 12;
+    incomeAveragesPerYear.push(currentIncomeAverage);
+    incomeAveragesHoverTexts.push(prepareHoverText(currentIncomeAverage))
+
+    var currentExpenditureAverage = (expenditureSum / 100) / 12;
+    expenditureAveragesPerYear.push(currentExpenditureAverage);
+    expenditureAveragesHoverTexts.push(prepareHoverText(currentExpenditureAverage))
+}
+
+// Prepare your chart settings here (mandatory)
+var plotlyData = [
+    {
+        x: years,
+        y: incomeAveragesPerYear,
+        type: 'bar',
+        name: localizedData['traceName1'],
+        hoverinfo: 'text',
+        hovertext: incomeAveragesHoverTexts,
+    },
+    {
+        x: years,
+        y: expenditureAveragesPerYear,
+        type: 'bar',
+        name: localizedData['traceName2'],
+        hoverinfo: 'text',
+        hovertext: expenditureAveragesHoverTexts,
+    }
+];
+
+// Add your Plotly layout settings here (optional)
+var plotlyLayout = {
+    title: {
+        text: localizedTitle
+    },
+    yaxis: {
+        title: localizedData['axisY'] + localizedCurrency,
+        rangemode: 'tozero',
+        tickformat: '.2f',
+        showline: true
+    },
+    xaxis: {
+
+    }
+};
+
+// 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(value)
+{
+    return 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 07a048892..9652e9eeb 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -558,8 +558,8 @@ charts.default.incomesAndExpendituresPerYearByCategories=Eingaben/Ausgaben nach
 charts.default.incomesAndExpendituresPerYearByCategories.localization='{"label1": "Ausgaben", "label2": "Einnahmen"'}
 charts.default.averageTransactionAmountPerCategory=Durchschnittlicher Transaktionsbetrag pro Kategorie
 charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Durchschnittlicher Transaktionsbetrag in"'}
-charts.default.averageIncomesAndExpendituresPerYearBar=Durchschnittliche Einnahmen/Ausgaben
-charts.default.averageIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Einnahmen", "traceName2": "Ausgaben"', "axisY": "Durchschnittlicher Betrag in"'}
+charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Durchschnittliche monatliche Einnahmen/Ausgaben
+charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Einnahmen", "traceName2": "Ausgaben"', "axisY": "Durchschnittlicher monatlicher Betrag in"'}
 
 chart.new.label.name=Name
 chart.new.label.script=Script
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index b9bb2c5b3..69067d821 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -558,8 +558,8 @@ charts.default.incomesAndExpendituresPerYearByCategories=Incomes/Expenditures by
 charts.default.incomesAndExpendituresPerYearByCategories.localization='{"label1": "Expenditures", "label2": "Incomes"'}
 charts.default.averageTransactionAmountPerCategory=Average transaction amount per category
 charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Average transaction amount in"'}
-charts.default.averageIncomesAndExpendituresPerYearBar=Average incomes/expenditures
-charts.default.averageIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Incomes", "traceName2": "Expenditures"', "axisY": "Average amount in"'}
+charts.default.averageMonthlyIncomesAndExpendituresPerYearBar=Average monthly incomes/expenditures
+charts.default.averageMonthlyIncomesAndExpendituresPerYearBar.localization='{"traceName1": "Incomes", "traceName2": "Expenditures"', "axisY": "Average monthly amount in"'}
 
 chart.new.label.name=Name
 chart.new.label.script=Script
diff --git a/src/main/resources/static/images/charts/averageIncomesAndExpendituresPerYearBar.png b/src/main/resources/static/images/charts/averageIncomesAndExpendituresPerYearBar.png
deleted file mode 100644
index fa26b0d9e14df12726e3e7dffef3f82be0a1b568..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15994
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
U+qHE%0|Nttr>mdKI;Vst05%xgc>n+a

diff --git a/src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerYearBar.png b/src/main/resources/static/images/charts/averageMonthlyIncomesAndExpendituresPerYearBar.png
new file mode 100644
index 0000000000000000000000000000000000000000..17836f6333821b2511ed4f420b165a46585019e4
GIT binary patch
literal 16700
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

literal 0
HcmV?d00001

-- 
GitLab