Calculator Tools Calculator Tools
Create

Calculator Tools App

Sep 18, 2023

About this app

A collection of useful calculator tools

Calculator Tools App Calculator Tools App + - × ÷ 7 8 9 4 5 6 1 2 3 0 . AC =

Related apps

Put this on your site

Source

                    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>Calculator Tools App</title>
<meta name="description" content="A collection of useful calculator tools">
<meta name="keywords" content="calculator, tools, math, calculations">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">

<script type="text/javascript">
try {
// App Javascript Goes Here. Place your entire script content inside the try block for error handling.

// This will run when the DOM is ready.
document.addEventListener("DOMContentLoaded", function() {

// Calculator Tools App
const calculatorApp = {
displayValue: '0',
firstOperand: null,
operator: null,
waitingForSecondOperand: false,
};

function inputDigit(digit) {
const { displayValue, waitingForSecondOperand } = calculatorApp;

if (waitingForSecondOperand === true) {
calculatorApp.displayValue = digit;
calculatorApp.waitingForSecondOperand = false;
} else {
calculatorApp.displayValue = displayValue === '0' ? digit : displayValue + digit;
}
}

function inputDecimal(dot) {
if (!calculatorApp.displayValue.includes(dot)) {
calculatorApp.displayValue += dot;
}
}

function handleOperator(nextOperator) {
const { firstOperand, displayValue, operator } = calculatorApp;
const inputValue = parseFloat(displayValue);

if (operator && calculatorApp.waitingForSecondOperand) {
calculatorApp.operator = nextOperator;
return;
}

if (firstOperand == null && !isNaN(inputValue)) {
calculatorApp.firstOperand = inputValue;
} else if (operator) {
const result = calculate(firstOperand, inputValue, operator);

calculatorApp.displayValue = String(result);
calculatorApp.firstOperand = result;
}

calculatorApp.waitingForSecondOperand = true;
calculatorApp.operator = nextOperator;
}

function calculate(firstOperand, secondOperand, operator) {
if (operator === '+') {
return firstOperand + secondOperand;
} else if (operator === '-') {
return firstOperand - secondOperand;
} else if (operator === '*') {
return firstOperand * secondOperand;
} else if (operator === '/') {
return firstOperand / secondOperand;
}

return secondOperand;
}

function resetCalculator() {
calculatorApp.displayValue = '0';
calculatorApp.firstOperand = null;
calculatorApp.operator = null;
calculatorApp.waitingForSecondOperand = false;
}

function updateDisplay() {
const display = document.querySelector('.calculator-screen');
display.value = calculatorApp.displayValue;
}

updateDisplay();

const keys = document.querySelector('.calculator-keys');
keys.addEventListener('click', (event) => {
const { target } = event;
if (!target.matches('button')) {
return;
}

if (target.classList.contains('operator')) {
handleOperator(target.value);
updateDisplay();
return;
}

if (target.classList.contains('decimal')) {
inputDecimal(target.value);
updateDisplay();
return;
}

if (target.classList.contains('all-clear')) {
resetCalculator();
updateDisplay();
return;
}

inputDigit(target.value);
updateDisplay();
});

});

} catch (error) {
// This will throw the error to the parent window.
throw error;
}
</script>

<style>
/* App CSS Goes Here */
body {
background-color: #f5f5f5;
font-family: 'Roboto', sans-serif;
color: #333;
}

.container {
max-width: 400px;
margin: 0 auto;
padding: 20px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.calculator-screen {
width: 100%;
height: 60px;
border: none;
background-color: #eee;
font-size: 2rem;
text-align: right;
padding: 10px;
margin-bottom: 20px;
}

.calculator-keys {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px;
}

.calculator-keys button {
width: 100%;
height: 60px;
border: none;
outline: none;
background-color: #f2f2f2;
font-size: 1.5rem;
color: #333;
cursor: pointer;
border-radius: 5px;
transition: background-color 0.2s;
}

.calculator-keys button:hover {
background-color: #d4d4d4;
}

.operator {
background-color: #ff9500;
color: #fff;
}

.decimal {
background-color: #333;
color: #fff;
}

.all-clear {
background-color: #ac3939;
color: #fff;
}

.equal-sign {
background-color: #ff9500;
color: #fff;
height: 120px;
grid-area: 2 / 4 / 6 / 5;
}

.equal-sign:hover {
background-color: #ffac33;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<h1>Calculator Tools App</h1>
<input type="text" class="calculator-screen" value="" disabled />
<div class="calculator-keys">
<button class="operator" value="+">+</button>
<button class="operator" value="-">-</button>
<button class="operator" value="*">&times;</button>
<button class="operator" value="/">&divide;</button>
<button value="7">7</button>
<button value="8">8</button>
<button value="9">9</button>
<button value="4">4</button>
<button value="5">5</button>
<button value="6">6</button>
<button value="1">1</button>
<button value="2">2</button>
<button value="3">3</button>
<button value="0">0</button>
<button class="decimal" value=".">.</button>
<button class="all-clear" value="all-clear">AC</button>
<button class="equal-sign" value="=">=</button>
</div>
</div>
</body>
</html>