trying to nail that last test...
This commit is contained in:
parent
bb48e5cf6d
commit
4037be8b05
|
@ -3,18 +3,18 @@ import KeyPad from "./KeyPad";
|
||||||
|
|
||||||
export default function Calculator(props){
|
export default function Calculator(props){
|
||||||
const [main,setMain] = useState("0")
|
const [main,setMain] = useState("0")
|
||||||
const [memory,setMemory] = useState("0")
|
const [mainInitialised, setMainInitialised] = useState(true)
|
||||||
|
const [memory,setMemory] = useState("")
|
||||||
const [operation,setOperation] = useState("")
|
const [operation,setOperation] = useState("")
|
||||||
|
|
||||||
const map = {
|
const map = {
|
||||||
conc:(numberString)=>{
|
conc:(numberString)=>{
|
||||||
if(main[0]==="0"){
|
if(main[0]==="0"){
|
||||||
console.log("STARTS WITH ZERO")
|
|
||||||
setMain(prev=>prev.slice(1)+numberString)
|
setMain(prev=>prev.slice(1)+numberString)
|
||||||
}else{
|
}else{
|
||||||
setMain(prev=>prev+numberString)
|
setMain(prev=>prev+numberString)
|
||||||
}
|
}
|
||||||
|
setMainInitialised(false)
|
||||||
},
|
},
|
||||||
|
|
||||||
zero:function(){this.conc("0")},
|
zero:function(){this.conc("0")},
|
||||||
|
@ -38,34 +38,45 @@ export default function Calculator(props){
|
||||||
multiply:function(){this.rcvOperator("multiply")},
|
multiply:function(){this.rcvOperator("multiply")},
|
||||||
divide:function(){this.rcvOperator("divide")},
|
divide:function(){this.rcvOperator("divide")},
|
||||||
|
|
||||||
rcvOperator:(operator)=>{
|
rcvOperator:function(operator){
|
||||||
setMemory(main)
|
const operatorAlreadyEntered = operation===""?false:true
|
||||||
setMain("0")
|
console.log(operatorAlreadyEntered)
|
||||||
setOperation(operator)
|
setOperation(operator)
|
||||||
|
if(!mainInitialised && !operatorAlreadyEntered){
|
||||||
|
setMemory(prev=>{return this.calculate(main,prev)})
|
||||||
|
}else{
|
||||||
|
setMemory(main)
|
||||||
|
}
|
||||||
|
setMainInitialised(true)
|
||||||
|
setMain("0")
|
||||||
},
|
},
|
||||||
|
|
||||||
operations:{
|
operations:{
|
||||||
add:(a,b)=>{return a+b},
|
add:(a,b)=>{return a+b},
|
||||||
subtract:(a,b)=>{return a-b},
|
subtract:(a,b)=>{return b-a},
|
||||||
multiply:(a,b)=>{return a*b},
|
multiply:(a,b)=>{return a*b},
|
||||||
divide:(a,b)=>{return b/a},
|
divide:(a,b)=>{return b/a},
|
||||||
},
|
},
|
||||||
|
|
||||||
clear:()=>{
|
clear:()=>{
|
||||||
setMain("0")
|
setMain("0")
|
||||||
setMemory("0")
|
setMainInitialised(true)
|
||||||
|
setMemory("")
|
||||||
setOperation("")
|
setOperation("")
|
||||||
},
|
},
|
||||||
equals:function(){
|
equals:function(){
|
||||||
setMain(prev=>{
|
setMain(prev=>{
|
||||||
return this.operations[operation](parseInt(prev),parseInt(memory)).toString()
|
return this.calculate(prev,memory)
|
||||||
})
|
})
|
||||||
|
setMemory("")
|
||||||
setOperation("")
|
setOperation("")
|
||||||
|
},
|
||||||
|
calculate:function(a,b){
|
||||||
|
return this.operations[operation](parseFloat(a),parseFloat(b)).toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleInput(content){
|
function handleInput(content){
|
||||||
console.log("handling input!")
|
|
||||||
map[content]()
|
map[content]()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,6 +87,7 @@ export default function Calculator(props){
|
||||||
<p id="memory">{memory}</p>
|
<p id="memory">{memory}</p>
|
||||||
<p id="display">{main}</p>
|
<p id="display">{main}</p>
|
||||||
<p id="operation">{operation}</p>
|
<p id="operation">{operation}</p>
|
||||||
|
<p>{JSON.stringify(mainInitialised)}</p>
|
||||||
</div>
|
</div>
|
||||||
<KeyPad handleInput={handleInput}/>
|
<KeyPad handleInput={handleInput}/>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue