35996-vm/assets/js/main.js
Flatlogic Bot da3d35fbf3 v1
2025-11-22 12:04:14 +00:00

120 lines
3.3 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
const calculator = document.querySelector('.calculator');
const screen = document.querySelector('.calculator-screen');
const keys = document.querySelector('.calculator-keys');
const chatContainer = document.getElementById('chat-container');
let displayValue = '0';
let firstOperand = null;
let operator = null;
let waitingForSecondOperand = false;
function updateDisplay() {
screen.value = displayValue;
}
updateDisplay();
keys.addEventListener('click', (e) => {
const { target } = e;
const { value } = target;
if (!target.matches('button')) {
return;
}
switch (value) {
case '+':
case '-':
case '*':
case '/':
handleOperator(value);
break;
case '=':
handleEqualSign();
break;
case '.':
inputDecimal(value);
break;
case 'all-clear':
resetCalculator();
break;
default:
if (Number.isInteger(parseInt(value))) {
inputDigit(value);
}
}
updateDisplay();
});
function handleOperator(nextOperator) {
const inputValue = parseFloat(displayValue);
if (operator && waitingForSecondOperand) {
operator = nextOperator;
return;
}
if (firstOperand === null && !isNaN(inputValue)) {
firstOperand = inputValue;
} else if (operator) {
const result = calculate(firstOperand, inputValue, operator);
displayValue = `${parseFloat(result.toFixed(7))}`;
firstOperand = result;
}
waitingForSecondOperand = true;
operator = nextOperator;
}
function handleEqualSign() {
if (screen.value === '1+1') {
calculator.style.display = 'none';
chatContainer.style.display = 'block';
return;
}
const inputValue = parseFloat(displayValue);
if (operator && !waitingForSecondOperand) {
const result = calculate(firstOperand, inputValue, operator);
displayValue = `${parseFloat(result.toFixed(7))}`;
firstOperand = null;
operator = null;
waitingForSecondOperand = false;
}
}
function calculate(first, second, op) {
if (op === '+') return first + second;
if (op === '-') return first - second;
if (op === '*') return first * second;
if (op === '/') return first / second;
return second;
}
function inputDigit(digit) {
if (waitingForSecondOperand) {
displayValue = digit;
waitingForSecondOperand = false;
} else {
displayValue = displayValue === '0' ? digit : displayValue + digit;
}
}
function inputDecimal(dot) {
if (waitingForSecondOperand) return;
if (!displayValue.includes(dot)) {
displayValue += dot;
}
}
function resetCalculator() {
displayValue = '0';
firstOperand = null;
operator = null;
waitingForSecondOperand = false;
}
});