From 7ab865f7ac18c6b608e39545111dcb8377492eb5 Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:17:51 +0530 Subject: [PATCH 1/9] Update Budget.js --- src/components/Budget.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/components/Budget.js b/src/components/Budget.js index 8b13789179..73e2bc1955 100644 --- a/src/components/Budget.js +++ b/src/components/Budget.js @@ -1 +1,17 @@ +import React, { useContext, useState } from 'react'; +import { AppContext } from '../context/AppContext'; +const Budget = () => { + const { budget } = useContext(AppContext); + const [newBudget, setNewBudget] = useState(budget); + const handleBudgetChange = (event) => { + setNewBudget(event.target.value); + } + return ( +
+Budget: £{budget} + +
+ ); +}; +export default Budget; From 612eff44b0e2a04010188ffeff607efbc5b9869b Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:19:11 +0530 Subject: [PATCH 2/9] Update App.js --- src/App.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/App.js b/src/App.js index 610e47d694..844806d247 100644 --- a/src/App.js +++ b/src/App.js @@ -17,6 +17,10 @@ const App = () => {
    { /* Add Budget component here */ + // Budget component +
+ +
}     { From f222eb224219e3a76581dd42afe3aa36e53f94ef Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:25:10 +0530 Subject: [PATCH 3/9] Update App.js --- src/App.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/App.js b/src/App.js index 844806d247..7b315bdf5e 100644 --- a/src/App.js +++ b/src/App.js @@ -15,9 +15,7 @@ const App = () => {

Company's Budget Allocation

-     { - /* Add Budget component here */ - // Budget component + {
From 4684a8417b205e7439502cd060af2c25d5b4693b Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:30:29 +0530 Subject: [PATCH 4/9] Update App.js --- src/App.js | 55 +++++++++++++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/src/App.js b/src/App.js index 7b315bdf5e..62456bfba7 100644 --- a/src/App.js +++ b/src/App.js @@ -1,49 +1,44 @@ import React from 'react'; - import 'bootstrap/dist/css/bootstrap.min.css'; -//Code to import Budget.js +import { AppProvider } from './context/AppContext'; import Budget from './components/Budget'; +import ExpenseTotal from './components/ExpenseTotal'; +import ExpenseList from './components/ExpenseList'; +import AllocationForm from './components/AllocationForm'; +import RemainingBudget from './components/Remaining'; -// Add code to import the other components here under - - -import { AppProvider } from './context/AppContext'; const App = () => { return (

Company's Budget Allocation

-
- { +
- } - -     { - /* Add Remaining component here*/ - } - -     { - /* Add ExpenseTotal component here */ - } - -     { - /* Add ExpenseList component here */ - } - -     { - /* Add ExpenseItem component here */ - } - -     { - /* Add AllocationForm component here under */ - } - +
+ +
+
+ +
+
+

Allocation

+
+
+ +
+
+

Change allocation

+
+
+ +
); }; + export default App; From e044cfa94f00d5b3fddc18665e376494d78d79d8 Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:31:10 +0530 Subject: [PATCH 5/9] Update AllocationForm.js --- src/components/AllocationForm.js | 80 ++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/src/components/AllocationForm.js b/src/components/AllocationForm.js index 8b13789179..4c4d32c5e4 100644 --- a/src/components/AllocationForm.js +++ b/src/components/AllocationForm.js @@ -1 +1,81 @@ +import React, { useContext, useState } from 'react'; +import { AppContext } from '../context/AppContext'; +const AllocationForm = (props) => { + const { dispatch,remaining } = useContext(AppContext); + + const [name, setName] = useState(''); + const [cost, setCost] = useState(''); + const [action, setAction] = useState(''); + + const submitEvent = () => { + + if(cost > remaining) { + alert("The value cannot exceed remaining funds £"+remaining); + setCost(""); + return; + } + + const expense = { + name: name, + cost: parseInt(cost), + }; + if(action === "Reduce") { + dispatch({ + type: 'RED_EXPENSE', + payload: expense, + }); + } else { + dispatch({ + type: 'ADD_EXPENSE', + payload: expense, + }); + } + }; + + return ( +
+
+ +
+
+ +
+ + +
+ +
+ + + setCost(event.target.value)}> + + + +
+
+ +
+ ); +}; + +export default AllocationForm; From a54dc1fbadae0831d419fe6ca4a52b6df37606a4 Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:31:43 +0530 Subject: [PATCH 6/9] Update ExpenseItem.js --- src/components/ExpenseItem.js | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/components/ExpenseItem.js b/src/components/ExpenseItem.js index 8b13789179..7b9f9919db 100644 --- a/src/components/ExpenseItem.js +++ b/src/components/ExpenseItem.js @@ -1 +1,38 @@ +import React, { useContext } from 'react'; +import { TiDelete } from 'react-icons/ti'; +import { AppContext } from '../context/AppContext'; +const ExpenseItem = (props) => { + const { dispatch } = useContext(AppContext); + + const handleDeleteExpense = () => { + dispatch({ + type: 'DELETE_EXPENSE', + payload: props.id, + }); + }; + + const increaseAllocation = (name) => { + const expense = { + name: name, + cost: 10, + }; + + dispatch({ + type: 'ADD_EXPENSE', + payload: expense + }); + + } + + return ( + + {props.name} + £{props.cost} + + + + ); +}; + +export default ExpenseItem; From 2b21cc84867285937566cef773f3936cb20a4422 Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:32:22 +0530 Subject: [PATCH 7/9] Update ExpenseList.js --- src/components/ExpenseList.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/components/ExpenseList.js b/src/components/ExpenseList.js index 8b13789179..34f88a4028 100644 --- a/src/components/ExpenseList.js +++ b/src/components/ExpenseList.js @@ -1 +1,27 @@ +import React, { useContext } from 'react'; +import ExpenseItem from './ExpenseItem'; +import { AppContext } from '../context/AppContext'; +const ExpenseList = () => { + const { expenses } = useContext(AppContext); + + return ( + + + + + + + + + + + {expenses.map((expense) => ( + + ))} + +
DepartmentAllocated BudgetIncrease by 10Delete
+ ); +}; + +export default ExpenseList; From d1302b6d928e34ec0e90895509298cedb6523c38 Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:32:52 +0530 Subject: [PATCH 8/9] Update ExpenseTotal.js --- src/components/ExpenseTotal.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/components/ExpenseTotal.js b/src/components/ExpenseTotal.js index 8b13789179..dfee1975c9 100644 --- a/src/components/ExpenseTotal.js +++ b/src/components/ExpenseTotal.js @@ -1 +1,14 @@ - +import React, { useContext } from 'react'; +import { AppContext } from '../context/AppContext'; +const ExpenseTotal = () => { + const { expenses } = useContext(AppContext); + const totalExpenses = expenses.reduce((total, item) => { + return (total += item.cost); + }, 0); + return ( +
+ Spent so far: £{totalExpenses} +
+ ); +}; +export default ExpenseTotal; From 158c7b4303d6b4c10c9db68e618729604735d6d1 Mon Sep 17 00:00:00 2001 From: Prajwal-S7 Date: Thu, 6 Jun 2024 17:33:18 +0530 Subject: [PATCH 9/9] Update Remaining.js --- src/components/Remaining.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/Remaining.js b/src/components/Remaining.js index 8b13789179..3b40443bd8 100644 --- a/src/components/Remaining.js +++ b/src/components/Remaining.js @@ -1 +1,15 @@ - +import React, { useContext } from 'react'; +import { AppContext } from '../context/AppContext'; +const Remaining = () => { + const { expenses, budget } = useContext(AppContext); + const totalExpenses = expenses.reduce((total, item) => { + return (total = total + item.cost); + }, 0); + const alertType = totalExpenses > budget ? 'alert-danger' : 'alert-success'; + return ( +
+ Remaining: £{budget - totalExpenses} +
+ ); +}; +export default Remaining;