Advertisement
pacho_the_python

Untitled

Apr 9th, 2023
649
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function attachEvents() {
  2.     let main_url = 'http://localhost:3030/jsonstore/tasks/'
  3.     const load_btn = document.getElementById('load-board-btn')
  4.     const add_btn = document.getElementById('create-task-btn')
  5.     const ul_elements = Array.from(document.getElementsByTagName('ul'))
  6.     let to_do_ul = ul_elements[0]
  7.     let progress_ul = ul_elements[1]
  8.     let code_progress_ul = ul_elements[2]
  9.     let done_ul = ul_elements[3]
  10.  
  11.     const title_input = document.getElementById('title')
  12.     const description_input = document.getElementById('description')
  13.  
  14.     load_btn.addEventListener("click", load_tasks)
  15.     add_btn.addEventListener("click", add_task)
  16.  
  17.     function load_tasks(load_event) {
  18.         if (load_event) {
  19.             load_event.preventDefault()
  20.         }
  21.         to_do_ul.innerHTML = ''
  22.         progress_ul.innerHTML = ''
  23.         code_progress_ul.innerHTML = ''
  24.         done_ul.innerHTML = ''
  25.  
  26.         fetch(main_url)
  27.             .then((res) => res.json())
  28.             .then((data) => {
  29.                 let tasks = Object.values(data)
  30.                 for (const task of tasks) {
  31.                     let li_element = document.createElement('li')
  32.                     li_element.id = task._id
  33.                     li_element.classList.add('task')
  34.                     let h3_content = task.title
  35.                     let p_content = task.description
  36.                     let h3_element = create_element('h3', h3_content, li_element)
  37.                     let p_element = create_element('p', p_content, li_element)
  38.                     if (task.status === 'ToDo') {
  39.                         let button_element = create_element('button', 'Move to In Progress', li_element, move_to)
  40.                         button_element.classList.add('To_Do')
  41.                         to_do_ul.appendChild(li_element)
  42.                     }
  43.                     else if (task.status === 'In Progress') {
  44.                         let button_element = create_element('button', 'Move to Code Review', li_element, move_to)
  45.                         button_element.classList.add('In_Progress')
  46.                         progress_ul.appendChild(li_element)
  47.                     }
  48.                     else if (task.status === 'Code Review') {
  49.                         let button_element = create_element('button', 'Move to Done', li_element, move_to)
  50.                         button_element.classList.add('Code_Review')
  51.                         code_progress_ul.appendChild(li_element)
  52.                     }
  53.                     else if (task.status === 'Done') {
  54.                         let button_element = create_element('button', 'Close', li_element, close_task)
  55.                         done_ul.appendChild(li_element)
  56.                     }
  57.                 }
  58.  
  59.             })
  60.     }
  61.  
  62.     function add_task(add_event) {
  63.         add_event.preventDefault()
  64.         let title = title_input.value
  65.         let description = description_input.value
  66.         let status = 'ToDo'
  67.         let add_task_headers = {
  68.             method: 'POST',
  69.             body: JSON.stringify({title, description, status})
  70.         }
  71.  
  72.         fetch(main_url, add_task_headers)
  73.             .then(() => {
  74.                 load_tasks()
  75.             })
  76.         title_input.value = ''
  77.         description_input.value = ''
  78.     }
  79.  
  80.     function move_to(move_event) {
  81.         let move_element = move_event.currentTarget.parentElement
  82.         let move_id = move_element.id
  83.         let move_url = `${main_url}${move_id}`
  84.         let task_info = Array.from(move_element.children)
  85.         let title = task_info[0].textContent
  86.         let description = task_info[1].textContent
  87.         let status = ''
  88.         let button_status = this.classList[0].split('_').join(' ')
  89.         if (button_status === 'To Do') {
  90.             status = 'In Progress'
  91.         } else if (button_status === 'In Progress') {
  92.             status = 'Code Review'
  93.         } else if (button_status === 'Code Review') {
  94.             status = 'Done'
  95.         }
  96.  
  97.         let move_headers = {
  98.             method: "PATCH",
  99.             body: JSON.stringify({title: title, description: description, status: status})
  100.         }
  101.  
  102.         fetch(move_url, move_headers)
  103.             .then(() => {
  104.                 load_tasks()
  105.             })
  106.     }
  107.  
  108.     function close_task(close_event) {
  109.         let close_element = close_event.currentTarget.parentElement
  110.         let current_id = close_element.id
  111.         let close_url = `${main_url}${current_id}`
  112.         let close_headers = {
  113.             method: 'DELETE',
  114.         }
  115.  
  116.         fetch(close_url, close_headers)
  117.             .then(() => {
  118.                 load_tasks()
  119.             })
  120.     }
  121.  
  122.     function create_element(element_type, element_content, patent_element, some_event) {
  123.         let current_element = document.createElement(element_type)
  124.         current_element.textContent = element_content
  125.         patent_element.appendChild(current_element)
  126.         if (some_event) {
  127.             current_element.addEventListener('click', some_event)
  128.         }
  129.         return current_element
  130.     }
  131. }
  132.  
  133. attachEvents();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement