a,b calculations now working, but not a,b,c

This commit is contained in:
Andrzej Stepien 2023-07-05 23:23:46 +02:00
parent 6207015a7a
commit bb48e5cf6d
3 changed files with 56 additions and 23 deletions

View File

@ -1,6 +1,6 @@
export default function Button(props){
return(
<button onClick={props.handleInput}>{props.children}</button>
<button className="button" id={props.id} onClick={props.handleInput}>{props.children}</button>
)
}

View File

@ -2,12 +2,20 @@ import { useState } from "react";
import KeyPad from "./KeyPad";
export default function Calculator(props){
const [main,setMain] = useState(0)
const [memory,setMemory] = useState(0)
const [main,setMain] = useState("0")
const [memory,setMemory] = useState("0")
const [operation,setOperation] = useState("")
const map = {
conc:(numberString)=>{setMain(prev=>prev+numberString)},
conc:(numberString)=>{
if(main[0]==="0"){
console.log("STARTS WITH ZERO")
setMain(prev=>prev.slice(1)+numberString)
}else{
setMain(prev=>prev+numberString)
}
},
zero:function(){this.conc("0")},
one:function(){this.conc("1")},
@ -20,7 +28,7 @@ export default function Calculator(props){
eight:function(){this.conc("8")},
nine:function(){this.conc("9")},
decimal:function(){
if(!/./g.test(main)){
if(!/\./g.test(main)){
this.conc(".")
}
},
@ -40,9 +48,20 @@ export default function Calculator(props){
add:(a,b)=>{return a+b},
subtract:(a,b)=>{return a-b},
multiply:(a,b)=>{return a*b},
divide:(a,b)=>{return a/b},
divide:(a,b)=>{return b/a},
},
equals:()=>{setMain(prev=>{this.operations[operation](prev,memory)})}
clear:()=>{
setMain("0")
setMemory("0")
setOperation("")
},
equals:function(){
setMain(prev=>{
return this.operations[operation](parseInt(prev),parseInt(memory)).toString()
})
setOperation("")
}
}
function handleInput(content){
@ -53,9 +72,9 @@ export default function Calculator(props){
return(
<>
<div id="display">
<div id="display-container">
<p id="memory">{memory}</p>
<p id="main">{main}</p>
<p id="display">{main}</p>
<p id="operation">{operation}</p>
</div>
<KeyPad handleInput={handleInput}/>

View File

@ -22,23 +22,37 @@ export default function NumPad(props){
}
const functionMap = {
clear:"C",
equals:"="
}
const numPad = Object.keys(numberMap).map((e,i)=>{
function buildButtons(map){
return Object.keys(map).map((e,i)=>{
return(
<Button
id={e}
content={numberMap[e]}
key={"numPad"+e}
content={map[e]}
key={e+i}
handleInput={()=>props.handleInput(e)}>
{numberMap[e]}
{map[e]}
</Button>
)
})
}
return(
<div className="numPad">
{numPad}
<div className="keypad">
<div className="num-pad">
{buildButtons(numberMap)}
</div>
<div className="operator-pad">
{buildButtons(operatorMap)}
</div>
<div className="function-pad">
{buildButtons(functionMap)}
</div>
</div>
)
}