Advertisement
Guest User

Untitled

a guest
Oct 10th, 2021
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let divElementCollection = document.querySelectorAll('.admin-view .action form div');
  3.     let addButtonElement = divElementCollection[3].children[0];
  4.     addButtonElement.addEventListener('click', addButtonHandler);
  5.     let datesObj = {};
  6.  
  7.     function addButtonHandler(e) {
  8.         e.preventDefault();
  9.         let divElementCollection = document.querySelectorAll('.admin-view .action form div');
  10.         let lectureNameElement = divElementCollection[0].children[1];
  11.         let dateElement = divElementCollection[1].children[1];
  12.         let moduleElement = divElementCollection[2].children[1];
  13.  
  14.         if (validateInputs(lectureNameElement.value, dateElement.value, moduleElement.value) === false) {
  15.             return;
  16.         }
  17.  
  18.         let modulesListElement = document.querySelector('.user-view .modules');
  19.  
  20.         if (checkIfModuleExists(Array.from(modulesListElement.children), moduleElement.value) === false) {
  21.             let currentModule = createModule(moduleElement.value);
  22.             modulesListElement.appendChild(currentModule);
  23.         }
  24.  
  25.         let targetedModule = getModule(Array.from(modulesListElement.children), moduleElement.value);
  26.  
  27.         let newLecture = createLecture(lectureNameElement.value, dateElement.value, datesObj);
  28.         let lectureDate = getDate(dateElement.value);
  29.  
  30.         datesObj[lectureDate] = newLecture;
  31.  
  32.         datesObj = sortDates(datesObj);
  33.  
  34.        
  35.  
  36.         setLectures(datesObj, targetedModule, modulesListElement);
  37.     }
  38.  
  39.  
  40.     function validateInputs(lecture, date, module) {
  41.         if (!(lecture.trim() == '' || date.trim() == '' || module == 'Select module')) {
  42.             return true;
  43.         }
  44.         return false;
  45.     }
  46.  
  47.     function createModule(module) {
  48.         let divElement = document.createElement('div');
  49.         divElement.setAttribute('class', 'module');
  50.  
  51.         let moduleh3Element = document.createElement('h3');
  52.         moduleh3Element.textContent = `${module.toUpperCase()}-MODULE`;
  53.  
  54.         divElement.appendChild(moduleh3Element);
  55.         let ulElement = document.createElement('ul');
  56.         divElement.appendChild(ulElement);
  57.  
  58.         return divElement;
  59.     }
  60.  
  61.     function checkIfModuleExists(modulesArray, moduleName) {
  62.         let isName = false;
  63.  
  64.         for (let el of modulesArray) {
  65.             let currentModuleName = el.children[0].textContent;
  66.             if (currentModuleName === `${moduleName.toUpperCase()}-MODULE`) {
  67.                 isName = true;
  68.                 break
  69.             }
  70.         }
  71.  
  72.         return isName;
  73.     }
  74.  
  75.     function getModule(modulesArray, moduleName) {
  76.         let moduleElement = undefined;
  77.         for (let el of modulesArray) {
  78.             let currentModuleName = el.children[0].textContent;
  79.             if (currentModuleName === `${moduleName.toUpperCase()}-MODULE`) {
  80.                 moduleElement = el;
  81.                 break;
  82.             }
  83.         }
  84.         return moduleElement;
  85.     }
  86.     function getDate(dateInfo) {
  87.         let date = dateInfo.split('T');
  88.         let editedDate = date[0].replaceAll('-', '/');
  89.         return editedDate;
  90.     }
  91.  
  92.  
  93.  
  94.     function createLecture(name, dateInfo) {
  95.         let editedDate = getDate(dateInfo);
  96.         let time = dateInfo.split('T')[1];
  97.         let liElement = document.createElement('li');
  98.         liElement.setAttribute('class', 'flex');
  99.         let h4Element = document.createElement('h4');
  100.         h4Element.textContent = `${name.toUpperCase()} - ${editedDate} - ${time}`;
  101.         let deleteButtonElement = document.createElement('button');
  102.         deleteButtonElement.setAttribute('class', 'red');
  103.         deleteButtonElement.textContent = 'Del';
  104.         deleteButtonElement.addEventListener('click', deleteButtonHandler)
  105.         liElement.appendChild(h4Element);
  106.         liElement.appendChild(deleteButtonElement);
  107.         return liElement;
  108.     }
  109.  
  110.     function deleteButtonHandler(e) {
  111.         let currentModule = e.currentTarget.parentElement.parentElement.parentElement;
  112.         let lecturesList = e.currentTarget.parentElement.parentElement;
  113.         let currentLecture = e.currentTarget.parentElement;
  114.  
  115.         currentLecture.remove();
  116.  
  117.         if (lecturesList.children.length === 0) {
  118.             currentModule.remove();
  119.         }
  120.  
  121.  
  122.     }
  123.  
  124.     function sortDates(datesObject) {
  125.         let datesArray = Object.keys(datesObject);
  126.         sortedDatesObject = datesArray
  127.         .sort((a,b) => a.localeCompare(b)).
  128.         reduce((obj, key) => {
  129.             obj[key] = datesObject[key];
  130.             return obj;
  131.         },
  132.         {})
  133.  
  134.         return sortedDatesObject;
  135.     }
  136.  
  137.     function setLectures(datesObject, module) {
  138.         let listWithLectures = module.children[1];
  139.         listWithLectures.innerHTML = '';
  140.         for (let key in datesObject) {
  141.             listWithLectures.appendChild(datesObject[key]);
  142.         }
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement