Advertisement
didkoslawow

Untitled

May 31st, 2023
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.   const taskElement = document.querySelector('#task');
  3.   const descriptionElement = document.querySelector('#description');
  4.   const dateElement = document.querySelector('#date');
  5.   const addButtonElement = document.querySelector('#add');
  6.   const open = document
  7.     .querySelectorAll('section')[1]
  8.     .querySelectorAll('div')[1];
  9.   const inProgress = document
  10.     .querySelectorAll('section')[2]
  11.     .querySelectorAll('div')[1];
  12.   const complete = document
  13.     .querySelectorAll('section')[3]
  14.     .querySelectorAll('div')[1];
  15.  
  16.   addButtonElement.addEventListener('click', onClick);
  17.  
  18.   function onClick(e) {
  19.     e.preventDefault();
  20.     const taskInput = taskElement.value;
  21.     const descriptionInput = descriptionElement.value;
  22.     const dateInput = dateElement.value;
  23.     const isInvalid = !taskInput && !descriptionInput && !dateInput;
  24.  
  25.     if (isInvalid) return;
  26.  
  27.     createArticle(
  28.       'open',
  29.       'green',
  30.       'red',
  31.       taskInput,
  32.       descriptionInput,
  33.       dateInput
  34.     );
  35.  
  36.     taskElement.value = '';
  37.     descriptionElement.value = '';
  38.     dateElement.value = '';
  39.   }
  40.  
  41.   function createArticle(
  42.     tabType,
  43.     firstBtnClass,
  44.     secondBtnClass,
  45.     task,
  46.     description,
  47.     date
  48.   ) {
  49.     const newArticleElement = document.createElement('article');
  50.     const h3Element = document.createElement('h3');
  51.     h3Element.textContent = task;
  52.     const descriptionParaElement = document.createElement('p');
  53.     descriptionParaElement.textContent = `Description: ${description}`;
  54.     const dateParaElement = document.createElement('p');
  55.     dateParaElement.textContent = `Due Date: ${date}`;
  56.  
  57.     newArticleElement.appendChild(h3Element);
  58.     newArticleElement.appendChild(descriptionParaElement);
  59.     newArticleElement.appendChild(dateParaElement);
  60.  
  61.     if (tabType === 'open') {
  62.       const btnsDivElement = document.createElement('div');
  63.       btnsDivElement.className = 'flex';
  64.  
  65.       const startBtn = document.createElement('button');
  66.       startBtn.textContent = 'Start';
  67.       startBtn.className = firstBtnClass;
  68.       startBtn.addEventListener('click', () => {
  69.         removeArticle(newArticleElement);
  70.         createArticle('In Progress', 'red', 'orange', task, description, date);
  71.       });
  72.  
  73.       const deleteBtn = document.createElement('button');
  74.       deleteBtn.textContent = 'Delete';
  75.       deleteBtn.className = secondBtnClass;
  76.       deleteBtn.addEventListener('click', () =>
  77.         removeArticle(newArticleElement)
  78.       );
  79.  
  80.       btnsDivElement.appendChild(startBtn);
  81.       btnsDivElement.appendChild(deleteBtn);
  82.       newArticleElement.appendChild(btnsDivElement);
  83.       open.appendChild(newArticleElement);
  84.     } else if (tabType === 'In Progress') {
  85.       const btnsDivElement = document.createElement('div');
  86.       btnsDivElement.className = 'flex';
  87.  
  88.       const deleteBtn = document.createElement('button');
  89.       deleteBtn.textContent = 'Delete';
  90.       deleteBtn.className = firstBtnClass;
  91.       deleteBtn.addEventListener('click', () =>
  92.         removeArticle(newArticleElement)
  93.       );
  94.  
  95.       const finishBtn = document.createElement('button');
  96.       finishBtn.textContent = 'Finish';
  97.       finishBtn.className = secondBtnClass;
  98.       finishBtn.addEventListener('click', () => {
  99.         removeArticle(newArticleElement);
  100.         createArticle('Complete', null, null, task, description, date);
  101.       });
  102.  
  103.       btnsDivElement.appendChild(deleteBtn);
  104.       btnsDivElement.appendChild(finishBtn);
  105.       newArticleElement.appendChild(btnsDivElement);
  106.       inProgress.appendChild(newArticleElement);
  107.     } else if (tabType === 'Complete') {
  108.         complete.appendChild(newArticleElement);
  109.     }
  110.   }
  111.  
  112.   function removeArticle(article) {
  113.     article.remove();
  114.   }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement