Advertisement
pacho_the_python

Untitled

Apr 20th, 2023
701
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function courses() {
  2.     let mainUrl = 'http://localhost:3030/jsonstore/tasks/'
  3.     const loadBtn = document.getElementById('load-course')
  4.     const addBtn = document.getElementById('add-course')
  5.     const editBtn = document.getElementById('edit-course')
  6.     const list = document.getElementById('list')
  7.  
  8.     const titleInput = document.getElementById('course-name')
  9.     const typeInput = document.getElementById('course-type')
  10.     const descriptionInput = document.getElementById('description')
  11.     const teacherInput = document.getElementById('teacher-name')
  12.  
  13.     loadBtn.addEventListener("click", loadAll)
  14.     addBtn.addEventListener("click", add)
  15.  
  16.     function loadAll(loadEvent) {
  17.         if (loadEvent) {
  18.             loadEvent.preventDefault()
  19.         }
  20.  
  21.         list.innerHTML = ''
  22.         fetch(mainUrl)
  23.             .then((res) => res.json())
  24.             .then((data) => {
  25.                 let all_courses = Object.values(data)
  26.  
  27.                 for (const course of all_courses) {
  28.                     let containerDiv = document.createElement('div')
  29.                     containerDiv.id = course._id
  30.                     containerDiv.classList.add('container')
  31.                     list.appendChild(containerDiv)
  32.  
  33.                     let titleHeader = document.createElement('h2')
  34.                     titleHeader.textContent = course.title
  35.                     containerDiv.appendChild(titleHeader)
  36.  
  37.                     let teacherHeader = document.createElement('h3')
  38.                     teacherHeader.textContent = course.teacher
  39.                     containerDiv.appendChild(teacherHeader)
  40.  
  41.                     let typeHeader = document.createElement('h3')
  42.                     typeHeader.textContent = course.type
  43.                     containerDiv.appendChild(typeHeader)
  44.  
  45.                     let descriptionHeader = document.createElement('h4')
  46.                     descriptionHeader.textContent = course.description
  47.                     containerDiv.appendChild(descriptionHeader)
  48.  
  49.                     let editBtn = document.createElement('button')
  50.                     editBtn.textContent = 'Edit Course'
  51.                     editBtn.classList.add('edit-btn')
  52.                     editBtn.addEventListener("click", edit)
  53.                     containerDiv.appendChild(editBtn)
  54.  
  55.                     let finishBtn = document.createElement('button')
  56.                     finishBtn.textContent = 'Finish Course'
  57.                     finishBtn.classList.add('finish-btn')
  58.                     finishBtn.addEventListener("click", finish)
  59.                     containerDiv.appendChild(finishBtn)
  60.                 }
  61.             })
  62.     }
  63.  
  64.     function add(addEvent) {
  65.         addEvent.preventDefault()
  66.         let title = titleInput.value
  67.         let type = typeInput.value
  68.         let description = descriptionInput.value
  69.         let teacher = teacherInput.value
  70.  
  71.         let add = {
  72.             method: "POST",
  73.             body: JSON.stringify({title, type, description, teacher})
  74.         }
  75.  
  76.         fetch(mainUrl, add)
  77.             .then(() => {
  78.                 loadAll()
  79.             })
  80.         titleInput.value = ''
  81.         typeInput.value = ''
  82.         descriptionInput.value = ''
  83.         teacherInput.value = ''
  84.     }
  85.  
  86.     function edit(editEvent) {
  87.         editEvent.preventDefault()
  88.         let myContainer = editEvent.currentTarget.parentElement
  89.         let myId = myContainer.id
  90.         let myUrl = `${mainUrl}${myId}`
  91.         let childrenArr = Array.from(myContainer.children)
  92.         let title = childrenArr[0].textContent
  93.         let teacher = childrenArr[1].textContent
  94.         let type = childrenArr[2].textContent
  95.         let description = childrenArr[3].textContent
  96.  
  97.         titleInput.value = title
  98.         typeInput.value = type
  99.         descriptionInput.value = description
  100.         teacherInput.value = teacher
  101.  
  102.         addBtn.disabled = true
  103.         editBtn.disabled = false
  104.  
  105.         editBtn.addEventListener("click", () => {
  106.  
  107.             let updateHeaders = {
  108.                 method: 'PUT',
  109.                 body: JSON.stringify({title: teacherInput.value,
  110.                     type: typeInput.value,
  111.                     description: descriptionInput.value,
  112.                     teacher: teacherInput.value})
  113.             }
  114.             fetch(myUrl, updateHeaders)
  115.                 .then(() => {
  116.                     loadAll()
  117.                 })
  118.  
  119.             addBtn.disabled = false
  120.             editBtn.disabled = true
  121.         })
  122.     }
  123.  
  124.     function finish(finishEvent) {
  125.         let finishId = finishEvent.currentTarget.parentElement.id
  126.         let finishUrl = `${mainUrl}${finishId}`
  127.  
  128.         let deleteHeaders = {
  129.             method: "DELETE"
  130.         }
  131.  
  132.         fetch(finishUrl, deleteHeaders)
  133.             .then(() => {
  134.                 loadAll()
  135.             })
  136.     }
  137. }
  138.  
  139. courses()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement