Advertisement
RosenPP

09. Task Manager

Jun 21st, 2024
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     const taskField = document.getElementById('task');
  3.     const descriptionField = document.getElementById('description');
  4.     const dateField = document.getElementById('date');
  5.     const addBtn = document.getElementById('add');
  6.     const openArea = document.querySelectorAll('section')[1].querySelector('div');
  7.     const progressArea = document.querySelectorAll('section')[2].querySelector('div');
  8.     const completeArea = document.querySelectorAll('section')[3].querySelector('div');
  9.  
  10.     addBtn.addEventListener('click', addTask);
  11.  
  12.     function addTask(e) {
  13.         e.preventDefault();
  14.         const task = taskField.value.trim();
  15.         const description = descriptionField.value.trim();
  16.         const date = dateField.value.trim();
  17.  
  18.         if (!task || !description || !date) {
  19.             return;
  20.         }
  21.  
  22.         createArticle('OpenTask', 'Start', 'Delete', 'green', 'red', task, description, date);
  23.     }
  24.  
  25.     function createArticle(status, btn1Text, btn2Text, btn1Class, btn2Class, task, description, date) {
  26.         const article = document.createElement('article');
  27.         const h3 = document.createElement('h3');
  28.         h3.textContent = task;
  29.         const p1 = document.createElement('p');
  30.         p1.textContent = `Description: ${description}`;
  31.         const p2 = document.createElement('p');
  32.         p2.textContent = `Due Date: ${date}`;
  33.  
  34.         article.appendChild(h3);
  35.         article.appendChild(p1);
  36.         article.appendChild(p2);
  37.  
  38.         const divEl = document.createElement('div');
  39.         divEl.classList.add('flex');
  40.  
  41.         const btn1 = document.createElement('button');
  42.         btn1.textContent = btn1Text;
  43.         btn1.classList.add(btn1Class);
  44.         btn1.addEventListener('click', function() {
  45.             if (status === 'OpenTask') {
  46.                 moveToInProgress(article, task, description, date);
  47.             } else if (status === 'ProgressTask') {
  48.                 deleteTask(article);
  49.             }
  50.         });
  51.  
  52.         const btn2 = document.createElement('button');
  53.         btn2.textContent = btn2Text;
  54.         btn2.classList.add(btn2Class);
  55.         btn2.addEventListener('click', function() {
  56.             if (status === 'OpenTask') {
  57.                 deleteTask(article);
  58.             } else if (status === 'ProgressTask') {
  59.                 finishTask(article, task, description, date);
  60.             }
  61.         });
  62.  
  63.         divEl.appendChild(btn1);
  64.         divEl.appendChild(btn2);
  65.         article.appendChild(divEl);
  66.  
  67.         if (status === 'OpenTask') {
  68.             openArea.appendChild(article);
  69.         } else if (status === 'ProgressTask') {
  70.             progressArea.appendChild(article);
  71.         } else if (status === 'CompleteTask') {
  72.             completeArea.appendChild(article);
  73.         }
  74.  
  75.         function moveToInProgress(article, task, description, date) {
  76.             article.remove();
  77.             createArticle('ProgressTask', 'Delete', 'Finish', 'red', 'orange', task, description, date);
  78.         }
  79.  
  80.         function finishTask(article, task, description, date) {
  81.             article.remove();
  82.             createArticle('CompleteTask', null, null, null, null, task, description, date);
  83.         }
  84.  
  85.         function deleteTask(article) {
  86.             article.remove();
  87.         }
  88.     }
  89. }
Tags: #JSAdvanced
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement