Advertisement
pacho_the_python

Untitled

Apr 6th, 2023
541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function grocery_store() {
  2.     let main_url = 'http://localhost:3030/jsonstore/grocery/'
  3.     const load_btn = document.getElementById('load-product')
  4.     const table_body_element = document.getElementById('tbody')
  5.     const add_btn = document.getElementById('add-product')
  6.     const update_product_btn = document.getElementById('update-product')
  7.     const product_input = document.getElementById('product')
  8.     const count_input = document.getElementById('count')
  9.     const price_input = document.getElementById('price')
  10.  
  11.     load_btn.addEventListener("click", load_products)
  12.     add_btn.addEventListener("click", add_product)
  13.  
  14.  
  15.     function load_products(load_event) {
  16.         if (load_event) {
  17.             load_event.preventDefault()
  18.         }
  19.  
  20.         table_body_element.innerHTML = ''
  21.         fetch(main_url)
  22.             .then((res) => res.json())
  23.             .then((data) => {
  24.                 let products = Object.values(data)
  25.                 for (const product of products) {
  26.                     let tr = create_element('tr', '', table_body_element, product._id)
  27.                     let name_td = create_element('td', product.product, tr, '', 'name')
  28.                     let count_td = create_element('td', product.count, tr, '', 'count-product')
  29.                     let price_td = create_element('td', product.price, tr, '', 'product-price')
  30.                     let btn_td = create_element('td', '', tr, '', 'btn')
  31.                     let update_btn = create_element('button', 'Update', btn_td, '', 'update', product_update)
  32.                     let delete_btn = create_element('button', 'Delete', btn_td, '', 'delete', product_delete)
  33.                 }
  34.             })
  35.     }
  36.  
  37.     function add_product(add_event) {
  38.         add_event.preventDefault()
  39.         let product = product_input.value
  40.         let count = count_input.value
  41.         let price = price_input.value
  42.  
  43.         let add_http_headers = {
  44.             method: "POST",
  45.             body: JSON.stringify({product, count, price})
  46.         }
  47.  
  48.         fetch(main_url, add_http_headers)
  49.             .then(() => {
  50.                 load_products()
  51.             })
  52.         product_input.value = ''
  53.         count_input.value = ''
  54.         price_input.value = ''
  55.     }
  56.     function product_update(update_event) {
  57.         let current_update_element = update_event.currentTarget.parentElement.parentElement
  58.         let update_id = current_update_element.id
  59.         let update_url = `${main_url}${update_id}`
  60.         let update_info = Array.from(current_update_element.children)
  61.         let product = update_info[0].textContent
  62.         let count = update_info[1].textContent
  63.         let price = update_info[2].textContent
  64.  
  65.         add_btn.disabled = true
  66.         update_product_btn.disabled = false
  67.  
  68.         product_input.value = product
  69.         count_input.value = count
  70.         price_input.value = price
  71.  
  72.         update_product_btn.addEventListener("click", () => {
  73.             let update_http_headers = {
  74.                 method: 'PATCH',
  75.                 body: JSON.stringify({product: product_input.value, count: count_input.value, price: price_input.value})
  76.             }
  77.             fetch(update_url, update_http_headers)
  78.                 .then(() => {
  79.                     load_products()
  80.                 })
  81.             product_input.value = ''
  82.             count_input.value = ''
  83.             price_input.value = ''
  84.  
  85.             add_btn.disabled = false
  86.             update_product_btn.disabled = true
  87.         })
  88.     }
  89.  
  90.     function product_delete(delete_event) {
  91.         let delete_id = delete_event.currentTarget.parentElement.parentElement.id
  92.         let delete_url = `${main_url}${delete_id}`
  93.  
  94.         let delete_http_headers = {
  95.             method: "DELETE"
  96.         }
  97.  
  98.         fetch(delete_url, delete_http_headers)
  99.             .then(() => {
  100.                 load_products()
  101.             })
  102.     }
  103.  
  104.  
  105.     function  create_element(element_type, element_content, parent_element, id, element_class, event) {
  106.         let current_element = document.createElement(element_type)
  107.         if (element_content) {
  108.             current_element.textContent = element_content
  109.         }
  110.         if (id) {
  111.             current_element.id = id
  112.         }
  113.         if (event) {
  114.             current_element.addEventListener('click', event)
  115.         }
  116.         if (element_class) {
  117.             current_element.classList.add(element_class)
  118.         }
  119.         parent_element.appendChild(current_element)
  120.         return current_element
  121.     }
  122. }
  123.  
  124. grocery_store()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement