From 7b8f522caa7da92990f8b2ea0b2bdc2224d9be9c Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 12 Feb 2022 16:10:41 +0100 Subject: [PATCH] Fixed #674 - added new chart: Average transaction amount per category --- .../budgetmaster/charts/DefaultCharts.java | 5 + .../AverageTransactionAmountPerCategoryBar.js | 120 ++++++++++++++++++ .../resources/languages/base_de.properties | 2 + .../resources/languages/base_en.properties | 2 + .../averageTransactionAmountPerCategory.png | Bin 0 -> 27723 bytes 5 files changed, 129 insertions(+) create mode 100644 src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js create mode 100644 src/main/resources/static/images/charts/averageTransactionAmountPerCategory.png diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java index 0312b0d15..21e44601e 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java @@ -54,6 +54,10 @@ public class DefaultCharts getChartFromFile("charts/IncomesAndExpendituresPerYearByCategories.js"), ChartType.DEFAULT, 2, ChartDisplayType.BAR, ChartGroupType.YEAR, "incomesAndExpendituresPerYearByCategories.png"); + private static final Chart CHART_AVERAGE_TRANSACTION_AMOUNT_PER_CATEGORY = new Chart("charts.default.averageTransactionAmountPerCategory", + getChartFromFile("charts/AverageTransactionAmountPerCategoryBar.js"), + ChartType.DEFAULT, 2, ChartDisplayType.BAR, ChartGroupType.NONE, "averageTransactionAmountPerCategory.png"); + private DefaultCharts() { } @@ -70,6 +74,7 @@ public class DefaultCharts charts.add(CHART_REST_PER_MONTH); 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); return charts; } diff --git a/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js b/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js new file mode 100644 index 000000000..59e585211 --- /dev/null +++ b/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js @@ -0,0 +1,120 @@ +/* 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. + +var categoryNames = []; +var colors = []; +var values = []; + +for(var i = 0; i < transactionData.length; i++) +{ + var transaction = transactionData[i]; + + 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); + values.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; + values[index].push(Math.abs(amount)); +} + + +// Prepare your chart settings here (mandatory) +var plotlyData = []; + +for(var j = 0; j < categoryNames.length; j++) +{ + var currentName = categoryNames[j]; + + var sumOfValues = 0; + values[j].forEach(function(value) + { + sumOfValues += value; + }); + + var averageValue = (sumOfValues / values[j].length) / 100; + + var hoverText = prepareHoverText(currentName, averageValue); + + // add border if category color is white + var borderWidth = 0; + if(colors[j] === '#FFFFFF') + { + borderWidth = 1; + } + + plotlyData.push({ + y: [averageValue], + x: [currentName], + orientation: 'v', + type: 'bar', + hoverinfo: 'text', + hovertext: [hoverText], + name: currentName, + marker: { + color: colors[j], // use the category's color + line: { + color: '#212121', + width: borderWidth + } + } + }); +} + + +// 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 9a256e8e1..759c10e31 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -552,6 +552,8 @@ charts.default.incomesAndExpendituresPerYearBar=Eingaben/Ausgaben charts.default.incomesAndExpendituresPerYearBar.localization='{"axisY": "Summe in ", "traceName1": "Einnahmen", "traceName2": "Ausgaben"'} charts.default.incomesAndExpendituresPerYearByCategories=Eingaben/Ausgaben nach Kategorien charts.default.incomesAndExpendituresPerYearByCategories.localization='{"label1": "Ausgaben", "label2": "Einnahmen"'} +charts.default.averageTransactionAmountPerCategory=Durchschnittlicher Transaktionsbetrag pro Kategorie +charts.default.averageTransactionAmountPerCategory.localization='{"label1": "Durchschnittlicher Transaktionsbetrag 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 ecc182a10..668e2ee21 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -552,6 +552,8 @@ charts.default.incomesAndExpendituresPerYearBar=Incomes/Expenditures charts.default.incomesAndExpendituresPerYearBar.localization='{"axisY": "Sum in ", "traceName1": "Incomes", "traceName2": "Expenditures"'} charts.default.incomesAndExpendituresPerYearByCategories=Incomes/Expenditures by categories 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"'} chart.new.label.name=Name chart.new.label.script=Script diff --git a/src/main/resources/static/images/charts/averageTransactionAmountPerCategory.png b/src/main/resources/static/images/charts/averageTransactionAmountPerCategory.png new file mode 100644 index 0000000000000000000000000000000000000000..6383056b9d74d559c42444c13b08841d87e9d9b6 GIT binary patch literal 27723 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 literal 0 HcmV?d00001 -- GitLab