From 97c46e5ef7e8bb9830318480dc8c99918fca312c Mon Sep 17 00:00:00 2001
From: Soumyadeep Das <34862954+somudas@users.noreply.github.com>
Date: Fri, 10 Jun 2022 00:18:18 +0530
Subject: [PATCH 1/3] Add files via upload
---
index.html | 63 ++++++++++++++
main.js | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++++
style.css | 155 ++++++++++++++++++++++++++++++++++
3 files changed, 462 insertions(+)
create mode 100644 index.html
create mode 100644 main.js
create mode 100644 style.css
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..ccb8970
--- /dev/null
+++ b/index.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ Calculator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..7eb5db5
--- /dev/null
+++ b/main.js
@@ -0,0 +1,244 @@
+function format(x) {
+ let fnl_str = ''
+
+ //finding decimal
+ let k = x.length-1
+ for(let i=x.length-1;i>=0;i--) {
+ if (x[i] == '.'){
+ k = i - 1;
+ }
+ }
+ for(let i = x.length-1; i>k;i--) fnl_str+=x[i];
+
+ for(let i=k; i>=0; i--){
+ if((k-i)%3 == 2 && i!=0){
+ fnl_str += x[i]
+ fnl_str += ','
+ }else
+ fnl_str += x[i]
+ }
+ fnl_str = fnl_str.split('').reverse().join('')
+ return fnl_str
+}
+
+
+
+
+console.log("running")
+
+let numbers = document.querySelectorAll('[btn-numbers]')
+let prevDisplay = document.getElementsByClassName('prev')[0]
+let currDisplay = document.getElementsByClassName('curr')[0]
+let operators = document.querySelectorAll('[binary-operator]')
+let eval = document.getElementsByClassName('result')[0]
+let AC = document.querySelector('[clear]')
+let u_operators = document.querySelectorAll('[unary-operator]')
+let Ans = document.getElementById('Ans')
+let backspace = document.getElementById('backspace')
+
+let isEquals = false
+let currentString = ''
+let currentNumber = ''
+let prevString = ''
+let prevNumber = ''
+let isDot = false
+
+let operand1
+let operand2
+let operator
+
+currDisplay.innerHTML = '0'
+prevDisplay.innerHTML = ''
+
+
+backspace.addEventListener('click', ()=>{
+ currentNumber = currentNumber.substring(0, currentNumber.length-1)
+ currDisplay.innerHTML = format(currentNumber)
+})
+
+numbers.forEach(btn => {
+ btn.addEventListener('click', ()=> {
+
+ let num = btn.innerHTML
+
+ if (num === '.'){
+ if(!isDot)
+ isDot = true
+ else return
+ }
+
+
+ //console.log(num)
+ currentNumber = currentNumber + num.toString();
+ //console.log(currentString)
+
+
+ currentString = format(currentNumber)
+ currDisplay.innerHTML = currentString.toString()
+ })
+})
+
+operators.forEach(btn => {
+ btn.addEventListener('click', () => {
+ let op = btn.innerHTML
+ if (operator != undefined){
+ operator = op
+ prevNumber = operand1 + ' ' + op.toString() + ' '
+ prevDisplay.innerHTML = prevNumber
+ isEquals = false;
+ return
+ }
+
+ prevNumber = currentNumber + ' ' + op.toString() + ' '
+ prevDisplay.innerHTML = prevNumber
+ currDisplay.innerHTML = '0'
+ operand1 = currentNumber
+ operator = op
+ currentNumber = ''
+ isEquals = false;
+ })
+})
+
+eval.addEventListener('click', ()=>{
+ //console.log(currentNumber)
+ //console.log(operand1)
+ if (!isEquals) isEquals = true;
+ else return
+ if (operand1 != undefined && operator != undefined && currentNumber != ''){
+ // console.log(78)
+ operand2 = parseFloat(currentNumber)
+ operand1 = parseFloat(operand1)
+ prevDisplay.innerHTML = prevDisplay.innerHTML + ' ' + currentNumber + ' ='
+ let res
+ if(operator == '+'){
+ res = operand1 + operand2
+ }else if (operator == '-'){
+ res = operand1 - operand2
+ }else if (operator == '÷'){
+ res = operand1 / operand2
+ }else if (operator == 'x'){
+ res = operand1 * operand2
+ }else if (operator == '^'){
+ res = Math.pow(operand1,operand2)
+ }
+ currDisplay.innerHTML = res
+ isDot = false
+ currentNumber = res
+ }
+})
+
+
+u_operators.forEach(btn => {
+ btn.addEventListener('click', () => {
+
+ if (currentNumber == ''){
+ return
+ }
+
+ let num = parseFloat(currentNumber)
+ let op = btn.innerHTML
+ let res
+ if (op == 'sin'){
+ res = Math.sin(num)
+ prevDisplay.innerHTML = 'sin( ' + currentString + ' )'
+ currDisplay.innerHTML = res.toString()
+ }
+ else if (op == 'cos'){
+ res = Math.cos(num)
+ prevDisplay.innerHTML = 'cos( ' + currentString + ' )'
+ currDisplay.innerHTML = res.toString()
+ }
+ else if (op == 'ln'){
+ res = Math.log(num)
+ prevDisplay.innerHTML = 'ln( ' + currentString + ' )'
+ currDisplay.innerHTML = res.toString()
+ }
+ else if (op == 'log'){
+ res = Math.log10(num)
+ prevDisplay.innerHTML = 'log( ' + currentString + ' )'
+ currDisplay.innerHTML = res.toString()
+ }
+ else if (op == 'tan'){
+ res = Math.tan(num)
+ prevDisplay.innerHTML = 'tan( ' + currentString + ' )'
+ currDisplay.innerHTML = res.toString()
+ }
+ else if (op == 'Inv'){
+ res = 1/num
+ prevDisplay.innerHTML = '( ' + currentString + ' )^-1'
+ currDisplay.innerHTML = res.toString()
+ }
+ else if (op == '√'){
+ res = Math.sqrt(num)
+ prevDisplay.innerHTML = '√( ' + currentString + ' )'
+ currDisplay.innerHTML = res.toString()
+ }
+ else if (op == 'x!'){
+ res = 1
+ for (let i = 1;i {
+ currDisplay.innerHTML='0'
+ prevDisplay.innerHTML=''
+ currentNumber=''
+ currentString=''
+ prevString = ''
+ prevNumber = ''
+ operand1 = undefined
+ operand2 = undefined
+ operator = undefined
+ isDot = false
+ isEquals = false
+})
+
+Ans.addEventListener('click', () => {
+ currDisplay.innerHTML = currentString
+ prevDisplay.innerHTML = 'Ans'
+})
+
+
+
+let checkbox = document.getElementById('checkbox')
+checkbox.addEventListener('change', ()=>{
+ let body = document.getElementsByTagName("BODY")[0];
+ let disp = document.getElementsByClassName('display')[0]
+ let prev = document.getElementsByClassName('prev')[0]
+ let curr = document.getElementsByClassName('curr')[0]
+
+ if (checkbox.checked){
+ body.style.backgroundColor = "#FFFFFF"
+ disp.style.backgroundColor = "#FFFFFF"
+ prev.style.color = "#000"
+ curr.style.color = "#000"
+ }else{
+ body.style.backgroundColor = "#32322F"
+ disp.style.backgroundColor = "#32322F"
+ prev.style.color = "#888"
+ curr.style.color = "#FFF"
+ }
+})
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..ff6c92f
--- /dev/null
+++ b/style.css
@@ -0,0 +1,155 @@
+body{
+ background-color: #32322F;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+}
+
+.display{
+ padding-top: 5%;
+ position: relative;
+ left: 50%;
+ transform: translate(-50%, 0);
+ text-align: right;
+ background-color: #32322F;
+ width: 584px;
+ border: #fff;
+}
+.prev{
+ color: #888;
+ font-size: 18px;
+}
+
+.curr{
+ margin-bottom: 10px;
+ color: #fff;
+ font-size: 45px;
+ font-weight: bolder;
+ word-wrap: break-word;
+ word-break: break-all;
+}
+
+button{
+ cursor: pointer;
+ /* border-radius: 50%; */
+ width: 80px;
+ height: 80px;
+ /* border-color: #464543; */
+ /*box-shadow: 0px 0px 10px #888888;*/
+ border-width: 0ch;
+ font-size: large;
+ font-weight: bold;
+ color: #ffffff;
+ background-color: #464543;
+}
+
+button:hover{
+ background-color: #32322F;
+ color: #FFF;
+}
+
+button:active{
+ background-color: #8B8989;
+ color: #FFF;
+}
+
+.last{
+ background-color: #FFA00B;
+}
+
+.numbers{
+ background-color: #757575 ;
+}
+
+.buttons{
+ display: grid;
+ width: auto;
+ justify-content: center;
+ align-items: center;
+ grid-template-columns: repeat(7, 84px);
+ grid-template-rows: repeat(5, 84px);
+}
+
+.result{
+ background-color: #3FABFF;
+}
+
+.result:hover{
+ background-color: rgba(0, 255, 255, 0.9);
+}
+#backspace{
+ width: 164px;
+ grid-column: span 2;
+}
+
+.switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+}
+
+
+.switch input {
+opacity: 0;
+width: 0;
+height: 0;
+}
+
+
+.slider {
+position: absolute;
+cursor: pointer;
+top: 0;
+left: 0;
+right: 0;
+bottom: 0;
+background-color: #ccc;
+-webkit-transition: .4s;
+transition: .4s;
+}
+
+.slider:before {
+position: absolute;
+content: "";
+height: 26px;
+width: 26px;
+left: 4px;
+bottom: 4px;
+background-color: white;
+-webkit-transition: .4s;
+transition: .4s;
+}
+
+input:checked + .slider {
+background-color: #2196F3;
+}
+
+input:focus + .slider {
+box-shadow: 0 0 1px #2196F3;
+}
+
+input:checked + .slider:before {
+-webkit-transform: translateX(26px);
+-ms-transform: translateX(26px);
+transform: translateX(26px);
+}
+
+
+.slider.round {
+border-radius: 34px;
+}
+
+.slider.round:before {
+border-radius: 50%;
+}
+
+.toggle{
+ position: absolute;
+ left: 90%;
+}
+
+.container{
+ position: fixed;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+}
\ No newline at end of file
From 9e590d114fdd53a03277bdc1144e8ef4d22585ae Mon Sep 17 00:00:00 2001
From: Soumyadeep Das <34862954+somudas@users.noreply.github.com>
Date: Fri, 10 Jun 2022 00:21:04 +0530
Subject: [PATCH 2/3] Update PULL_REQUEST_TEMPLATE.md
---
.github/PULL_REQUEST_TEMPLATE.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index dc2beda..c63c487 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -5,7 +5,7 @@
- [ ] Android
- [ ] Flutter
-- [ ] Web Devlopment
+- [x] Web Devlopment
### Task Completed
@@ -19,14 +19,14 @@
#### Calculator
-- [ ] **Task 1**: Create a simple calculator with basic mathematical operations.
-- [ ] **Task 2**: Add complex operations including exponentiation, logarithms, trigonometry, etc.
-- [ ] **Task 3:** Add an option to change settings, say from radians to degrees and vice versa, and an option to change the theme of the app.
+- [x] **Task 1**: Create a simple calculator with basic mathematical operations.
+- [x] **Task 2**: Add complex operations including exponentiation, logarithms, trigonometry, etc.
+- [x] **Task 3:** Add an option to change settings, say from radians to degrees and vice versa, and an option to change the theme of the app.
- [ ] **Task 4:** Feature to show a history of previous calculations.
- [ ] **Extras:** Add feature for matrix calculations and plotting of simple basic graphs using equations.
### Submission
-[Repo](link)
-[APK|Web Site](link)
+[Repo](https://github.com/somudas/Calculator)
+[APK|Web Site](https://calculator-ivory-five.vercel.app/)
From aa3475ea7fd8d6d0de3cea5d970edee0af9daa3e Mon Sep 17 00:00:00 2001
From: Soumyadeep Das <34862954+somudas@users.noreply.github.com>
Date: Fri, 10 Jun 2022 00:23:32 +0530
Subject: [PATCH 3/3] Update WebDev.md
---
WebDev.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/WebDev.md b/WebDev.md
index cb78c5f..9ec8974 100644
--- a/WebDev.md
+++ b/WebDev.md
@@ -51,5 +51,9 @@ Remember, the deadline for this week's task is June 7th, 2022, at 23:59.
+[Calculator](https://github.com/somudas/Calculator)
+
+
+[Vercel-Web Site](https://calculator-ivory-five.vercel.app/)