{"version":3,"sources":["components/ResultsIteration.js","components/Graph/Graph.jsx","components/ResultsModal.js","components/HeadBanner.js","components/common/DropDown/DropDown.jsx","components/HistoricalDataModal.js","resources/data/yearInterestPairUK.js","resources/data/yearInterestPairUSA.js","resources/data/dataSet.js","components/HistoricalSection/HistoricalSection.jsx","components/CustomSection/CustomTableRow.js","components/CustomSection/CustomSection.jsx","components/Description/Description.jsx","resources/themeOptions.js","CustomStepper/CustomStepper.jsx","Main.js","common/calculate.js","index.js"],"names":["Iteration","_ref","year","initialBalance","interestRate","annualInterest","newBankBalance","react_default","a","createElement","TableRow","TableCell","parseFloat","toFixed","Graph","labels","dataset","_ref$header","header","graphData","datasets","label","backgroundColor","borderColor","borderWidth","data","dist","options","title","display","text","fontSize","legend","position","ResultsModal","content","bankBankBalance","initialBankBalance","finalBankBalance","iterations","map","iter","dataSet","Fragment","Grid2","container","item","size","style","width","components_Graph_Graph","maxHeight","overflow","Table","TableBody","iteration","index","ResultsIteration","key","HeadBanner","className","DropDown","labelName","items","value","setValue","Select","autoWidth","onChange","e","target","MenuItem","HistoricalDataModal","open","closeCall","countryCode","yearInterestPairData","Object","keys","Dialog","fullWidth","maxWidth","onClose","DialogTitle","id","DialogActions","IconButton","onClick","Close_default","DialogContent","yearInterestRatePairUK","1975","1976","1977","1978","1979","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023","yearInterestRatePairUSA","1954","1955","1956","1957","1958","1959","1960","1961","1962","1963","1964","1965","1966","1967","1968","1969","1970","1971","1972","1973","1974","getDataSet","country","ukData","usData","HistoricalSection","setPayload","isCustom","getEarliestYear","getLatestYear","length","_useState","useState","_useState2","slicedToArray","setCountry","_useState3","_useState4","historicalDataSet","setHistoricalDataSet","_useState5","_useState6","startYear","setStartYear","_useState7","_useState8","endYear","setEndYear","_useState9","_useState10","historicalDataModalOpen","setHistoricalDataModalOpen","_useState11","_useState12","yearValuePairPayload","setYearValuePairPayload","useEffect","getDataFromRange","relevantData","FormControlLabel","paddingLeft","control","Button","variant","common_DropDown_DropDown","newValue","marginTop","color","components_HistoricalDataModal","CustomTableRow","deleteRow","addFunction","showCopy","classes","Delete_default","CustomSection","customData","setCustomData","newYear","setNewYear","newInterestRate","setNewInterestRate","isFirstRow","setIsFirstRow","years","setYears","numTextBoxValidation","parVal","addRow","previousData","objectSpread","parseInt","CustomSection_CustomTableRow","revisedCustomData","latestYear","x","nextIndex","TextField","error","helperText","type","disabled","AddCircleOutline_default","Description","themeOptions","createTheme","palette","primary","main","secondary","typography","button","fontWeight","CustomStepper","steps","setCurrentStep","currentStep","children","CircularBackground","styled","_ref2","bgColor","borderRadius","alignItems","justifyContent","height","CustomStepIcon","_ref3","active","completed","icon","icons","fa6","hi2","im","Stepper","connector","activeStep","alternativeLabel","Step","transform","StepLabel","StepIconComponent","textAlign","columns","left","margin","right","Main","bankBalance","setBankBalance","results","setResults","setIsCustom","payload","sendButtonClick","res","yearInterestPair","responseBody","hasOwnProperty","iterationList","interestRateMultiplier","push","calculate","ThemeProvider","theme","components_HeadBanner","components_Description_Description","src_CustomStepper_CustomStepper","newVal","Grid","Accordion","expanded","AccordionSummary","expandIcon","ExpandMore","aria-controls","AccordionDetails","components_HistoricalSection_HistoricalSection","newPayload","components_CustomSection_CustomSection","components_ResultsModal","ReactDOM","render","src_Main","document","getElementById"],"mappings":"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","file":"static/js/main.7bfbd71d.chunk.js","sourcesContent":["import React from \"react\";\r\nimport {TableCell, TableRow} from \"@mui/material\";\r\n\r\nconst Iteration = ({year, initialBalance, interestRate, annualInterest, newBankBalance}) => {\r\n\r\n return(\r\n \r\n {year}\r\n {parseFloat(initialBalance).toFixed(2)}\r\n {parseFloat(interestRate).toFixed(2)}\r\n {parseFloat(annualInterest).toFixed(2)}\r\n {parseFloat(newBankBalance).toFixed(2)}\r\n \r\n );\r\n};\r\nexport default Iteration;\r\n","import React from 'react';\r\nimport {Line} from 'react-chartjs-2';\r\nimport Chart from 'chart.js/auto';\r\n\r\n\r\n\r\nconst Graph = ({labels, dataset, header = 'Bank Balance'}) => {\r\n\r\n\r\n const graphData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n label: header,\r\n backgroundColor: '#85BB65',\r\n borderColor: '#85BB65',\r\n borderWidth: 2,\r\n data: dataset\r\n }\r\n ]\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Graph;\r\n","import {IconButton, Table, TableBody, TableRow} from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport React from \"react\";\r\nimport Iteration from \"./ResultsIteration\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Graph from \"./Graph/Graph\";\r\nimport Grid2 from \"@mui/material/Unstable_Grid2\";\r\n\r\nconst ResultsModal = ({content}) => {\r\n\r\n let bankBankBalance = content.initialBankBalance;\r\n let finalBankBalance = content.finalBankBalance;\r\n let iterations = content.iterations;\r\n\r\n let labels = iterations.map((iter) => {\r\n return iter.year\r\n })\r\n\r\n let dataSet = iterations.map((iter) => {\r\n return iter.newBankBalance\r\n })\r\n\r\n return(\r\n <>\r\n \r\n\r\n \r\n

Final Balance: {parseFloat(finalBankBalance).toFixed(2)}

\r\n
\r\n \r\n

Starting Bank Balance: {bankBankBalance}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n iterations.map((iteration, index) => {\r\n return(\r\n \r\n )\r\n })}\r\n \r\n
YearStart BalanceInterest RateAnnual InterestEnd Balance
\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n );\r\n};\r\nexport default ResultsModal;\r\n","import React from \"react\";\r\n\r\nconst HeadBanner = () => {\r\n return (\r\n
\r\n
\r\n
\r\n HistoricalSavingsCalculator.com\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default HeadBanner;\r\n","import {MenuItem, Select} from \"@mui/material\";\r\nimport React from \"react\";\r\nimport \"./styles.css\"\r\n\r\nconst DropDown = ({labelName, items, value, setValue}) => {\r\n\r\n\r\n return(\r\n
\r\n {labelName}:\r\n \r\n setValue(e.target.value)}\r\n >\r\n {items.map((item) => {\r\n return {item}\r\n })}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DropDown;\r\n\r\n\r\n\r\n","import {AccordionDetails, IconButton, Table, TableBody, TableCell, TableRow} from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Graph from \"./Graph/Graph\";\r\n\r\nconst HistoricalDataModal = ({open, closeCall, countryCode, yearInterestPairData}) => {\r\n\r\n let labels = Object.keys(yearInterestPairData)\r\n let dataset = labels.map((label) => {\r\n return yearInterestPairData[label]\r\n })\r\n\r\n return(\r\n\r\n \r\n \r\n \r\n

Historical Data: {countryCode}

\r\n {closeCall()}}\r\n >\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n Object.keys(yearInterestPairData).map((key) => {\r\n return({key}{yearInterestPairData[key]})\r\n })\r\n }\r\n \r\n \r\n \r\n
YearInterest Rate
\r\n
\r\n \r\n );\r\n};\r\nexport default HistoricalDataModal;\r\n","const yearInterestRatePairUK = {\r\n 1975: 10.76,\r\n 1976: 11.73,\r\n 1977: 8.45,\r\n 1978: 9.13,\r\n 1979: 13.75,\r\n 1980: 16.31,\r\n 1981: 13.16,\r\n 1982: 11.96,\r\n 1983: 9.86,\r\n 1984: 9.67,\r\n 1985: 12.06,\r\n 1986: 10.74,\r\n 1987: 9.6,\r\n 1988: 9.95,\r\n 1989: 13.68,\r\n 1990: 14.65,\r\n 1991: 11.56,\r\n 1992: 9.43,\r\n 1993: 5.9,\r\n 1994: 5.34,\r\n 1995: 6.57,\r\n 1996: 5.89,\r\n 1997: 6.55,\r\n 1998: 7.23,\r\n 1999: 5.34,\r\n 2000: 5.96,\r\n 2001: 5.12,\r\n 2002: 4,\r\n 2003: 3.69,\r\n 2004: 4.38,\r\n 2005: 4.65,\r\n 2006: 4.64,\r\n 2007: 5.51,\r\n 2008: 4.68,\r\n 2009: 0.64,\r\n 2010: 0.5,\r\n 2011: 0.5,\r\n 2012: 0.5,\r\n 2013: 0.5,\r\n 2014: 0.5,\r\n 2015: 0.5,\r\n 2016: 0.4,\r\n 2017: 0.29,\r\n 2018: 0.6,\r\n 2019: 0.75,\r\n 2020: 0.23,\r\n 2021: 0.11,\r\n 2022: 1.46,\r\n 2023: 4.51\r\n };\r\n\r\nexport default yearInterestRatePairUK\r\n","//https://fred.stlouisfed.org/series/FEDFUNDS\r\n\r\nconst yearInterestRatePairUSA = {\r\n '1954': 1.01,\r\n '1955': 1.79,\r\n '1956': 2.73,\r\n '1957': 3.11,\r\n '1958': 1.57,\r\n '1959': 3.31,\r\n '1960': 3.21,\r\n '1961': 1.95,\r\n '1962': 2.71,\r\n '1963': 3.18,\r\n '1964': 3.5,\r\n '1965': 4.08,\r\n '1966': 5.11,\r\n '1967': 4.22,\r\n '1968': 5.66,\r\n '1969': 8.21,\r\n '1970': 7.17,\r\n '1971': 4.67,\r\n '1972': 4.44,\r\n '1973': 8.74,\r\n '1974': 10.51,\r\n '1975': 5.82,\r\n '1976': 5.05,\r\n '1977': 5.54,\r\n '1978': 7.94,\r\n '1979': 11.2,\r\n '1980': 13.35,\r\n '1981': 16.39,\r\n '1982': 12.24,\r\n '1983': 9.09,\r\n '1984': 10.23,\r\n '1985': 8.1,\r\n '1986': 6.8,\r\n '1987': 6.66,\r\n '1988': 7.57,\r\n '1989': 9.21,\r\n '1990': 8.1,\r\n '1991': 5.69,\r\n '1992': 3.52,\r\n '1993': 3.02,\r\n '1994': 4.21,\r\n '1995': 5.83,\r\n '1996': 5.3,\r\n '1997': 5.46,\r\n '1998': 5.35,\r\n '1999': 4.97,\r\n '2000': 6.24,\r\n '2001': 3.69,\r\n '2002': 1.67,\r\n '2003': 1.13,\r\n '2004': 1.35,\r\n '2005': 3.22,\r\n '2006': 4.97,\r\n '2007': 5.02,\r\n '2008': 1.92,\r\n '2009': 0.16,\r\n '2010': 0.18,\r\n '2011': 0.1,\r\n '2012': 0.14,\r\n '2013': 0.11,\r\n '2014': 0.09,\r\n '2015': 0.13,\r\n '2016': 0.39,\r\n '2017': 1,\r\n '2018': 1.84,\r\n '2019': 2.15,\r\n '2020': 0.37,\r\n '2021': 0.08,\r\n '2022': 1.72\r\n};\r\n\r\nexport default yearInterestRatePairUSA\r\n","import ukData from './yearInterestPairUK'\r\nimport usData from './yearInterestPairUSA'\r\n\r\n const getDataSet = (country) => {\r\n switch(country){\r\n case \"UK\":\r\n return ukData\r\n case \"USA\":\r\n return usData\r\n default:\r\n return usData\r\n }\r\n}\r\n\r\nexport default getDataSet;","import React, {useEffect, useState} from \"react\";\r\nimport {Button, FormControlLabel} from \"@mui/material\";\r\nimport DropDown from \"../common/DropDown/DropDown\";\r\nimport countryList from \"../../resources/countryList\";\r\nimport HistoricalDataModal from \"../HistoricalDataModal\";\r\nimport getDataSet from \"../../resources/data/dataSet\";\r\nimport \"./styles.css\"\r\n\r\n\r\nconst HistoricalSection = ({setPayload, isCustom}) =>{\r\n\r\n const getEarliestYear = (dataSet) => {\r\n return Object.keys(dataSet)[0]\r\n }\r\n\r\n const getLatestYear = (dataSet) => {\r\n return Object.keys(dataSet)[Object.keys(dataSet).length-1]\r\n }\r\n\r\n const [country, setCountry] = useState(\"USA\");\r\n const [historicalDataSet, setHistoricalDataSet] = useState(getDataSet(country))\r\n const [startYear, setStartYear] = useState(getEarliestYear(historicalDataSet));\r\n const [endYear, setEndYear] = useState(getLatestYear(historicalDataSet));\r\n const [historicalDataModalOpen, setHistoricalDataModalOpen] = useState(false);\r\n const [yearValuePairPayload, setYearValuePairPayload ] = useState({})\r\n\r\n useEffect(() => {\r\n setStartYear(getEarliestYear(historicalDataSet))\r\n setEndYear(getLatestYear(historicalDataSet))\r\n },[historicalDataSet])\r\n\r\n useEffect(() => {\r\n setStartYear(getEarliestYear(historicalDataSet))\r\n setEndYear(getLatestYear(historicalDataSet))\r\n },\r\n [])\r\n\r\n useEffect(() => {\r\n setPayload(yearValuePairPayload)\r\n }, [yearValuePairPayload])\r\n\r\n useEffect(() => {\r\n setHistoricalDataSet(getDataSet(country))\r\n setYearValuePairPayload(getDataFromRange(historicalDataSet));\r\n }, [country])\r\n\r\n useEffect(() => {\r\n setYearValuePairPayload(getDataFromRange(historicalDataSet));\r\n },[startYear, endYear]);\r\n\r\n const getDataFromRange = (dataSet) => {\r\n let relevantData = {};\r\n for(let year = startYear; year <= endYear; year++) {\r\n relevantData[year] = dataSet[year]\r\n }\r\n return relevantData;\r\n };\r\n\r\n useEffect(() => {\r\n setPayload(yearValuePairPayload)\r\n }, [isCustom])\r\n\r\n return(\r\n <>\r\n
\r\n
\r\n

Historical Data

\r\n }/>\r\n \r\n \r\n setStartYear(newValue)}\r\n />\r\n setEndYear(newValue)}\r\n />\r\n
\r\n \r\n
\r\n
\r\n
\r\n {historicalDataModalOpen ? (\r\n {setHistoricalDataModalOpen(false)}} countryCode={country} yearInterestPairData={historicalDataSet}/>\r\n ):(\r\n <>\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default HistoricalSection\r\n","import React from \"react\";\r\nimport {TableCell, TableRow} from \"@mui/material\";\r\nimport{Button} from \"@mui/material\";\r\nimport \"./styles.css\"\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\n\r\n\r\nconst CustomTableRow = ({year, interestRate, deleteRow, addFunction, showCopy}) => {\r\n\r\n return(\r\n \r\n {year}\r\n {interestRate}\r\n \r\n \r\n {\r\n // showCopy &&\r\n // \r\n\r\n }\r\n\r\n \r\n \r\n );\r\n}\r\n\r\nexport default CustomTableRow\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n Button,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n TextField\r\n} from \"@mui/material\";\r\nimport CustomTableRow from \"./CustomTableRow\";\r\nimport AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';\r\nimport \"./styles.css\"\r\n\r\n\r\nconst CustomSection = ({ setPayload, isCustom }) => {\r\n\r\n const [customData, setCustomData] = useState({})\r\n const [newYear, setNewYear] = useState(\"1\");\r\n const [newInterestRate, setNewInterestRate] = useState(\"0\")\r\n const [isFirstRow, setIsFirstRow] = useState(true)\r\n const [years, setYears] = useState(Object.keys(customData))\r\n const [yearValuePairPayload, setYearValuePairPayload ] = useState({})\r\n\r\n const numTextBoxValidation = (parVal) => {\r\n return parVal === \"\" || parVal < 0\r\n }\r\n\r\n\r\n\r\n const addRow = (interestRate) => {\r\n\r\n let previousData = {...customData}\r\n previousData[parseInt(newYear)] = parseFloat(interestRate)\r\n setCustomData(previousData)\r\n\r\n setIsFirstRow(false);\r\n setNewYear(parseInt(newYear) + 1)\r\n setNewInterestRate(interestRate)\r\n\r\n }\r\n\r\n const getLatestYear = () => {\r\n let years = Object.keys(customData);\r\n return parseInt(years[years.length -1]);\r\n }\r\n\r\n const deleteRow = (key) => {\r\n let revisedCustomData = {...customData}\r\n delete revisedCustomData[key];\r\n let latestYear = getLatestYear()\r\n\r\n for (let x = key; x < latestYear; x++){\r\n let nextIndex = parseInt(x) + 1;\r\n revisedCustomData[x] = revisedCustomData[nextIndex]\r\n }\r\n delete revisedCustomData[latestYear]\r\n setCustomData(revisedCustomData);\r\n setNewYear(getLatestYear())\r\n }\r\n\r\n useEffect(() => {\r\n setYears(Object.keys(customData))\r\n setYearValuePairPayload(customData)\r\n },[customData])\r\n\r\n useEffect(() => {\r\n years.length === 0? setIsFirstRow(true): setIsFirstRow(false)\r\n }, [years])\r\n\r\n useEffect(() => {\r\n setPayload(yearValuePairPayload)\r\n }, [yearValuePairPayload])\r\n\r\n\r\n useEffect(() => {\r\n if(isCustom){\r\n setPayload(yearValuePairPayload)\r\n }\r\n }, isCustom)\r\n\r\n return(\r\n
\r\n
\r\n

Custom Data

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n years.map((year, index) => {\r\n return ( deleteRow(year)}\r\n addFunction={addRow}\r\n showCopy={(year == getLatestYear())}\r\n />)\r\n })\r\n }\r\n \r\n \r\n {setNewYear(e.target.value)}}/>\r\n \r\n \r\n {setNewInterestRate(parseFloat(e.target.value))}}/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n
YearInterest RateActions
\r\n
\r\n\r\n\r\n
\r\n\r\n );\r\n};\r\nexport default CustomSection;\r\n","import React from \"react\";\r\nimport \"./styles.css\"\r\n\r\nconst Description = () => {\r\n\r\n return (\r\n
\r\n

