Guest User

01. SoftUni Administration

a guest
Nov 13th, 2020 (edited)
352
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     document.querySelector("form > div > button").addEventListener('click', getInfo);
  3.     let inputEls = Array.from(document.querySelectorAll("form > div > input"));
  4.     let selectEl = document.querySelector("div > select");
  5.     let trainingModulesEl = document.querySelector(".modules");
  6.     let modules = [];
  7.  
  8.     function getInfo(e) {
  9.         e.preventDefault();
  10.         let [lectureNameFiled, dateField] = inputEls;
  11.  
  12.         if (lectureNameFiled.value == "" || dateField.value == "") {
  13.             return
  14.         }
  15.  
  16.         if (selectEl.value == "Select module") {
  17.             return
  18.         }
  19.  
  20.         let headerH3El = document.createElement("h3");
  21.         headerH3El.textContent = selectEl.value.toUpperCase() + "-MODULE";
  22.         let divEl = document.createElement("div");
  23.         divEl.setAttribute("class", 'module');
  24.         divEl.appendChild(headerH3El);
  25.         let ulEl = document.createElement("ul");
  26.         let liEl = document.createElement("li");
  27.         liEl.setAttribute("class", 'flex');
  28.         let headerH4El = document.createElement("h4");
  29.         let dateValue = convertDate(dateField.value);
  30.  
  31.         headerH4El.textContent = `${lectureNameFiled.value} - ${dateValue}`;
  32.         let delBtn = document.createElement("button");
  33.         delBtn.textContent = "Del";
  34.         delBtn.setAttribute("class", "red");
  35.  
  36.         liEl.appendChild(headerH4El);
  37.         liEl.appendChild(delBtn);
  38.  
  39.         if (modules.includes(selectEl.value) && modules.length > 0) {
  40.             let trainingDivEls = Array.from(document.querySelectorAll(".module"));
  41.             for (let curDivEl of trainingDivEls) {
  42.                 let h3El = curDivEl.firstElementChild;
  43.                 if (headerH3El.textContent == h3El.textContent) {
  44.                     let curUlEl = curDivEl.lastElementChild;
  45.                     curUlEl.appendChild(liEl);
  46.                     let liElArr = Array.from(curUlEl.querySelectorAll("li"));
  47.                     liElArr.sort((li1, li2) => {
  48.                         let li1Date = getDate(li1)
  49.                         li1Date = convertDateToInitialState(li1Date);
  50.                         li1Date = new Date(li1Date);
  51.                         let li2Date = getDate(li2)
  52.                         li2Date = convertDateToInitialState(li2Date);
  53.                         li2Date = new Date(li2Date);
  54.  
  55.                         return li1Date.getTime() - li2Date.getTime();
  56.                     })
  57.                     liElArr.forEach(el => curUlEl.appendChild(el))
  58.                 }
  59.             }
  60.         } else {
  61.             ulEl.appendChild(liEl);
  62.             divEl.appendChild(ulEl);
  63.             trainingModulesEl.appendChild(divEl);
  64.             modules.push(selectEl.value);
  65.         }
  66.  
  67.         delBtn.addEventListener('click', deleteTraining);
  68.  
  69.         function deleteTraining(e) {
  70.             let liToRemove = e.target.parentElement;
  71.             if (!liToRemove.nextElementSibling && !liToRemove.previousElementSibling) {
  72.                 let training = liToRemove.parentElement.parentElement.querySelector("h3");
  73.                 training = training.textContent.split("-")[0];
  74.                 let index = modules.map(e => e.toUpperCase()).indexOf(training);
  75.                 modules.splice(index, 1);
  76.                 liToRemove.parentElement.parentElement.remove();
  77.             } else {
  78.                 liToRemove.remove();
  79.             }
  80.         }
  81.  
  82.         function convertDate(dateValue) {
  83.             while (dateValue.includes("-")) {
  84.                 dateValue = dateValue.replace("-", "/");
  85.             }
  86.             dateValue = dateValue.replace("T", " - ");
  87.             return dateValue;
  88.         }
  89.  
  90.         function convertDateToInitialState(dateValue) {
  91.             while (dateValue.includes("/")) {
  92.                 dateValue = dateValue.replace("/", "-");
  93.             }
  94.             dateValue = dateValue.replace(" - ", "T");
  95.             return dateValue;
  96.         }
  97.  
  98.         function getDate(liEl) {
  99.             let index = liEl.querySelector("h4").textContent.indexOf("-") + 2;
  100.             let dateAndTime = liEl.querySelector("h4").textContent.slice(index);
  101.             return dateAndTime;
  102.         }
  103.     }
  104. };
RAW Paste Data