From 9ef74c8a55918f07c0e2574f32a43fc6b340c373 Mon Sep 17 00:00:00 2001 From: Tini Tran <tinit@stud.ntnu.no> Date: Wed, 24 Apr 2024 08:22:56 +0200 Subject: [PATCH] Using the hook and fetching data from api call to the view --- src/views/HomePage/EconomyView.vue | 111 +++++++++++++++++------------ 1 file changed, 67 insertions(+), 44 deletions(-) diff --git a/src/views/HomePage/EconomyView.vue b/src/views/HomePage/EconomyView.vue index 8f40f98..391edce 100644 --- a/src/views/HomePage/EconomyView.vue +++ b/src/views/HomePage/EconomyView.vue @@ -1,10 +1,12 @@ <script setup lang="ts"> -import { computed, ref } from 'vue' -import {Pie} from 'vue-chartjs' -import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js' -ChartJS.register(ArcElement,Tooltip,Legend) +import { computed, onMounted, ref } from 'vue' +import { Pie } from 'vue-chartjs' +import { ArcElement, Chart as ChartJS, Colors, Legend, Tooltip } from 'chart.js' import TransactionComponent from '@/components/economy/TransactionComponent.vue' import ToggleButton from '@/components/economy/ToggleButton.vue' +import { getTransactions } from '@/utils/TransactionUtils' + +ChartJS.register(ArcElement,Tooltip,Legend, Colors) const selectedOption = ref<string | null>("") @@ -13,38 +15,24 @@ const selectedOption = ref<string | null>("") let pages = 0; let currentPage = 0; -const transactions = ref([ - { id: 1, - title: 'Rema 1000', - date: '2022-05-10', - amount: 100, - category: 'Dagligvare' - }, - { id: 2, - title: 'Trondheim Kino', - date: '2022-05-15', - amount: 500, - category: 'Underholdning' - }, - { id: 3, - title: 'SIT', - date: '2022-05-15', - amount: 4450, - category: 'regninger' - }, - { id: 4, - title: 'Superhero Burger', - date: '2022-05-15', - amount: 1500, - category: 'Mat & Restaurant' - }, - { id: 6, - title: 'Kiwi', - date: '2022-05-20', - amount: 100, - category: 'Dagligvare' - }, -]) +const transactions = ref<any[]>([]) +const fetchTransactions = async() => { + try{ + transactions.value = await getTransactions(1, 2) + //const response = await getTransactions(1,2) + //transactions.value = response.data + //fordi akk nå benytter vi av test data + } catch (e) { + console.log(e) + } + +} +onMounted(() => { + fetchTransactions() +}) + + + const chartVisible = ref(false) const toggleChart = (value: boolean) => { @@ -58,7 +46,7 @@ const handleSelectionChange = (value: string | null) => { const distinctCategories = computed(() => { const categories = new Set<string>() transactions.value.forEach(transaction => { - categories.add(transaction.category) + categories.add(transaction.TransactionCategory.category) }) return Array.from(categories) }) @@ -71,7 +59,7 @@ const filteredTransactions = computed(() => { if (selectedOption.value === 'Alle' || !selectedOption.value) { return transactions.value } else { - return transactions.value.filter(transaction => transaction.category === selectedOption.value) + return transactions.value.filter(transaction => transaction.TransactionCategory.category === selectedOption.value) } }) const chartData = computed(() => { @@ -87,7 +75,9 @@ const chartData = computed(() => { const categoryAmounts: { [key: string]: number } = {}; transactions.value.forEach(transaction => { - const { category, amount } = transaction; + const { TransactionCategory, amount } = transaction; + console.log(TransactionCategory) + const category = TransactionCategory.category if (category in categoryAmounts) { categoryAmounts[category] += amount; } else { @@ -101,7 +91,6 @@ const chartData = computed(() => { data.labels.forEach(label => { data.datasets[0].data.push(categoryAmounts[label]); }); - console.log(data) return data; }) @@ -114,6 +103,40 @@ const getRandomColor = () => { } return color } + +// +// const transactions1 = ref([ +// { id: 1, +// title: 'Rema 1000', +// date: '2022-05-10', +// amount: 100, +// category: 'Dagligvare' +// }, +// { id: 2, +// title: 'Trondheim Kino', +// date: '2022-05-15', +// amount: 500, +// category: 'Underholdning' +// }, +// { id: 3, +// title: 'SIT', +// date: '2022-05-15', +// amount: 4450, +// category: 'regninger' +// }, +// { id: 4, +// title: 'Superhero Burger', +// date: '2022-05-15', +// amount: 1500, +// category: 'Mat & Restaurant' +// }, +// { id: 6, +// title: 'Kiwi', +// date: '2022-05-20', +// amount: 100, +// category: 'Dagligvare' +// }, +// ]) </script> <template> @@ -133,12 +156,12 @@ const getRandomColor = () => { <option v-for="option in dropdownOptions" :key="option" :value="option">{{ option }}</option> </select> </div> - <div class="component-container"> + <div class="component-container" v-if="filteredTransactions"> <transaction-component v-for="transaction in filteredTransactions" - :key="transaction.id" - :title="transaction.title" - :category="transaction.category" + :key="transaction.transactionId" + :title="transaction.transactionTitle" + :category="transaction.TransactionCategory.category" :amount="transaction.amount" :date="transaction.date" ></transaction-component> -- GitLab