Advertisement
GeorgiLukanov87

03. Sprint Board - exam

Apr 8th, 2023 (edited)
792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // 03. Sprint Board
  2.  
  3. function attachEvents() {
  4.     const baseURL = `http://localhost:3030/jsonstore/tasks/`
  5.     const loadBtn = document.getElementById('load-board-btn');
  6.     const addTask = document.getElementById('create-task-btn');
  7.     loadBtn.addEventListener('click', loadAll);
  8.     addTask.addEventListener('click', addTaskHandler)
  9.     const toDo = document.getElementById('todo-section')
  10.     const inProgress = document.getElementById('in-progress-section');
  11.     const codeReview = document.getElementById('code-review-section');
  12.     const done = document.getElementById('done-section');
  13.  
  14.     const titleElement = document.getElementById('title');
  15.     const descriptionElement = document.getElementById('description');
  16.  
  17.     function loadAll(e) {
  18.         if (e) {
  19.             e.preventDefault();
  20.         }
  21.  
  22.         toDo.innerHTML = '';
  23.         inProgress.innerHTML = '';
  24.         codeReview.innerHTML = '';
  25.         done.innerHTML = '';
  26.  
  27.         fetch(baseURL)
  28.             .then(res => res.json())
  29.             .then(data => {
  30.                 for (let row in data) {
  31.                     let description = data[row]['description']
  32.                     let status = data[row]['status']
  33.                     let title = data[row]['title']
  34.                     let id = data[row]['_id']
  35.  
  36.                     if (!status) {
  37.                         status = 'ToDo'
  38.                     }
  39.  
  40.                     let li = document.createElement('li');
  41.                     li.id = id;
  42.                     li.classList.add('task');
  43.                     let h3 = document.createElement('h3');
  44.                     h3.textContent = title;
  45.                     let p = document.createElement('p');
  46.                     p.textContent = description;
  47.  
  48.                     let btn = document.createElement('button');
  49.                     btn.id = id;
  50.                     if (status === 'ToDo') {
  51.                         btn.textContent = 'Move to In Progress'
  52.                     } else if (status === 'In Progress') {
  53.                         btn.textContent = 'Move to Code Review'
  54.                     } else if (status === 'Code Review') {
  55.                         btn.textContent = 'Move to Done'
  56.                     } else if (status === 'Done') {
  57.                         btn.textContent = 'Close'
  58.                     }
  59.                     btn.addEventListener('click', btnHandler);
  60.  
  61.                     li.appendChild(h3);
  62.                     li.appendChild(p);
  63.                     li.appendChild(btn);
  64.  
  65.                     if (status === 'ToDo') {
  66.                         toDo.appendChild(li)
  67.                     } else if (status === 'In Progress') {
  68.                         inProgress.appendChild(li)
  69.                     } else if (status === 'Code Review') {
  70.                         codeReview.appendChild(li)
  71.                     } else if (status === 'Done') {
  72.                         done.appendChild(li)
  73.                     }
  74.  
  75.                 }
  76.             })
  77.     }
  78.  
  79.  
  80.     function addTaskHandler(e) {
  81.         if (e) {
  82.             e.preventDefault()
  83.         }
  84.         let title = titleElement.value;
  85.         let description = descriptionElement.value,
  86.             savedTask = {
  87.                 title,
  88.                 description,
  89.             }
  90.         const headers = { method: 'POST', body: JSON.stringify(savedTask) };
  91.  
  92.         fetch(baseURL, headers)
  93.             .then(() => loadAll(e), titleElement.value = '', descriptionElement.value = '');
  94.  
  95.     }
  96.  
  97.     function btnHandler(e) {
  98.         if (e) {
  99.             e.preventDefault();
  100.         }
  101.         let currentId = e.target.id;
  102.         console.log(currentId)
  103.         console.log(e.target.textContent)
  104.         let currentStatus = e.target.textContent;
  105.         let fetchStatus = '';
  106.         let fetchURL = `${baseURL}${currentId}`;
  107.  
  108.         if (currentStatus === 'Close') {
  109.             const headers = { method: 'DELETE', };
  110.             fetch(fetchURL, headers)
  111.                 .then(() => loadAll(e))
  112.  
  113.         } else {
  114.             if (currentStatus === 'Move to In Progress') {
  115.                 fetchStatus = 'In Progress';
  116.             } else if (currentStatus === 'Move to Code Review') {
  117.                 fetchStatus = 'Code Review';
  118.             } else if (currentStatus === 'Move to Done') {
  119.                 fetchStatus = 'Done'
  120.             }
  121.  
  122.             const headers = { method: 'PATCH', body: JSON.stringify({ status: fetchStatus }) };
  123.             fetch(fetchURL, headers)
  124.                 .then(() => loadAll(e));
  125.         }
  126.  
  127.     }
  128.  
  129. }
  130.  
  131. attachEvents();
  132.  
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement