diff --git a/src/components/AddExpenseForm.js b/src/components/AddExpenseForm.js index 760f27d..e4240c0 100644 --- a/src/components/AddExpenseForm.js +++ b/src/components/AddExpenseForm.js @@ -11,6 +11,7 @@ const AddExpenseForm = (props) => { const [cost, setCost] = useState(''); const [category, setCategory] = useState(''); const [categoryList, setCategoryList] = useState([]); + const [isExpense, setIsExpense] = useState(true); useEffect(() => { try { @@ -25,13 +26,35 @@ const AddExpenseForm = (props) => { if (data.status != 200) { console.log(data.error); } else { - setCategoryList(data.categories); + isExpense + ? setCategoryList(Object.keys(data.expenses)) + : setCategoryList(Object.keys(data.income)); } }) } catch(error) { console.error(error); } }, []) + + const toggleTransactionType = () => { + setIsExpense(!isExpense); + fetch('https://api.bb.gabefarrell.com/w/budget', { + method: 'GET', + headers: { + 'x-session-key' : getSessionKey(), + } + }) + .then(response => response.json()) + .then(data => { + if (data.status != 200) { + console.log(data.error); + } else { + isExpense + ? setCategoryList(Object.keys(data.expenses)) + : setCategoryList(Object.keys(data.income)); + } + }) + }; const onSubmit = (event) => { event.preventDefault(); @@ -41,7 +64,7 @@ const AddExpenseForm = (props) => { let currency = "USD" let whole = 0; let decimal = 0; - let type = 'expenses'; + let type = isExpense ? 'expenses' : 'income'; if (cost.includes(".")) { @@ -76,19 +99,6 @@ const AddExpenseForm = (props) => { console.error(error); } - /* - const expense = { - id: uuidv4(), - name, - cost: parseInt(cost), - }; - - dispatch({ - type: 'ADD_EXPENSE', - payload: expense, - }); - */ - setName(''); setCost(''); }; @@ -106,23 +116,7 @@ const AddExpenseForm = (props) => { return (
-

Add Expense

-
-
- {/* -
- - setName(event.target.value)} - > -
- */} -
+

Add Transaction

@@ -153,15 +147,17 @@ const AddExpenseForm = (props) => {
- - +
-
); }; diff --git a/src/components/CategorizedBudget.js b/src/components/CategorizedBudget.js index 09f7a2a..bd5c4e4 100644 --- a/src/components/CategorizedBudget.js +++ b/src/components/CategorizedBudget.js @@ -3,7 +3,8 @@ import { Chart as ChartJS, ArcElement, Tooltip, Legend, defaults } from 'chart.j import { AppProvider } from "../context/AppContext"; import { useState, useEffect } from 'react' -import { getSessionKey } from '../utils/utils.js' +import { calculateValue, getSessionKey } from '../utils/utils.js' +import { Minimize } from "@material-ui/icons"; ChartJS.register(ArcElement, Tooltip, Legend); @@ -16,7 +17,7 @@ export default function CategorizedBudget() { fetch('https://api.bb.gabefarrell.com/w/budget', { method: 'GET', headers: { - 'x-session-key' : 'b36efa01-7824-4f61-a274-63131b58d8fe', + 'x-session-key' : getSessionKey(), } }) .then(response => response.json()) @@ -24,27 +25,25 @@ export default function CategorizedBudget() { if (data.status != 200) { console.log(data.error); } else { + + console.log(typeof data.expenses_by_category); const chartData = { - labels: [data.categories.length > 0 ? data.categories : "no expenses"], + labels: Object.keys(data.expenses).length > 0 ? Object.keys(data.expenses) : [ "no expenses"], datasets: [ { - data: data.expenses_by_category.length > 0 - ? data.expenses_by_category.map(category => { - return category['whole'] - }) - : [1], + data: Object.values(data.expenses_by_category).map(category => { + return calculateValue(category); + }), backgroundColor: [ - 'rgba(255, 99, 132, 0.2)', - 'rgba(54, 162, 235, 0.2)', - 'rgba(255, 206, 86, 0.2)', - 'rgba(75, 192, 192, 0.2)', - 'rgba(153, 102, 255, 0.2)', - 'rgba(255, 159, 64, 0.2)', + '#FFC857', + '#ED8146', + '#DB3A34', + '#5672C7', ], borderColor: [ - "black" + "white" ], - borderWidth: 1, + borderWidth: 2, }, ], } diff --git a/src/pages/Dashboard.jsx b/src/pages/Dashboard.jsx index 2aa3c4d..e714d41 100644 --- a/src/pages/Dashboard.jsx +++ b/src/pages/Dashboard.jsx @@ -2,7 +2,7 @@ import React from 'react'; import 'bootstrap/dist/css/bootstrap.min.css'; import { AppProvider } from '../context/AppContext'; -import FetchAPI from '../components/budget'; +import FetchAPI from '../components/Budget'; import ExpenseTotal from '../components/ExpenseTotal'; import ExpenseList from '../components/ExpenseList'; import AddExpenseForm from '../components/AddExpenseForm'; diff --git a/src/utils/utils.js b/src/utils/utils.js index d79b90f..d547956 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -41,4 +41,8 @@ export async function getName() { export function handleLogout() { document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); window.location.href='/welcome'; +} + +export function calculateValue(category) { + return category.whole + category.decimal * 0.01; } \ No newline at end of file