Advertisement
dilyana2001

Untitled

Oct 20th, 2021
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let modules = {};
  3.  
  4.     document.querySelector('.form-control button').addEventListener('click', (e) => {
  5.         e.preventDefault();
  6.  
  7.         let lectureNameInput = document.querySelector('input[name="lecture-name"]');
  8.         let lectureDateInput = document.querySelector('input[name="lecture-date"]');
  9.         let lectureModuleSelect = document.querySelector('select[name="lecture-module"]');
  10.  
  11.         if (!lectureNameInput.value || !lectureDateInput.value || lectureModuleSelect.value == 'Select module') {
  12.             return;
  13.         }
  14.  
  15.         if (!modules[lectureModuleSelect.value]) {
  16.             modules[lectureModuleSelect.value] = [];
  17.         }
  18.  
  19.         modules[lectureModuleSelect.value].push({
  20.             name: lectureNameInput.value,
  21.             date: formatDate(lectureDateInput.value)
  22.         })
  23.  
  24.         lectureNameInput.value = '';
  25.         lectureDateInput.value = '';
  26.         lectureModuleSelect.value = 'Select module';
  27.  
  28.         createTrainings(modules);
  29.     });
  30.  
  31.     function createTrainings(modules) {
  32.         let modulesDiv = document.querySelector('.modules');
  33.         modulesDiv.textContent = '';
  34.  
  35.         for (const module in modules) {
  36.  
  37.             let moduleElement = createModule(module);
  38.             let unorderList = document.createElement('ul');
  39.  
  40.             let lectures = modules[module];
  41.             lectures
  42.                 .sort((a, b) => a.date.localeCompare(b.date))
  43.                 .forEach(({ name, date }) =>
  44.                     unorderList.appendChild(createLecture(name, date, module)));
  45.  
  46.             moduleElement.appendChild(unorderList);
  47.             modulesDiv.appendChild(moduleElement);
  48.         }
  49.     }
  50.  
  51.     function createModule(name) {
  52.         let moduleDiv = document.createElement('div');
  53.         let captureHeader = document.createElement('h3');
  54.  
  55.         moduleDiv.setAttribute('class', 'module');
  56.         captureHeader.textContent = name.toUpperCase() + '-MODULE';
  57.  
  58.         moduleDiv.appendChild(captureHeader);
  59.  
  60.         return moduleDiv;
  61.     }
  62.  
  63.     function createLecture(name, date, module) {
  64.         let listFlex = document.createElement('li');
  65.         let captureDate = document.createElement('h4');
  66.         let deleteBtn = document.createElement('button');
  67.  
  68.         listFlex.setAttribute('class', 'flex');
  69.         deleteBtn.setAttribute('class', 'red');
  70.         deleteBtn.addEventListener('click', (e) => {
  71.             let unorderListElement = e.target.closest('.module');
  72.             modules[module] = modules[module]
  73.                 .filter(x => !(x.name == name && x.date == date));
  74.  
  75.             if (listFlex.parentElement.querySelectorAll('.flex').length < 2) {
  76.                 unorderListElement.remove();
  77.             }
  78.             listFlex.remove();
  79.  
  80.         });
  81.  
  82.         captureDate.textContent = `${name} - ${date}`;
  83.         deleteBtn.textContent = 'Del';
  84.  
  85.         listFlex.appendChild(captureDate);
  86.         listFlex.appendChild(deleteBtn);
  87.  
  88.         return listFlex;
  89.     }
  90.  
  91.     function formatDate(dateInput) {
  92.         let [date, time] = dateInput.split('T');
  93.         date = date.replace(/-/g, '/');
  94.  
  95.         return `${date} - ${time}`
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement