Advertisement
Maxim_01

Untitled

Apr 4th, 2023
796
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function attachEvents() {
  2.  
  3.     const BASE_URL = "http://localhost:3030/jsonstore/tasks/"
  4.     let titleName = document.getElementById("title")
  5.     let loadBtn = document.getElementById("load-button")
  6.     let addBtn = document.getElementById("add-button")
  7.     let toDoList = document.getElementById("todo-list")
  8.  
  9.     loadBtn.addEventListener("click", loadHandler)
  10.  
  11.  
  12.  
  13.     let newTaskName = ""
  14.  
  15.     addBtn.addEventListener("click", addHandler)
  16.  
  17.  
  18.     function loadHandler(event){
  19.       event.preventDefault()
  20.  
  21.  
  22.       // toDoList.innerHTML = ""
  23.  
  24.  
  25.       fetch(BASE_URL)
  26.       .then((res) => res.json())
  27.       .then((data) => {
  28.  
  29.           for (const id in data) {
  30.               let taskName = data[id].name
  31.               let li = createElement("li", "", toDoList)
  32.               createElement("span", taskName, li)
  33.               let removeBtn = createElement("button", "Remove", li)
  34.               let editBtn = createElement("button", "Edit", li)
  35.  
  36.  
  37.  
  38.               // ТОВА НЕ МИНАВА -> КАТО ВЗИМАМ ID-ТО НАПРАВО КАТО КЛЮЧ ОТ РЕЧНИКА
  39.               // li.id = id
  40.  
  41.  
  42.  
  43.               // И ДВЕТЕ РАБОТЯТ ПЕРФЕКНТО В БРАУЗЪРА, НО ДЖЪДЖ ГЪРМИ ТЕСТОВЕ ЗА ТОВА
  44.  
  45.  
  46.               // ТОВА МИНАВА -> КАТО ГО ВЗИМАМ КАТО СТОЙНОСТ. ЗАЩО?????????
  47.               li.id = data[id]._id
  48.  
  49.  
  50.  
  51.               removeBtn.addEventListener("click", removeHandler)
  52.               editBtn.addEventListener("click", editHandler)
  53.             }
  54.         })
  55.     }
  56.  
  57.     function addHandler(event){
  58.       event.preventDefault()
  59.  
  60.       let httpHeaders = {
  61.         method: "POST",
  62.         body: JSON.stringify({name: `${titleName.value}`})
  63.       }
  64.       fetch(BASE_URL, httpHeaders)
  65.       .then(() => loadHandler())
  66.     }
  67.  
  68.     function removeHandler(event){
  69.       let li = event.currentTarget.parentElement
  70.       let id = li.id
  71.  
  72.       let httpHeaders = {
  73.         method: "DELETE"
  74.       }
  75.       fetch(`${BASE_URL}${id}`, httpHeaders)
  76.       .then(() => {loadHandler()})
  77.       .catch((err) => console.error(err))
  78.     }
  79.  
  80.     function editHandler(event){
  81.  
  82.       let li = event.currentTarget.parentElement
  83.  
  84.       let [span, _removeBtn, editBtn] = Array.from(li.children)
  85.  
  86.       let taskName = span.textContent
  87.       inputField = createElement("input", taskName)
  88.       li.prepend(inputField)
  89.       let submitBtn = createElement("button", "Submit", li)
  90.       submitBtn.addEventListener("click", submitHandler)
  91.       span.remove()
  92.       editBtn.remove()
  93.  
  94.     }
  95.  
  96.     function submitHandler(event){
  97.  
  98.       let li = event.currentTarget.parentElement
  99.  
  100.       let [input, _removeBtn, submitBtn] = Array.from(li.children)
  101.  
  102.       let inputValue = input.value
  103.  
  104.       let httpHeaders = {
  105.         method: "PATCH",
  106.         body: JSON.stringify({name: inputValue})
  107.       }
  108.       fetch(`${BASE_URL}${li.id}`, httpHeaders)
  109.       .then((res) => console.log(""))
  110.  
  111.       let editBtn = createElement("button", "Edit", li)
  112.       let taskName = input.value
  113.  
  114.       let task = createElement("span", taskName)
  115.       li.prepend(task)
  116.       submitBtn.remove()
  117.       input.remove()
  118.  
  119.     }
  120.  
  121. }
  122.  
  123. function createElement(type, content, parent, id, classes, attributes){
  124.     let element = document.createElement(type)
  125.  
  126.     if (content && type !== "input"){
  127.       element.textContent = content
  128.     }
  129.  
  130.     if (content && type === "input"){
  131.       element.value = content
  132.     }
  133.  
  134.     if (parent){
  135.       parent.appendChild(element)
  136.     }
  137.  
  138.     if (id){
  139.       element.id = id
  140.     }
  141.  
  142.     if (classes){
  143.      
  144.       element.classList.add(...classes)
  145.  
  146.     }
  147.     if (attributes){
  148.       for (const key in attributes) {
  149.         element.setAttribute(key, attributes[key])
  150.  
  151.       }
  152.     }
  153.  
  154.     return element
  155.   }
  156.  
  157. attachEvents();
  158.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement