From f70acc8a3371a53bec4b720f24a2dab713f4827e Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 6 Mar 2026 00:19:52 +0000 Subject: [PATCH] 8 --- frontend/src/pages/calculator.tsx | 44 ++++++++++++++++++------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/frontend/src/pages/calculator.tsx b/frontend/src/pages/calculator.tsx index 778248c..9b6c7aa 100644 --- a/frontend/src/pages/calculator.tsx +++ b/frontend/src/pages/calculator.tsx @@ -17,29 +17,36 @@ const CalculatorPage = () => { const [operation, setOperation] = useState<'+' | '-' | '*' | '/' | 'AND' | 'OR' | 'XOR'>('+') const [result, setResult] = useState(null) const [activeInput, setActiveInput] = useState<'val1' | 'val2'>('val1') + const [isSequential, setIsSequential] = useState(false) const baseMap = { hex: 16, dec: 10, oct: 8, bin: 2 } + const calculate = (v1: string, v2: string, op: string) => { + const num1 = parseInt(v1, baseMap[base]) + const num2 = parseInt(v2, baseMap[base]) + let res: number + switch(op) { + case '+': res = num1 + num2; break + case '-': res = num1 - num2; break + case '*': res = num1 * num2; break + case '/': res = num1 / num2; break + case 'AND': res = num1 & num2; break + case 'OR': res = num1 | num2; break + case 'XOR': res = num1 ^ num2; break + default: res = num1 + } + return res.toString(baseMap[base]).toUpperCase() + } + const handleCalculate = () => { try { - const v1 = parseInt(val1, baseMap[base]) - const v2 = parseInt(val2, baseMap[base]) - - if (isNaN(v1) || (val2 && isNaN(v2))) throw new Error('Invalid input') - - let res: number - switch(operation) { - case '+': res = v1 + v2; break - case '-': res = v1 - v2; break - case '*': res = v1 * v2; break - case '/': res = v1 / v2; break - case 'AND': res = v1 & v2; break - case 'OR': res = v1 | v2; break - case 'XOR': res = v1 ^ v2; break - default: res = v1 + const res = calculate(val1, val2, operation) + setResult(res) + if (isSequential) { + setVal1(res) + setVal2('') + setActiveInput('val2') } - - setResult(res.toString(baseMap[base]).toUpperCase()) } catch (e) { alert('Error: Invalid calculation') } @@ -72,6 +79,7 @@ const CalculatorPage = () => { {(['hex', 'dec', 'oct', 'bin'] as const).map(b => ( { setBase(b); setVal1(''); setVal2(''); setResult(null); }} /> ))} + setIsSequential(!isSequential)} />
setActiveInput('val1')} style={{ borderColor: activeInput === 'val1' ? '#53F6C7' : '#ccc' }}> @@ -114,4 +122,4 @@ const CalculatorPage = () => { CalculatorPage.getLayout = (page: ReactElement) => {page} -export default CalculatorPage \ No newline at end of file +export default CalculatorPage