-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
96 lines (86 loc) · 3.12 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// For input fields
const billAmount = document.querySelector("#bill-amount");
const cashReceived = document.querySelector("#cash-received");
const cashReceivedContainer = document.querySelector('.cash-wrapper');
const errorMessageContainer = document.querySelector("#error");
const statusMessageContainer = document.querySelector("#status");
const processButton = document.querySelector("#process-button");
const notesHeadingRow = document.querySelector("#notes-headings");
const notesAmountBills = document.querySelector("#notes-amount-bills");
const notes = [2000, 500, 100, 20, 10, 5, 1]
billAmount.addEventListener("keyup", verifyBillAmount)
cashReceived.addEventListener("keyup", verifyCashReceived)
processButton.addEventListener("click", process);
// To dynamically generate table columns.
function fillTableData() {
for (let i = 0; i < notes.length; i++) {
// For heading of notes showing bill amount
let notesHeading = document.createElement('th');
notesHeadingRow.appendChild(notesHeading);
notesHeading.innerText = notes[i];
// For actual bills where number of notes will be shown after calculations
let bills = document.createElement('td');
notesAmountBills.appendChild(bills);
bills.setAttribute('id', notes[i]);
}
}
function verifyBillAmount() {
if (!billAmount.value) {
displayError('Please enter bill amount to proceed.');
cashReceivedContainer.style.display = 'none'; //For bonus question
return true
}
else if (Number(billAmount.value) <= 0) {
displayError('Entered bill amount should be greater than 0');
return true
}
else {
errorMessageContainer.style.display = 'none'
cashReceivedContainer.style.display = 'block';
return false;
}
}
function process() {
if (verifyBillAmount() || verifyCashReceived()) {
return
}
else {
const amountToReturn = Number(cashReceived.value) - Number(billAmount.value);
calculateAmount(amountToReturn)
}
}
function verifyCashReceived() {
if (Number(cashReceived.value) < Number(billAmount.value)) {
displayError('Provided cash should be equal or greater than bill amount.')
return true;
}
else {
errorMessageContainer.style.display = 'none'
return false;
}
}
function calculateAmount(amountToReturn) {
let noOfNotes = 0
const amount=amountToReturn;
let totalNumberOfNotes = 0
for (let i = 0; i < notes.length; i++) {
noOfNotes = Math.trunc(amountToReturn / notes[i]);
document.getElementById(notes[i]).innerText = noOfNotes;
totalNumberOfNotes = totalNumberOfNotes + noOfNotes;
amountToReturn = amountToReturn % notes[i];
}
amount === 0 ?
displayInfo(`Thanks for providing the money, have a good day. 🤗`) :
displayInfo(`Total number of notes to return: ${totalNumberOfNotes}`)
}
function displayError(errorMessage) {
errorMessageContainer.innerText = errorMessage;
errorMessageContainer.style.display = 'block'
statusMessageContainer.style.display = 'none'
}
function displayInfo(statusMessage) {
statusMessageContainer.innerText = statusMessage;
statusMessageContainer.style.display = 'block'
errorMessageContainer.style.display = 'none'
}
fillTableData()