Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a1e06f2

Browse files
committed
new files added
1 parent cb8867f commit a1e06f2

File tree

26 files changed

+300
-294
lines changed

26 files changed

+300
-294
lines changed
Lines changed: 74 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,75 @@
1-
<!doctype html>
2-
<html lang="en">
3-
4-
<head>
5-
<meta charset="utf-8">
6-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7-
8-
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
9-
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
10-
<link rel="stylesheet" href="style.css">
11-
12-
<title>Stefanos' Javascript Calculator</title>
13-
<script src="https://kit.fontawesome.com/b039c65688.js" crossorigin="anonymous"></script>
14-
</head>
15-
16-
<body>
17-
<div class="container text-center background">
18-
<div class="row justify-content-center">
19-
<div class="screen m-3 rounded">
20-
<div data-previous-operand class="previous-operand"></div>
21-
<div data-current-operand class="current-operand"></div>
22-
</div>
23-
</div>
24-
25-
<div class="row justify-content-center">
26-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto clear" data-all-clear>AC</button>
27-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-delete><i
28-
class="fas fa-backspace"></i></button>
29-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>÷</button>
30-
</div>
31-
<div class="row justify-content-center">
32-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>7</button>
33-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>8</button>
34-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>9</button>
35-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>×</button>
36-
</div>
37-
<div class="row justify-content-center">
38-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>4</button>
39-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>5</button>
40-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>6</button>
41-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>-</button>
42-
</div>
43-
<div class="row justify-content-center">
44-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>1</button>
45-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>2</button>
46-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>3</button>
47-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>+</button>
48-
</div>
49-
<div class="row justify-content-center">
50-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>0</button>
51-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>00</button>
52-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>.</button>
53-
<button type="button" class="btn btn-dark btn-lg m-1 p-auto equals" data-equals><i
54-
class="fas fa-equals"></i></button>
55-
</div>
56-
57-
58-
</div>
59-
60-
<!-- Optional JavaScript -->
61-
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
62-
63-
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
64-
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
65-
crossorigin="anonymous"></script>
66-
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"
67-
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
68-
crossorigin="anonymous"></script>
69-
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
70-
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
71-
crossorigin="anonymous"></script>
72-
<script src="main.js"></script>
73-
</body>
74-
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7+
8+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
9+
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
10+
<link rel="stylesheet" href="style.css">
11+
12+
<title>Stefanos' Javascript Calculator</title>
13+
<script src="https://kit.fontawesome.com/b039c65688.js" crossorigin="anonymous"></script>
14+
</head>
15+
16+
<body>
17+
<div class="container text-center background">
18+
<div class="row justify-content-center">
19+
<div class="screen m-3 rounded">
20+
<div data-previous-operand class="previous-operand"></div>
21+
<div data-current-operand class="current-operand"></div>
22+
</div>
23+
</div>
24+
25+
<div class="row justify-content-center">
26+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto clear" data-all-clear>AC</button>
27+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-delete><i
28+
class="fas fa-backspace"></i></button>
29+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>÷</button>
30+
</div>
31+
<div class="row justify-content-center">
32+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>7</button>
33+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>8</button>
34+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>9</button>
35+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>×</button>
36+
</div>
37+
<div class="row justify-content-center">
38+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>4</button>
39+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>5</button>
40+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>6</button>
41+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>-</button>
42+
</div>
43+
<div class="row justify-content-center">
44+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>1</button>
45+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>2</button>
46+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>3</button>
47+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-operation>+</button>
48+
</div>
49+
<div class="row justify-content-center">
50+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>0</button>
51+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>00</button>
52+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto" data-number>.</button>
53+
<button type="button" class="btn btn-dark btn-lg m-1 p-auto equals" data-equals><i
54+
class="fas fa-equals"></i></button>
55+
</div>
56+
57+
58+
</div>
59+
60+
<!-- Optional JavaScript -->
61+
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
62+
63+
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
64+
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
65+
crossorigin="anonymous"></script>
66+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"
67+
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
68+
crossorigin="anonymous"></script>
69+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
70+
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
71+
crossorigin="anonymous"></script>
72+
<script src="main.js"></script>
73+
</body>
74+
7575
</html>
Lines changed: 122 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,122 @@
1-
class Calculator {
2-
constructor(previousOperandTextElement, currentOperandTextElement) {
3-
this.previousOperandTextElement = previousOperandTextElement
4-
this.currentOperandTextElement = currentOperandTextElement
5-
this.clear()
6-
}
7-
8-
clear() {
9-
this.currentOperand = ""
10-
this.previousOperand = ""
11-
this.operation = undefined
12-
}
13-
14-
delete() {
15-
this.currentOperand = this.currentOperand.toString().slice(0, -1)
16-
17-
}
18-
19-
appendNumber(number) {
20-
if (number === "." && this.currentOperand.includes(".")) return
21-
this.currentOperand = this.currentOperand.toString() + number.toString()
22-
}
23-
24-
chooseOperation(operation) {
25-
if (this.currentOperand === "") return
26-
if (this.previousOperand !== "") {
27-
this.compute()
28-
}
29-
this.operation = operation
30-
this.previousOperand = this.currentOperand
31-
this.currentOperand = ""
32-
}
33-
34-
compute() {
35-
let computation
36-
const prev = parseFloat(this.previousOperand)
37-
const curr = parseFloat(this.currentOperand)
38-
if (isNaN(prev) || isNaN(curr)) return
39-
switch (this.operation) {
40-
case "+":
41-
computation = prev + curr
42-
break;
43-
case "-":
44-
computation = prev - curr
45-
break;
46-
case "×":
47-
computation = prev * curr
48-
break;
49-
case "÷":
50-
computation = prev / curr
51-
break;
52-
default:
53-
return
54-
}
55-
this.currentOperand = computation
56-
this.operation = undefined
57-
this.previousOperand = ""
58-
59-
}
60-
61-
getDisplayNumber(number) {
62-
const stringNumber = number.toString()
63-
const integerDigits = parseFloat(stringNumber.split(".")[0])
64-
const decimalDigits = stringNumber.split(".")[1]
65-
let integerDisplay
66-
if (isNaN(integerDigits)) {
67-
integerDisplay = ""
68-
} else {
69-
integerDisplay = integerDigits.toLocaleString("en", { maximumFractionDigits: 0 })
70-
}
71-
if (decimalDigits != null) {
72-
return `${integerDisplay}.${decimalDigits}`
73-
} else {
74-
return integerDisplay
75-
}
76-
}
77-
78-
updateDisplay() {
79-
this.currentOperandTextElement.innerText = this.getDisplayNumber(this.currentOperand)
80-
if (this.operation != null) {
81-
this.previousOperandTextElement.innerText = `${this.getDisplayNumber(this.previousOperand)} ${this.operation}`
82-
} else {
83-
this.previousOperandTextElement.innerText = ""
84-
}
85-
}
86-
}
87-
88-
const numberButtons = document.querySelectorAll('[data-number]');
89-
const operationButtons = document.querySelectorAll('[data-operation]');
90-
const equalsButton = document.querySelector('[data-equals]');
91-
const deleteButton = document.querySelector('[data-delete]');
92-
const allClearButton = document.querySelector('[data-all-clear]');
93-
const previousOperandTextElement = document.querySelector('[data-previous-operand]');
94-
const currentOperandTextElement = document.querySelector('[data-current-operand]');
95-
96-
const calculator = new Calculator(previousOperandTextElement, currentOperandTextElement)
97-
98-
numberButtons.forEach(button => {
99-
button.addEventListener("click", () => {
100-
calculator.appendNumber(button.innerText)
101-
calculator.updateDisplay()
102-
})
103-
})
104-
operationButtons.forEach(button => {
105-
button.addEventListener("click", () => {
106-
calculator.chooseOperation(button.innerText)
107-
calculator.updateDisplay()
108-
})
109-
})
110-
equalsButton.addEventListener("click", button => {
111-
calculator.compute()
112-
calculator.updateDisplay()
113-
})
114-
allClearButton.addEventListener("click", button => {
115-
calculator.clear()
116-
calculator.updateDisplay()
117-
})
118-
deleteButton.addEventListener("click", button => {
119-
calculator.delete()
120-
calculator.updateDisplay()
121-
})
122-
1+
class Calculator {
2+
constructor(previousOperandTextElement, currentOperandTextElement) {
3+
this.previousOperandTextElement = previousOperandTextElement
4+
this.currentOperandTextElement = currentOperandTextElement
5+
this.clear()
6+
}
7+
8+
clear() {
9+
this.currentOperand = ""
10+
this.previousOperand = ""
11+
this.operation = undefined
12+
}
13+
14+
delete() {
15+
this.currentOperand = this.currentOperand.toString().slice(0, -1)
16+
17+
}
18+
19+
appendNumber(number) {
20+
if (number === "." && this.currentOperand.includes(".")) return
21+
this.currentOperand = this.currentOperand.toString() + number.toString()
22+
}
23+
24+
chooseOperation(operation) {
25+
if (this.currentOperand === "") return
26+
if (this.previousOperand !== "") {
27+
this.compute()
28+
}
29+
this.operation = operation
30+
this.previousOperand = this.currentOperand
31+
this.currentOperand = ""
32+
}
33+
34+
compute() {
35+
let computation
36+
const prev = parseFloat(this.previousOperand)
37+
const curr = parseFloat(this.currentOperand)
38+
if (isNaN(prev) || isNaN(curr)) return
39+
switch (this.operation) {
40+
case "+":
41+
computation = prev + curr
42+
break;
43+
case "-":
44+
computation = prev - curr
45+
break;
46+
case "×":
47+
computation = prev * curr
48+
break;
49+
case "÷":
50+
computation = prev / curr
51+
break;
52+
default:
53+
return
54+
}
55+
this.currentOperand = computation
56+
this.operation = undefined
57+
this.previousOperand = ""
58+
59+
}
60+
61+
getDisplayNumber(number) {
62+
const stringNumber = number.toString()
63+
const integerDigits = parseFloat(stringNumber.split(".")[0])
64+
const decimalDigits = stringNumber.split(".")[1]
65+
let integerDisplay
66+
if (isNaN(integerDigits)) {
67+
integerDisplay = ""
68+
} else {
69+
integerDisplay = integerDigits.toLocaleString("en", { maximumFractionDigits: 0 })
70+
}
71+
if (decimalDigits != null) {
72+
return `${integerDisplay}.${decimalDigits}`
73+
} else {
74+
return integerDisplay
75+
}
76+
}
77+
78+
updateDisplay() {
79+
this.currentOperandTextElement.innerText = this.getDisplayNumber(this.currentOperand)
80+
if (this.operation != null) {
81+
this.previousOperandTextElement.innerText = `${this.getDisplayNumber(this.previousOperand)} ${this.operation}`
82+
} else {
83+
this.previousOperandTextElement.innerText = ""
84+
}
85+
}
86+
}
87+
88+
const numberButtons = document.querySelectorAll('[data-number]');
89+
const operationButtons = document.querySelectorAll('[data-operation]');
90+
const equalsButton = document.querySelector('[data-equals]');
91+
const deleteButton = document.querySelector('[data-delete]');
92+
const allClearButton = document.querySelector('[data-all-clear]');
93+
const previousOperandTextElement = document.querySelector('[data-previous-operand]');
94+
const currentOperandTextElement = document.querySelector('[data-current-operand]');
95+
96+
const calculator = new Calculator(previousOperandTextElement, currentOperandTextElement)
97+
98+
numberButtons.forEach(button => {
99+
button.addEventListener("click", () => {
100+
calculator.appendNumber(button.innerText)
101+
calculator.updateDisplay()
102+
})
103+
})
104+
operationButtons.forEach(button => {
105+
button.addEventListener("click", () => {
106+
calculator.chooseOperation(button.innerText)
107+
calculator.updateDisplay()
108+
})
109+
})
110+
equalsButton.addEventListener("click", button => {
111+
calculator.compute()
112+
calculator.updateDisplay()
113+
})
114+
allClearButton.addEventListener("click", button => {
115+
calculator.clear()
116+
calculator.updateDisplay()
117+
})
118+
deleteButton.addEventListener("click", button => {
119+
calculator.delete()
120+
calculator.updateDisplay()
121+
})
122+

0 commit comments

Comments
 (0)