-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcart-script.js
150 lines (132 loc) · 4.22 KB
/
cart-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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
const ids = new Map()
//remove item from cart
var removeButtons = document.getElementsByClassName("remove")
for (var i =0;i< removeButtons.length; i++){
var add = removeButtons[i]
add.addEventListener("click", removeItem)
}
function removeItem(event){
var buttonClicked = event.target
var id = parseInt(buttonClicked.parentElement.getElementsByClassName("dishID")[0].innerText)
buttonClicked.parentElement.remove()
for (var i =0;i<ids.length;i++){
if (ids[i] == id && !b2){
b2 = true;
}else {
ids2.push(ids[i]);
}
}
ids.delete(id)
updateCartTotal()
}
//update quantity
var quantityUpdate = document.getElementsByClassName("item-quantity")
for (var i =0;i< quantityUpdate.length;i++){
var quantity = quantityUpdate[i]
quantity.addEventListener("change", quantityChange)
}
function quantityChange(event){
var input = event.target
if (isNaN(input.value) || input.value <= 0){
input.value = 1
}
var id = parseInt(input.parentElement.getElementsByClassName("dishID")[0].innerText)
ids.set(id,parseInt(input.value))
updateCartTotal()
}
//add item to cart
var addButton = document.getElementsByClassName("add")
for (var i =0;i< addButton.length;i++){
var add = addButton[i]
add.addEventListener("click", addItem)
}
function addItem(event){
var button = event.target
var item = button.parentElement
var name = item.getElementsByClassName("dish-name")[0].innerText
var price =item.getElementsByClassName("dish-price")[0].innerText
price =price.replace('Price:','')
price =price.replace('€','')
price = parseFloat(price)
var id = item.getElementsByClassName("dishID")[0].innerText
var idint = parseInt(id)
for (var [key, value] of ids.entries()) {
if(key == idint){
alert("item already added")
return
}
}
ids.set(idint,1)
//add image if necessary
var cartRow = document.createElement('div')
cartRow.classList.add("cart-row")
cartRow.innerHTML = `
<p class ="dishName">${name}</p>
<p class="item-price">€ ${price}</p>
<input class="item-quantity" type="number" value="1">
<button class="button remove">Remove</button>
<p class="dishID"> ${id}</p>
`
var cartItems = document.getElementById("cart-rows")
cartItems.append(cartRow)
updateCartTotal()
cartRow.getElementsByClassName("remove")[0].addEventListener("click", removeItem)
cartRow.getElementsByClassName("item-quantity")[0].addEventListener("change",quantityChange)
}
//update cart total
function updateCartTotal() {
var totalQuantity =0
var cart = document.getElementById("cart")
var cartRows = cart.getElementsByClassName("cart-row")
var totalPrice = 0;
for (var i =0;i<cartRows.length;i++){
var cartRow = cartRows[i]
var priceElement = cartRow.getElementsByClassName("item-price")[0]
var quantityElemente = cartRow.getElementsByClassName("item-quantity")[0]
var price = parseFloat(priceElement.innerText.replace("€",""))
var quantity = parseInt(quantityElemente.value)
totalPrice += price*quantity
totalQuantity += quantity
}
totalPrice = Math.round(totalPrice *100) /100
if (totalPrice == 0){
document.getElementById("purchase").style.display = "none"
}else{
document.getElementById("purchase").style.display = "flex"
}
document.getElementById("cart-total-price").innerText = "Total Price: € "+totalPrice
document.getElementById("item-number").innerHTML = parseInt(totalQuantity)
var keys = {}
var values = {}
for (var [key, value] of ids.entries()) {
keys +=" "+key
values +=" "+value
}
document.getElementById("foodList").value =keys
document.getElementById("foodListNum").value =values
}
//show/hide cart
var button = document.getElementById("cartbutton");
var b = false
button.addEventListener("click", function(){
var cart = document.getElementById("cart");
if (b){
cart.style.display = "none";
b = false;
}else{
cart.style.display = "grid";
b = true;
}
})
//clear cart
var clear = document.getElementById("clear")
clear.addEventListener("click",clearCart)
function clearCart(){
var cartRow = document.getElementById("cart-rows")
while (cartRow.lastChild){
cartRow.removeChild(cartRow.lastChild)
}
updateCartTotal()
ids.clear()
}
window.addEventListener("load", clearCart)