CCCPaste

Problem 01. SoftUni Administration

function solve() {
    let inputs = Array.from(document.getElementsByTagName('input'));
    let modulesDiv = document.getElementsByClassName("modules")[0];
    let nameInput = inputs[0];
    let dateInput = inputs[1];

    let moduleSelect = Array.from(document.getElementsByTagName('select'))[0];
    let addButton = Array.from(document.getElementsByTagName("button"))[0];
    addButton.addEventListener("click", addLecture);

    let modulesArr = [];

    function addLecture(e) {
        e.preventDefault();
        let lName = nameInput.value;
        let lDate = dateInput.value;
        console.log(typeof lDate)
        let lModule = moduleSelect.options[moduleSelect.selectedIndex].textContent;

        if (lName.length > 0 && lDate.length > 0 && lModule !== "Select module...") {
            let d = lDate.substring(0, lDate.indexOf("T"));
            let h = lDate.substring(lDate.indexOf("T") + 1);

            let normDate = d.split("-").join("/");
            let fullDate = `${normDate} - ${h}`;
            let fullDesc = `${lName} - ${fullDate}`;
  

            if (modulesArr.includes(lModule) == false) {
                let modDiv = document.createElement("div");
                modDiv.className = "module";
                modDiv.id = lModule;
                let moduleH = document.createElement("h3");
                let mhtext = `${lModule.toLocaleUpperCase()}-MODULE`
                moduleH.textContent = mhtext;
                modDiv.appendChild(moduleH);
                let modUl = document.createElement("ul");
                let lectureLi = document.createElement("li");
                lectureLi.id = normDate;
                lectureLi.className = "flex";
                let descriptionH = document.createElement("h4");
                descriptionH.textContent = fullDesc;
                let delBtn = document.createElement("button");
                delBtn.className = "red";
                delBtn.textContent = "Del";
                delBtn.addEventListener("click", delLecture);
                lectureLi.appendChild(descriptionH);
                lectureLi.appendChild(delBtn);
                modUl.appendChild(lectureLi);
                modDiv.appendChild(modUl);
                modulesDiv.appendChild(modDiv);

                modulesArr.push(lModule);
            } else {
                let modDiv = document.getElementById(lModule);
                console.log(modDiv);

                let modUl = modDiv.querySelector('ul');
                let lectureLi = document.createElement("li");
                lectureLi.id = normDate;
                lectureLi.className = "flex";
                let descriptionH = document.createElement("h4");
                descriptionH.textContent = fullDesc;
                let delBtn = document.createElement("button");
                delBtn.className = "red";
                delBtn.textContent = "Del";
                delBtn.addEventListener("click", delLecture);
                lectureLi.appendChild(descriptionH);
                lectureLi.appendChild(delBtn);
                modUl.appendChild(lectureLi);
                sortUl(modUl);
            }
        }

        function delLecture(e) {
            let parentLi = e.target.parentNode;
            let parentUl = parentLi.parentNode;
            parentUl.removeChild(parentLi);
            sortUl(parentUl);
            let activeLectures = Array.from(parentUl.querySelectorAll('li'));
            if (activeLectures.length == 0) {
                console.log('delete entire div');
                let divToDelete = parentUl.parentNode;

                let indexOfMod = -1;

                for (let i = 0; i < modulesArr; i++) {
                    if (modulesArr[i] == divToDelete.id) {
                        indexOfMod = i;
                    }
                }
                modulesArr.splice(indexOfMod, 1);
                modulesDiv.removeChild(divToDelete);
            }
        }

        function sortUl(ul) {
            let liArr = Array.from(ul.querySelectorAll('li'));
            let sortedLis = liArr.sort((a, b) => a.id.localeCompare(b.id));
            ul.innerHtml = "";
            sortedLis.forEach(l => {
                ul.appendChild(l);
            })
        }

    }
};