Historical Savings Compound Interest Calculator

\r\n

Historical Savings Calculator aims to provide an insight into historical interest rates and their affects on customers savings accounts. Using a compound interest calculator we can see recent interest rates and how they compare to the historical interest rates of previous decades.

\r\n

Datasets are compiled via recording the annual average historical interest rate of each national bank and adding this data to the compound interest calculator.

\r\n
\r\n )\r\n\r\n}\r\n\r\nexport default Description\r\n","import {createTheme} from \"@mui/material\"\r\n\r\nexport const themeOptions = createTheme({\r\n palette: {\r\n type: 'light',\r\n primary: {\r\n main: '#3571FD',\r\n },\r\n secondary: {\r\n main: '#c22323',\r\n },\r\n },\r\n typography: {\r\n\r\n button: { // Here is where you can customise the button\r\n fontSize: 16,\r\n fontWeight: 600,\r\n },\r\n }\r\n});\r\n","import React from \"react\";\r\n// import {Button, Step, StepLabel, Stepper} from \"@mui/material\";\r\nimport { FaCircleDollarToSlot } from \"react-icons/fa6\";\r\nimport { HiMiniCog6Tooth } from \"react-icons/hi2\";\r\nimport { ImStatsDots } from \"react-icons/im\";\r\nimport { styled } from '@mui/system';\r\nimport {Button, StepLabel, Stepper} from \"@mui/material\";\r\nimport Step from '@mui/material/Step';\r\nimport Grid2 from \"@mui/material/Unstable_Grid2\";\r\n\r\nconst CustomStepper = ({ steps, setCurrentStep, currentStep, children }) => {\r\n\r\n const CircularBackground = styled('div')(({ bgColor }) => ({\r\n backgroundColor: bgColor,\r\n borderRadius: '50%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 40,\r\n height: 40\r\n }));\r\n //\r\n const CustomStepIcon = ({ active, completed, icon }) => {\r\n const bgColor = active || completed ? '#3f51b5' : '#e0e0e0';\r\n\r\n const icons = [\r\n ,\r\n ,\r\n \r\n ];\r\n\r\n return (\r\n \r\n {icons[icon - 1]}\r\n \r\n );\r\n };\r\n\r\n\r\n\r\n return (\r\n <>\r\n\r\n
\r\n } activeStep={currentStep} alternativeLabel>\r\n {steps.map((label, index) => (\r\n \r\n \r\n {label}\r\n \r\n \r\n ))}\r\n \r\n
\r\n\r\n
\r\n {children}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {/* Your main content goes here */}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CustomStepper;\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n TextField,\r\n Grid, ThemeProvider,\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails\r\n\r\n} from \"@mui/material\";\r\nimport ResultsModal from \"./components/ResultsModal\"\r\nimport HeadBanner from \"./components/HeadBanner\";\r\nimport HistoricalSection from \"./components/HistoricalSection/HistoricalSection\";\r\nimport CustomSection from \"./components/CustomSection/CustomSection\";\r\nimport Description from \"./components/Description/Description\";\r\nimport {themeOptions} from \"./resources/themeOptions\";\r\nimport {calculate} from './common/calculate'\r\nimport CustomStepper from \"./CustomStepper/CustomStepper\";\r\nimport {ExpandMore} from \"@mui/icons-material\";\r\n\r\nconst Main = () => {\r\n\r\n const steps = [\r\n \"1. Balance\",\r\n \"2. Parameters\",\r\n \"3. Results\"\r\n ]\r\n\r\n const [bankBalance, setBankBalance] = useState(1000);\r\n const [results, setResults] = useState(null);\r\n const [currentStep, setCurrentStep] = useState(0);\r\n const [isCustom, setIsCustom] = useState(false)\r\n const [payload,setPayload]=useState(null)\r\n\r\n\r\n const sendButtonClick = () => {\r\n\r\n\r\n let tempPayload = {\r\n \"bankBalance\": bankBalance,\r\n \"yearInterestPair\": payload\r\n };\r\n\r\n if (payload !== null) {\r\n let res = calculate(tempPayload);\r\n setResults(res)\r\n }\r\n };\r\n useEffect(() =>{\r\n\r\n sendButtonClick()\r\n },[payload])\r\n\r\n\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n setCurrentStep(newVal)}\r\n steps={steps}\r\n currentStep={currentStep}\r\n >\r\n\r\n {\r\n currentStep === 0 && (\r\n\r\n
\r\n
\r\n
\r\n

