mirozspace

task e2410 - 1

Oct 25th, 2020 (edited)
547
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.  
  3.     let inputLectureName = document.querySelector('input[name="lecture-name"]');
  4.     let inputDate = document.querySelector('input[name="lecture-date"]');
  5.     let selectModule = document.querySelector('select[name="lecture-module"]');
  6.     let addButton = document.querySelector('.form-control button');
  7.     let trainingArea = document.querySelectorAll('.modules')[0];
  8.     addButton.addEventListener('click', trainingFunction);
  9.  
  10.     function trainingFunction(event) {
  11.         event.preventDefault();
  12.  
  13.         let [date, time] = inputDate.value.split('T');
  14.         date = date.replaceAll('-', '/');
  15.  
  16.         let allH3OnPage = Array.from(document.getElementsByTagName('h3'));
  17.         let currentH3 = allH3OnPage.find(e => e.textContent === selectModule.value.toUpperCase() + '_MODULE');
  18.  
  19.         if (currentH3) {
  20.             let oldUlLiS = Array.from(currentH3.parentElement.children[1].children);
  21.             currentH3.parentElement.children[1].innerHTML = '';
  22.             let newLi = document.createElement('li');
  23.             let newH4 = document.createElement('h4');
  24.             let newDeleteButton = document.createElement('button');
  25.             newLi.className = 'flex';
  26.             newH4.textContent = `${inputLectureName.value} - ${date} - ${time}`;
  27.             newDeleteButton.className = 'red';
  28.             newDeleteButton.textContent = 'Delete';
  29.             newDeleteButton.addEventListener('click', deleteButtonFunc);
  30.             newLi.appendChild(newH4);
  31.             newLi.appendChild(newDeleteButton);
  32.             oldUlLiS.push(newLi);
  33.             oldUlLiS.sort((a, b) => {
  34.                 let aaa = a.textContent.match('[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,2}\\s\\-\\s[0-9]{1,2}:[0-9]{1,2}')[0];
  35.                 let bbb = b.textContent.match('[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,2}\\s\\-\\s[0-9]{1,2}:[0-9]{1,2}')[0];
  36.                 return aaa.localeCompare(bbb);
  37.             });
  38.             oldUlLiS.forEach(e => currentH3.parentElement.children[1].appendChild(e));
  39.  
  40.         } else {
  41.             let div = document.createElement('div');
  42.             let h3 = document.createElement('h3');
  43.             let ul = document.createElement('ul');
  44.             let li = document.createElement('li');
  45.             let h4 = document.createElement('h4');
  46.             let deleteButton = document.createElement('button');
  47.  
  48.             div.className = 'module';
  49.             h3.textContent = selectModule.value.toUpperCase() + '_MODULE';
  50.             li.className = 'flex';
  51.             h4.textContent = `${inputLectureName.value} - ${date} - ${time}`;
  52.  
  53.             deleteButton.className = 'red';
  54.             deleteButton.textContent = 'Delete';
  55.             deleteButton.addEventListener('click', deleteButtonFunc);
  56.  
  57.             li.appendChild(h4);
  58.             li.appendChild(deleteButton);
  59.             ul.appendChild(li);
  60.             div.appendChild(h3);
  61.             div.appendChild(ul);
  62.             trainingArea.appendChild(div);
  63.         }
  64.  
  65.         inputLectureName.value = '';
  66.         inputDate.value = '';
  67.         selectModule.selectedIndex = 0;
  68.  
  69.         function deleteButtonFunc(event) {
  70.             if (event.target.parentElement.parentElement.children.length > 1) {
  71.                 event.target.parentElement.remove();
  72.             } else {
  73.                 event.target.parentElement.parentElement.parentElement.remove();
  74.             }
  75.         }
  76.     }
  77. }
RAW Paste Data