Advertisement
GeorgiLukanov87

CRUD Todo List

Mar 2nd, 2023
635
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const loadBtn = document.getElementById('load-button');
  2. const url = `http://localhost:3030/jsonstore/tasks/`;
  3. const toDoList = document.getElementById('todo-list');
  4. const addBtn = document.getElementById('add-button');
  5. const titleInput = document.getElementById('title');
  6.  
  7. let AllData = {};
  8.  
  9. function refreshTasks(AllData) {
  10.     for (obj in AllData) {
  11.         let name = AllData[obj]['name'];
  12.         let id = AllData[obj]['_id']
  13.  
  14.         AllData[id] = name
  15.  
  16.         let li = document.createElement('li');
  17.  
  18.         let span = document.createElement('span');
  19.         span.textContent = name;
  20.  
  21.         let removeBtn = document.createElement('button');
  22.         removeBtn.textContent = 'Remove';
  23.  
  24.         let editBtn = document.createElement('button');
  25.         editBtn.textContent = 'Edit';
  26.  
  27.         li.appendChild(span);
  28.         li.appendChild(removeBtn);
  29.         li.appendChild(editBtn);
  30.  
  31.         toDoList.appendChild(li);
  32.  
  33.         removeBtn.addEventListener('click', function removeTask(e) {
  34.             let TaskName = e.currentTarget.parentNode.children[0].textContent
  35.             for (el in AllData) {
  36.                 if (AllData[el] === TaskName) {
  37.                     let id = AllData[el];
  38.                     delete AllData[el];
  39.                 }
  40.             }
  41.             let deleteUrl = `${url}${id}`
  42.             console.log(deleteUrl)
  43.             fetch(deleteUrl, {
  44.                 method: 'DELETE',
  45.             })
  46.             e.currentTarget.parentNode.remove()
  47.  
  48.         })
  49.  
  50.         editBtn.addEventListener('click', function editTask(e) {
  51.             e.preventDefault();
  52.             let inputText = e.currentTarget.parentNode.children[0].textContent;
  53.             let parent = e.currentTarget.parentNode
  54.             parent.children[0].remove()
  55.             parent.children[0].remove()
  56.             parent.children[0].remove()
  57.  
  58.             let input = document.createElement('input');
  59.             input.value = inputText;
  60.             parent.appendChild(input)
  61.             parent.appendChild(removeBtn);
  62.             let submitBtn = document.createElement('button');
  63.             submitBtn.textContent = 'Submit';
  64.             parent.appendChild(submitBtn);
  65.  
  66.             submitBtn.addEventListener('click', function updateTaskName(e) {
  67.                 e.preventDefault();
  68.                 let TaskName = e.currentTarget.parentNode.children[0].textContent
  69.                 for (el in AllData) {
  70.                     if (AllData[el] === TaskName) {
  71.                         let id = AllData[el];
  72.                         delete AllData[el];
  73.                     }
  74.                 }
  75.                 let patchURL = `${url}${id}`
  76.                 // console.log(patchURL)
  77.                 let patchText = input.value;
  78.                 fetch(patchURL, {
  79.                     method: 'PATCH',
  80.                     headers: {
  81.                         'content-type': 'application/json'
  82.                     },
  83.                     body: JSON.stringify({
  84.                         'name': patchText,
  85.                     })
  86.                 })
  87.                 loadInfo(e);
  88.             })
  89.  
  90.         })
  91.  
  92.     }
  93.  
  94.  
  95. }
  96.  
  97. loadBtn.addEventListener('click', loadInfo)
  98. function loadInfo(e) {
  99.     e.preventDefault()
  100.     toDoList.innerHTML = '';
  101.     fetch(url)
  102.         .then(res => res.json())
  103.         .then(data => {
  104.             refreshTasks(data);
  105.         });
  106. }
  107.  
  108. addBtn.addEventListener('click', addTask);
  109. function addTask(e) {
  110.     let name = titleInput.value;
  111.     e.preventDefault();
  112.     fetch(url, {
  113.         method: "POST",
  114.         headers: {
  115.             'content-type': 'application/json'
  116.         },
  117.         body: JSON.stringify({
  118.             'name': name,
  119.  
  120.         })
  121.     })
  122.         .then(res => res.json())
  123.         .then(data => {
  124.             let obj = {};
  125.             for (i in data) {
  126.                 obj[i] = data;
  127.                 let name = obj[i]['name']
  128.                 let id = obj[i]['_id']
  129.                 AllData[id] = name
  130.                 break;
  131.             }
  132.             refreshTasks(obj);
  133.             loadInfo(e)
  134.         })
  135. }
  136.  
  137.  
  138. function attachEvents() {
  139. }
  140.  
  141. attachEvents();
  142.  
  143.  
  144.  
  145.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement