diff --git a/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/graphs/Graph1.svelte b/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/graphs/Graph1.svelte index a981296..1271447 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/graphs/Graph1.svelte +++ b/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/graphs/Graph1.svelte @@ -2,13 +2,12 @@ import Chart from 'chart.js/auto'; import { onMount } from 'svelte'; import axios from 'axios'; - import {getCookie} from "svelte-cookie"; + import { getCookie } from "svelte-cookie"; let ctx; let chartCanvas; onMount(async () => { - const token = getCookie('access_token'); const config = { @@ -19,11 +18,28 @@ try { const response = await axios.get('http://localhost:8081/incomes/personal-incomes', config); - console.log(response.data); const incomeData = response.data; - const chartLabels = incomeData.map(item => item.incomeCategory.name); - const chartValues = incomeData.map(item => item.amount); + // Create a function to group and sum incomes by category + function groupAndSumByCategory(incomes) { + const groupedData = new Map(); + incomes.forEach(income => { + const category = income.incomeCategory.name; + if (groupedData.has(category)) { + groupedData.set(category, groupedData.get(category) + income.amount); + } else { + groupedData.set(category, income.amount); + } + }); + return groupedData; + } + + // Group and sum incomes by category + const groupedIncomeData = groupAndSumByCategory(incomeData); + + // Extract category names and summed values + const chartLabels = Array.from(groupedIncomeData.keys()); + const chartValues = Array.from(groupedIncomeData.values()); ctx = chartCanvas.getContext('2d'); new Chart(ctx, { @@ -51,6 +67,8 @@ + + \ No newline at end of file + + h3 { + font-size: 20px; + margin-bottom: 20px; + } + + .form-group { + margin-bottom: 15px; + } + + label { + display: block; + font-weight: bold; + margin-bottom: 5px; + } + + .form-control { + width: 100%; + padding: 10px; + border: 1px solid #ccc; + border-radius: 5px; + } + + select.form-control { + height: 40px; + } + + .btn { + background-color: #007BFF; + color: #fff; + border: none; + border-radius: 5px; + padding: 10px 20px; + cursor: pointer; + } + + .btn:hover { + background-color: #0056b3; + } + diff --git a/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/infolists/contents/ContentIncome.svelte b/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/infolists/contents/ContentIncome.svelte index 5935585..ece775c 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/infolists/contents/ContentIncome.svelte +++ b/src/main/java/com/faf223/expensetrackerfaf/web/src/routes/dashboard/board/infolists/contents/ContentIncome.svelte @@ -61,55 +61,111 @@