Advertisement
GeorgiLukanov87

03. Grocery List

Mar 1st, 2023 (edited)
813
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const baseUrl = `http://localhost:3030/jsonstore/grocery/`;
  2. const tdBody = document.getElementById('tbody');
  3. const loadBtn = document.getElementById('load-product');
  4. const addBtn = document.getElementById('add-product');
  5. const formUpdateBtn = document.getElementById('update-product');
  6.  
  7. loadBtn.addEventListener('click', loadAllProducts);
  8. addBtn.addEventListener('click', addNewProduct);
  9.  
  10. let allProductsData = {};
  11. let namesKeys = [];
  12.  
  13. function loadAllProducts(e) {
  14.  
  15.     e.preventDefault();
  16.  
  17.     fetch(baseUrl)
  18.         .then(res => res.json())
  19.         .then(data => {
  20.             // console.log(data)
  21.             tdBody.innerHTML = ''
  22.             for (let row in data) {
  23.                 let id = data[row]._id;
  24.                 let product = data[row].product;
  25.                 let count = data[row].count;
  26.                 let price = data[row].price;
  27.                 allProductsData[product] = [count, price, id];
  28.                 namesKeys.push(product);
  29.  
  30.                 let trElement = document.createElement('tr');
  31.  
  32.                 let nameTd = document.createElement('td');
  33.                 nameTd.setAttribute('class', 'name');
  34.                 nameTd.textContent = product;
  35.  
  36.                 let countTd = document.createElement('td');
  37.                 countTd.setAttribute('class', 'count-product');
  38.                 countTd.textContent = count;
  39.  
  40.                 let priceTd = document.createElement('td');
  41.                 priceTd.setAttribute('class', 'product-price');
  42.                 priceTd.textContent = price;
  43.  
  44.                 let btnTd = document.createElement('td');
  45.                 btnTd.setAttribute('class', 'btn');
  46.  
  47.                 let updateBtn = document.createElement('button');
  48.                 updateBtn.setAttribute('class', 'update')
  49.                 updateBtn.textContent = 'Update'
  50.  
  51.                 let deleteBtn = document.createElement('button');
  52.                 deleteBtn.setAttribute('class', 'delete')
  53.                 deleteBtn.textContent = 'Delete'
  54.  
  55.                 btnTd.appendChild(updateBtn);
  56.                 btnTd.appendChild(deleteBtn);
  57.  
  58.                 trElement.appendChild(nameTd)
  59.                 trElement.appendChild(countTd)
  60.                 trElement.appendChild(priceTd)
  61.                 trElement.appendChild(btnTd)
  62.  
  63.                 tdBody.appendChild(trElement);
  64.             }
  65.  
  66.         })
  67.  
  68. }
  69.  
  70. function addNewProduct(event) {
  71.     let name = document.getElementById('product').value;
  72.     let count = document.getElementById('count').value;
  73.     let price = document.getElementById('price').value;
  74.     if (name === '' || count === '' || price === '') {
  75.         event.preventDefault();
  76.         return;
  77.     }
  78.  
  79.     console.log(name)
  80.     fetch(baseUrl, {
  81.         method: 'POST',
  82.         headers: {
  83.             'content-type': 'application/json'
  84.         },
  85.         body: JSON.stringify({
  86.             'product': name,
  87.             'count': count,
  88.             'price': price
  89.         })
  90.     })
  91.     loadAllProducts(e);
  92. }
  93.  
  94. tdBody.addEventListener('click', function onBtn(event) {
  95.     if (event.target.textContent === 'Delete') {
  96.         let currnetProduct = event.target.parentNode.parentNode.children[0].textContent;
  97.         let id = '';
  98.         for (let name in allProductsData) {
  99.             if (name === currnetProduct) {
  100.                 id = allProductsData[name][2];
  101.                 break;
  102.             }
  103.         }
  104.         console.log(id)
  105.         let delUrl = `${baseUrl}${id}`
  106.         fetch(delUrl, {
  107.             method: "DELETE",
  108.             headers: {
  109.                 'content-type': 'text'
  110.             },
  111.         })
  112.  
  113.         loadAllProducts(e);
  114.     }
  115.  
  116.  
  117. })
  118.  
  119. tdBody.addEventListener('click', function onBtn(event) {
  120.     if (event.target.textContent === 'Update') {
  121.         // console.log(event.target);
  122.         let currnetProduct = event.target.parentNode.parentNode.children[0].textContent;
  123.         let Oldcount = allProductsData[currnetProduct][0];
  124.         let Oldprice = allProductsData[currnetProduct][1];
  125.         let id = allProductsData[currnetProduct][2];
  126.         let name = document.getElementById('product');
  127.         let count = document.getElementById('count');
  128.         let price = document.getElementById('price');
  129.         name.value = currnetProduct;
  130.         count.value = Oldcount;
  131.         price.value = Oldprice;
  132.         formUpdateBtn.disabled = false;
  133.         addBtn.disabled = true;
  134.  
  135.         formUpdateBtn.addEventListener('click', function () {
  136.             let patchURL = `${baseUrl}${id}`
  137.             let name = document.getElementById('product');
  138.             let count = document.getElementById('count');
  139.             let price = document.getElementById('price');
  140.             fetch(patchURL, {
  141.                 method: 'PATCH',
  142.                 headers: {
  143.                     'content-type': 'application/json'
  144.                 },
  145.                 body: JSON.stringify({
  146.                     'product': name.value,
  147.                     'count': count.value,
  148.                     'price': price.value
  149.                 })
  150.             })
  151.             name.value = '';
  152.             count.value = '';
  153.             price.value = '';
  154.             loadAllProducts(e);
  155.  
  156.         })
  157.  
  158.     }
  159.  
  160. })
  161.  
  162.  
  163.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement