-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
143 lines (128 loc) · 3.13 KB
/
index.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
const menuContainer = document.querySelector(".menu");
const ordersContainer = document.querySelector(".orders");
const modal = document.querySelector(".modal");
const menuArray = [
{
id: 0,
name: "Pizza",
ingredients: ["pepperoni", "mushrom", "mozarella"],
price: 14,
count:0,
emoji: "🍕"
}, {
id: 1,
name: "Hamburger",
ingredients: ["beef", "cheese", "lettuce"],
price: 12,
count:0,
emoji: "🍔",
}, {
id: 2,
name: "Kota",
ingredients: ["bread", "russian", "chips", "cheese", "atchaar"],
price: 12,
count:0,
emoji: "🥪",
}
];
const getBoughtItems = ()=>menuArray.filter(item=>item.count);
const getTotalPrice = ()=>getBoughtItems().reduce((sum,item)=>(sum + item.count * item.price),0);
const increaseItemCount = (id)=>{
menuArray.find(item=> item.id === id).count += 1;
render();
}
const decreaseItemCount = (id)=>{
menuArray.find(item=> item.id === id).count -= 1;
render();
}
const removeItem = (id)=>{
menuArray.find(item=> item.id === id).count = 0;
render();
}
render();
function render() {
menuContainer.innerHTML = menuArray.map(item => {
return (
`<div class="menu-item" >
<span>${item.emoji}</span>
<div>
<h3>${item.name}</h3>
<p class="ingredients">${item.ingredients.join(", ")}</p>
<p><strong>R ${item.price}</strong></p>
</div>
<button
type="button"
id="${item.id}"
class="add-btn"
onclick="increaseItemCount(Number(event.target.id))"
>
+
</button>
</div><hr/>`)
}).join("");
const totalPrice = getTotalPrice() || 0;
const boughtItems = getBoughtItems();
ordersContainer.innerHTML = (
`<h2 class="orders-header">Your orders</h2>
<div class="ordered-items">
${
boughtItems.map(item =>(
`<div id="${item.id}">
<div id="${item.id}">
<h3>${item.name} </h3>
<p style="color:red">${" x" + item.count}</p>
<h4
class="remove"
id="${item.id}"
onclick="removeItem(Number(event.target.id))"
>
Remove
</h4>
</div>
<button
type="button"
id="${item.id}"
class="add-btn"
style="font-size: medium;font-weight: bold;"
onclick="decreaseItemCount(Number(event.target.id))">-</button
>
<h3 id="${item.id}" style="margin: auto 0 auto">
R ${item.price * (item.count || 1)}
</h3>
</div><hr/>`)
).join("") || ""
}
</div>
<h4 class="total">
Total price:
<p class="total-price">R ${totalPrice}</p>
</h4>
${ boughtItems.length && (
`<button
type="button"
class="orders-btn"
onclick="displayElement(modal, true)"
>
Complete your orders
</button>`) || ""
}`
);
displayElement(ordersContainer, true);
}
function displayElement(element, showElement) {
element.style.display = showElement ? "grid" : "none";
}
function handleSubmit(event) {
const form = document.querySelector("form");
let username = form["username"].value;
ordersContainer.innerHTML = (
`<p class="order-complete-message">
Thank you ${username}!
Your order is on the way
</p>`
);
form.reset();
displayElement(modal, false);
orderedItems =[];
event.preventDefault();
}