Select a starting balance:

\r\n
\r\n
\r\n setBankBalance(e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n\r\n )\r\n }\r\n\r\n {\r\n currentStep === 1 && (\r\n \r\n

Choose historical data or create your own custom dataset:

\r\n\r\n \r\n setIsCustom(false)}/>}\r\n aria-controls=\"panel1-content\"\r\n id=\"panel1-header\"\r\n >\r\n Historical Data\r\n \r\n \r\n {setPayload(newPayload)}}\r\n isCustom={isCustom}\r\n />\r\n \r\n \r\n \r\n setIsCustom(true)}/>}\r\n aria-controls=\"panel2-content\"\r\n id=\"panel2-header\"\r\n >\r\n Custom Data\r\n \r\n \r\n {\r\n isCustom && (\r\n {setPayload(newPayload)}}\r\n isCustom={isCustom}\r\n />\r\n )\r\n }\r\n\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n {\r\n currentStep === 2 && (\r\n
\r\n {\r\n results !== null && (\r\n \r\n\r\n )\r\n }\r\n
\r\n )\r\n }\r\n \r\n\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Main;\r\n","export const calculate = (payload) => {\r\n\r\n let initialBankBalance;\r\n let finalBankBalance;\r\n let yearInterestPair;\r\n let error = null;\r\n let responseBody = {};\r\n if (payload.hasOwnProperty(\"bankBalance\") && payload.hasOwnProperty(\"yearInterestPair\")) {\r\n\r\n yearInterestPair = payload.yearInterestPair;\r\n initialBankBalance = payload.bankBalance;\r\n finalBankBalance = parseFloat(initialBankBalance);\r\n\r\n let iterationList = [];\r\n for (let year in yearInterestPair) {\r\n let iteration = {};\r\n iteration.year = year;\r\n iteration.initialBalance = parseFloat(finalBankBalance );\r\n iteration.interestRate = parseFloat(yearInterestPair[year]);\r\n let interestRateMultiplier = iteration.interestRate/100\r\n iteration.annualInterest = (finalBankBalance * interestRateMultiplier);\r\n finalBankBalance = parseFloat(finalBankBalance + iteration.annualInterest);\r\n iteration.newBankBalance = (finalBankBalance );\r\n iterationList.push(iteration);\r\n }\r\n responseBody.initialBankBalance = initialBankBalance;\r\n responseBody.iterations = iterationList;\r\n responseBody.finalBankBalance = finalBankBalance;\r\n }\r\n else {\r\n error = \"missing essential properties\"\r\n }\r\n\r\n if (error !== null){\r\n responseBody.error = error;\r\n }\r\n return responseBody;\r\n};\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport Main from \"./Main\";\r\n\r\nReactDOM.render(\r\n
,\r\n document.getElementById(\"root\")\r\n);\r\n"],"sourceRoot":""}