Advertisement
Guest User

Administration

a guest
Oct 25th, 2020
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     const lectureInput = document.querySelector('body > main > section.admin-view.section-view > div > div > form > div:nth-child(1) > input[type=text]');
  3.     const dateInput = document.querySelector('body > main > section.admin-view.section-view > div > div > form > div:nth-child(2) > input[type=datetime-local]');
  4.     const moduleInput = document.querySelector('body > main > section.admin-view.section-view > div > div > form > div:nth-child(3) > select');
  5.     const addButton = document.querySelector('.form-control button');
  6.     const modulesContainer = document.querySelector('div.modules');
  7.  
  8.     addButton.addEventListener('click', (ev) => {
  9.         ev.preventDefault();
  10.         // get input values
  11.         let lecture = lectureInput.value;
  12.         let date = dateInput.value;
  13.         let module = moduleInput.value;
  14.         // validate input values
  15.         if (module === 'Select module' || !date || !lecture) {
  16.             return;
  17.         }
  18.         // format values
  19.         module = module.toUpperCase();
  20.         date = date.replace(/-/g, '/').replace('T', ' - ');
  21.         // prepare li to insert
  22.         const li = document.createElement('li');
  23.         li.className = 'flex';
  24.         const h4 = document.createElement('h4');
  25.         h4.textContent = `${lecture} - ${date}`;
  26.         li.appendChild(h4);
  27.         const deleteButton = document.createElement('button');
  28.         deleteButton.classList.add('red');
  29.         deleteButton.textContent = 'Del';
  30.         deleteButton.addEventListener('click', (e) => {
  31.             e.preventDefault();
  32.             let ul =  e.target.parentNode.parentNode;
  33.             li.remove();
  34.             if (ul.children.length === 0) {
  35.                 ul.parentNode.remove();
  36.             }
  37.         });
  38.         li.appendChild(deleteButton);
  39.         // search for module to insert in
  40.         let modules = document.querySelectorAll('div.module');
  41.         let moduleContainer = Array.from(modules).find(m => m.querySelector('h3').textContent === `${module}-MODULE`);
  42.         if (!moduleContainer) {
  43.             // if not found - create module
  44.             moduleContainer = document.createElement('div');
  45.             moduleContainer.className = 'module';
  46.             const h3 = document.createElement('h3');
  47.             h3.textContent = `${module}-MODULE`;
  48.             moduleContainer.appendChild(h3);
  49.             const ul = document.createElement('ul');
  50.             moduleContainer.appendChild(ul);
  51.             modulesContainer.appendChild(moduleContainer);
  52.         }
  53.         // append li to module's ul
  54.         moduleContainer.querySelector('ul').appendChild(li);
  55.         // sort li-s in module
  56.         Array.from(moduleContainer.querySelectorAll('li'))
  57.             .sort((a, b) => getDate(a).localeCompare(getDate(b)))
  58.             .forEach(liEl => moduleContainer.querySelector('ul').appendChild(liEl));
  59.     });
  60.  
  61.     function getDate(liElement) {
  62.         return liElement.querySelector('h4').textContent.replace(/^.+? - /, '');
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement