Maxim_01

Untitled

Mar 30th, 2023
374
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.     const DELETE_BASE_URL = "http://localhost:3030/jsonstore/tasks/"
  5.  
  6.     let newTaskName = ""
  7.  
  8.     let loadBtn = document.getElementById("load-button")
  9.     let addBtn = document.getElementById("add-button")
  10.  
  11.     let titleName = document.getElementById("title")
  12.  
  13.     let toDoList = document.getElementById("todo-list")
  14.  
  15.     loadBtn.addEventListener("click", loadHandler)
  16.     addBtn.addEventListener("click", addHandler)
  17.  
  18.  
  19.     function loadHandler(){
  20.       toDoList.innerHTML = ""
  21.       if (event){
  22.         event.preventDefault()
  23.       }
  24.       fetch(BASE_URL, {method: "GET"})
  25.       .then((res) => res.json())
  26.       .then((data) => {
  27.  
  28.           for (const id in data) {
  29.               let taskName = data[id].name
  30.               let li = createElement("li", "", toDoList)
  31.               createElement("span", taskName, li)
  32.               let removeBtn = createElement("button", "Remove", li)
  33.               let editBtn = createElement("button", "Edit", li)
  34.  
  35.               li.id = id
  36.  
  37.               removeBtn.addEventListener("click", removeHandler)
  38.               editBtn.addEventListener("click", editHandler)
  39.             }
  40.         })
  41.     }
  42.  
  43.     function addHandler(){
  44.       if (event){
  45.         event.preventDefault()
  46.       }
  47.  
  48.       let httpHeaders = {
  49.         method: "POST",
  50.         body: JSON.stringify({name: `${titleName.value}`})
  51.       }
  52.       fetch(BASE_URL, httpHeaders)
  53.       .then(() => loadHandler())
  54.     }
  55.  
  56.     function removeHandler(event){
  57.       let li = event.currentTarget.parentElement
  58.       let id = li.id
  59.  
  60.       let httpHeaders = {
  61.         method: "DELETE"
  62.       }
  63.  
  64.       fetch(`${DELETE_BASE_URL}${id}`, httpHeaders)
  65.       .then(() => {loadHandler()})
  66.       .catch((err) => console.error(err))
  67.     }
  68.  
  69.     function editHandler(event){
  70.  
  71.       let li = event.currentTarget.parentElement
  72.  
  73.       let [span, _removeBtn, editBtn] = Array.from(li.children)
  74.  
  75.       let taskName = span.textContent
  76.       inputField = createElement("input", taskName)
  77.       li.prepend(inputField)
  78.       let submitBtn = createElement("button", "Submit", li)
  79.       submitBtn.addEventListener("click", submitHandler)
  80.       span.remove()
  81.       editBtn.remove()
  82.  
  83.     }
  84.  
  85.     function submitHandler(event){
  86.  
  87.       let li = event.currentTarget.parentElement
  88.  
  89.       let [input, _removeBtn, submitBtn] = Array.from(li.children)
  90.  
  91.       let inputValue = input.value
  92.  
  93.       let httpHeaders = {
  94.         method: "PATCH",
  95.         body: JSON.stringify({name: inputValue})
  96.       }
  97.       fetch(`${DELETE_BASE_URL}${li.id}`, httpHeaders)
  98.  
  99.       let editBtn = createElement("button", "Edit", li)
  100.       let taskName = input.value
  101.  
  102.       let task = createElement("span", taskName)
  103.       li.prepend(task)
  104.       submitBtn.remove()
  105.       input.remove()
  106.  
  107.     }
  108.  
  109. }
  110.  
  111. function createElement(type, content, parent, id, classes, attributes){
  112.     let element = document.createElement(type)
  113.  
  114.     if (content && type !== "input"){
  115.       element.textContent = content
  116.     }
  117.  
  118.     if (content && type === "input"){
  119.       element.value = content
  120.     }
  121.  
  122.     if (parent){
  123.       parent.appendChild(element)
  124.     }
  125.  
  126.     if (id){
  127.       element.id = id
  128.     }
  129.  
  130.     if (classes){
  131.      
  132.       element.classList.add(...classes)
  133.  
  134.     }
  135.     if (attributes){
  136.       for (const key in attributes) {
  137.         element.setAttribute(key, attributes[key])
  138.  
  139.       }
  140.     }
  141.  
  142.     return element
  143.   }
  144.  
  145. attachEvents();
  146.  
Advertisement
Add Comment
Please, Sign In to add comment