Skip to content

Commit 38859c2

Browse files
script.js
1 parent a010816 commit 38859c2

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

script.js

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
const API = "https://content.newtonschool.co/v1/pr/65f821a4f6a42e24cda7e50c/productsData";
2+
const container = document.querySelector(".productscontainer");
3+
const cartcount = document.querySelector(".carticon");
4+
let items = 0;
5+
6+
let listofcart = {};
7+
async function fetchdata(){
8+
let data = await fetch(API);
9+
let final = await data.json()
10+
console.log(final);
11+
for (let i = 0 ; i < final.length; i++){
12+
let div = document.createElement("div");
13+
div.className = "product";
14+
div.innerHTML = `<img width="250px" height="350px" src=${final[i].image} alt="title" />
15+
<p class='ptitle'>${final[i].title}</p>
16+
<div class="priceandaddtocart">
17+
<p class="pprice">${final[i].price} DH</p>
18+
<button class="addtocart" data-productid=${final[i].id}></button>
19+
</div>`;
20+
container.appendChild(div);
21+
div.querySelector('.addtocart').addEventListener('click', function () {
22+
addit(final[i]);
23+
});
24+
}
25+
}
26+
fetchdata();
27+
const header = document.querySelector("header");
28+
header.style.position = "sticky";
29+
header.style.top = 0;
30+
31+
document.querySelector(".carticon").addEventListener('click',opendiv);
32+
function opendiv(){
33+
document.querySelector(".cartui").classList.add("cartopened");
34+
}
35+
document.querySelector(".closecart").addEventListener('click',closediv);
36+
function closediv(){
37+
document.querySelector(".cartui").classList.remove("cartopened");
38+
}
39+
40+
const pccontainer = document.querySelector(".pccontainer");
41+
42+
function addit(prod){
43+
const productId = prod.id;
44+
if (!(productId in listofcart)){
45+
listofcart[productId] = 1;
46+
addprod(prod);
47+
}else if (listofcart[prod.id] == 0) {
48+
listofcart[productId] = 1;
49+
addprod(prod);
50+
}else{
51+
listofcart[productId] += 1;
52+
}
53+
}
54+
function addprod(prod){
55+
let cartproduct = document.createElement("div");
56+
cartproduct.classList.add('cartproduct');
57+
cartproduct.innerHTML = `
58+
<div class="pnp">
59+
<img class='pimage' width="100px" height="150px" src="${prod.image}">
60+
<div class="nameandprice">
61+
<p>${prod.title}</p>
62+
<p>${prod.price}</p>
63+
<div class='qtt'>
64+
<p>Qty: </p>
65+
<p class="minusqtt"> - </p>
66+
<p class="counter">1</p>
67+
<p class="addqtt"> + </p>
68+
</div>
69+
</div>
70+
</div>
71+
<button class="delete" productid="${prod.id}">X</button>
72+
`;
73+
pccontainer.appendChild(cartproduct);
74+
let counter = 1;
75+
let count = cartproduct.querySelector(".counter");
76+
77+
78+
79+
80+
cartproduct.querySelector(".minusqtt").addEventListener('click' , function () {
81+
if (counter > 1){
82+
counter -=1;
83+
if (items > 1){
84+
items-=1;
85+
}
86+
}
87+
count.textContent = counter;
88+
cartcount.setAttribute('items', items);
89+
});
90+
cartproduct.querySelector(".addqtt").addEventListener('click' , function () {
91+
items+=1;
92+
counter+=1;
93+
count.textContent = counter;
94+
cartcount.setAttribute('items', items);
95+
});
96+
97+
98+
99+
100+
101+
102+
items+=1;
103+
cartproduct.querySelector('.delete').addEventListener('click', function () {
104+
cartproduct.remove();
105+
listofcart[prod.id] = 0;
106+
if (items >= 1){
107+
items-=counter;
108+
}
109+
110+
cartcount.setAttribute('items', items);
111+
});
112+
cartcount.setAttribute('items', items);
113+
}

0 commit comments

Comments
 (0)