Advertisement
EntropyStarRover

Problem 01. SoftUni Administration

Feb 12th, 2021
757
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let inputs = Array.from(document.getElementsByTagName('input'));
  3.     let modulesDiv = document.getElementsByClassName("modules")[0];
  4.     let nameInput = inputs[0];
  5.     let dateInput = inputs[1];
  6.  
  7.     let moduleSelect = Array.from(document.getElementsByTagName('select'))[0];
  8.     let addButton = Array.from(document.getElementsByTagName("button"))[0];
  9.     addButton.addEventListener("click", addLecture);
  10.  
  11.     let modulesArr = [];
  12.  
  13.     function addLecture(e) {
  14.         e.preventDefault();
  15.         let lName = nameInput.value;
  16.         let lDate = dateInput.value;
  17.         console.log(typeof lDate)
  18.         let lModule = moduleSelect.options[moduleSelect.selectedIndex].textContent;
  19.  
  20.         if (lName.length > 0 && lDate.length > 0 && lModule !== "Select module...") {
  21.             let d = lDate.substring(0, lDate.indexOf("T"));
  22.             let h = lDate.substring(lDate.indexOf("T") + 1);
  23.  
  24.             let normDate = d.split("-").join("/");
  25.             let fullDate = `${normDate} - ${h}`;
  26.             let fullDesc = `${lName} - ${fullDate}`;
  27.  
  28.  
  29.             if (modulesArr.includes(lModule) == false) {
  30.                 let modDiv = document.createElement("div");
  31.                 modDiv.className = "module";
  32.                 modDiv.id = lModule;
  33.                 let moduleH = document.createElement("h3");
  34.                 let mhtext = `${lModule.toLocaleUpperCase()}-MODULE`
  35.                 moduleH.textContent = mhtext;
  36.                 modDiv.appendChild(moduleH);
  37.                 let modUl = document.createElement("ul");
  38.                 let lectureLi = document.createElement("li");
  39.                 lectureLi.id = normDate;
  40.                 lectureLi.className = "flex";
  41.                 let descriptionH = document.createElement("h4");
  42.                 descriptionH.textContent = fullDesc;
  43.                 let delBtn = document.createElement("button");
  44.                 delBtn.className = "red";
  45.                 delBtn.textContent = "Del";
  46.                 delBtn.addEventListener("click", delLecture);
  47.                 lectureLi.appendChild(descriptionH);
  48.                 lectureLi.appendChild(delBtn);
  49.                 modUl.appendChild(lectureLi);
  50.                 modDiv.appendChild(modUl);
  51.                 modulesDiv.appendChild(modDiv);
  52.  
  53.                 modulesArr.push(lModule);
  54.             } else {
  55.                 let modDiv = document.getElementById(lModule);
  56.                 console.log(modDiv);
  57.  
  58.                 let modUl = modDiv.querySelector('ul');
  59.                 let lectureLi = document.createElement("li");
  60.                 lectureLi.id = normDate;
  61.                 lectureLi.className = "flex";
  62.                 let descriptionH = document.createElement("h4");
  63.                 descriptionH.textContent = fullDesc;
  64.                 let delBtn = document.createElement("button");
  65.                 delBtn.className = "red";
  66.                 delBtn.textContent = "Del";
  67.                 delBtn.addEventListener("click", delLecture);
  68.                 lectureLi.appendChild(descriptionH);
  69.                 lectureLi.appendChild(delBtn);
  70.                 modUl.appendChild(lectureLi);
  71.                 sortUl(modUl);
  72.             }
  73.         }
  74.  
  75.         function delLecture(e) {
  76.             let parentLi = e.target.parentNode;
  77.             let parentUl = parentLi.parentNode;
  78.             parentUl.removeChild(parentLi);
  79.             sortUl(parentUl);
  80.             let activeLectures = Array.from(parentUl.querySelectorAll('li'));
  81.             if (activeLectures.length == 0) {
  82.                 console.log('delete entire div');
  83.                 let divToDelete = parentUl.parentNode;
  84.  
  85.                 let indexOfMod = -1;
  86.  
  87.                 for (let i = 0; i < modulesArr; i++) {
  88.                     if (modulesArr[i] == divToDelete.id) {
  89.                         indexOfMod = i;
  90.                     }
  91.                 }
  92.                 modulesArr.splice(indexOfMod, 1);
  93.                 modulesDiv.removeChild(divToDelete);
  94.             }
  95.         }
  96.  
  97.         function sortUl(ul) {
  98.             let liArr = Array.from(ul.querySelectorAll('li'));
  99.             let sortedLis = liArr.sort((a, b) => a.id.localeCompare(b.id));
  100.             ul.innerHtml = "";
  101.             sortedLis.forEach(l => {
  102.                 ul.appendChild(l);
  103.             })
  104.         }
  105.  
  106.     }
  107. };
Advertisement
RAW Paste Data Copied
Advertisement