John_IV

Task Manager

Jun 15th, 2020
910
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     function makeEl(type, text, clazz) {
  3.         let el = document.createElement(type);
  4.         if (text !== null) {
  5.             el.textContent = text;
  6.         }
  7.         if (clazz !== null) {
  8.             el.setAttribute('class', clazz);
  9.         }
  10.         return el;
  11.     }
  12.  
  13.     function addToSection(section, art) {
  14.         sectionMap[section].children[1].appendChild(art);
  15.         return art;
  16.     }
  17.  
  18.     function deleteArticle(e) {
  19.         let art = e.target.parentNode.parentNode;
  20.         art.remove();
  21.         return art;
  22.     }
  23.  
  24.     function removeButtons(art) {
  25.         let btnDiv = art.children[3]
  26.         art.removeChild(btnDiv);
  27.         return art;
  28.     }
  29.  
  30.     let btn = this.document.getElementById('add');
  31.     let sections = document.getElementsByTagName('section');
  32.     let sectionMap = {
  33.         open: sections[1],
  34.         inProgress: sections[2],
  35.         complete: sections[3]
  36.     };
  37.  
  38.     btn.addEventListener('click', function (e) {
  39.         e.preventDefault();
  40.  
  41.         let title = document.getElementById('task').value;
  42.         let description = document.getElementById('description').value;
  43.         let date = document.getElementById('date').value;
  44.         let dateRegex = new RegExp('^\\d{4}\\.\\d{2}\\.\\d{2}$');
  45.  
  46.         if (title === '' || description === '' || !dateRegex.test(date)) {
  47.             console.log("Error");
  48.             return
  49.         }
  50.  
  51.         let art = document.createElement('article');
  52.  
  53.         art.appendChild(makeEl('h3', title, null));
  54.         art.appendChild(makeEl('p', `Description: ${description}`, null));
  55.         art.appendChild(makeEl('p', `Due Date: ${date}`, null));
  56.         let btnDiv = makeEl('div', null, 'flex');
  57.  
  58.         let startBtn = makeEl('button', 'Start', 'green');
  59.         startBtn.addEventListener('click', function (e) {
  60.             let art = removeButtons(deleteArticle(e));
  61.             let btnDiv = makeEl('div', null, 'flex');
  62.  
  63.             let delBtn = makeEl('button', 'Delete', 'red');
  64.             delBtn.addEventListener('click', function (e) {
  65.                 deleteArticle(e);
  66.             });
  67.             btnDiv.appendChild(delBtn);
  68.  
  69.             let finishBtn = makeEl('button', 'Finish', 'orange');
  70.             finishBtn.addEventListener('click', function (e) {
  71.                 addToSection('complete', removeButtons(deleteArticle(e)))
  72.             });
  73.             btnDiv.appendChild(finishBtn);
  74.  
  75.             art.appendChild(btnDiv);
  76.             addToSection('inProgress', art)
  77.         });
  78.         btnDiv.appendChild(startBtn);
  79.  
  80.         let delBtn = makeEl('button', 'Delete', 'red');
  81.         delBtn.addEventListener('click', function (e) {
  82.             deleteArticle(e);
  83.         });
  84.         btnDiv.appendChild(delBtn);
  85.  
  86.         art.appendChild(btnDiv);
  87.         addToSection('open', art)
  88.     });
  89. }
Advertisement
Add Comment
Please, Sign In to add comment