import { useState, useEffect, useRef, useContext } from 'react'; import BudgetPeriodTransTable from './BudgetPeriodTransTable'; import Lock from '../resources/Lock.svg'; import OpenLock from '../resources/OpenLock.svg'; import './BudgetPeriodCard.scss'; import { BudgetContext } from '../data/context/BudgetContext'; const BudgetPeriodCard = ({periodData, isActive}) => { const cardRef = useRef(), context = useContext(BudgetContext), [bankBalance, setBankBalance] = useState(0), [projectedLeftover, setProjectedLeftover] = useState(0), paidBills = periodData.bills.filter((bill) => bill.paid), unpaidBills = periodData.bills.filter((bill) => !bill.paid), [incomes, setIncomes] = useState(periodData.income), [paidIncomes, setPaidIncomes] = useState([]), [unpaidIncomes, setUnpaidIncomes] = useState([]), moveTransItemAction = (row) => { const data = row.cells[2].data context.api.updateBillPaid(periodData.id, data.id); }; useEffect(() => { if(isActive) { cardRef.current.scrollIntoView({inline: "start"}); cardRef.current.parentElement.scrollBy(-40, 0); } }, []); useEffect(() => { setPaidIncomes(incomes.filter((income) => income.paid)); }, [incomes]); useEffect(() => { setUnpaidIncomes(incomes.filter((income) => !income.paid)); }, [incomes]); useEffect(() => { setBankBalance( periodData.startingAmount - paidBills.reduce((prev, bill) => { return prev + bill.amount; }, 0.0) + paidIncomes.reduce((prev, income) => { return prev + income.amount; }, 0.0) ); }, [paidBills, paidIncomes]); useEffect(() => { setProjectedLeftover( bankBalance - unpaidBills.reduce((prev, bill) => { return prev + bill.amount; }, 0.0) + unpaidIncomes.reduce((prev, income) => { return prev + income.amount; }, 0.0) ); }, [bankBalance, unpaidBills, unpaidIncomes]); return (