AhmetUstun

01. SoftUni Administration

Jun 25th, 2021 (edited)
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.  
  3.     const lectureName = document.querySelector('form input[name="lecture-name"]');
  4.     const lectureDate = document.querySelector('form input[name="lecture-date"]');
  5.     const lectureModule = document.querySelector('form select[name="lecture-module"]');
  6.     const lectureAddBtn = document.querySelector('form > div:nth-child(4) > button');
  7.  
  8.     const moduleListArea = document.querySelector('.user-view > .modules');
  9.  
  10.     let addedModules = {};
  11.  
  12.     lectureAddBtn.addEventListener('click', addElement);
  13.  
  14.     function addElement(e) {
  15.  
  16.         e.preventDefault();
  17.        
  18.         let condition1 = lectureName.value === '';
  19.         let condition2 = lectureDate.value === '';
  20.         let condition3 = lectureModule.value === 'Select module';
  21.  
  22.         if (condition1 || condition2 || condition3) {
  23.             return;
  24.         }
  25.  
  26.         let addModuleName = `${lectureModule.value.toUpperCase()}-MODULE`;
  27.  
  28.         if (! addedModules.hasOwnProperty(addModuleName))
  29.             addedModules[addModuleName] = [];
  30.  
  31.         let isDuplicated = false;
  32.  
  33.         for (let element of addedModules[addModuleName]) {
  34.        
  35.             let addCondition1 = element[0] === lectureName.value;
  36.             let addCondition2 = element[1] === lectureDate.value;
  37.            
  38.             if (addCondition1 && addCondition2) {
  39.                 isDuplicated = true;
  40.                 break;
  41.             }
  42.         }
  43.        
  44.         if (! isDuplicated) {
  45.            
  46.             let addValue1 = lectureName.value;
  47.             let addValue2 = lectureDate.value;
  48.            
  49.             addedModules[addModuleName]
  50.                 .push([addValue1, addValue2]);
  51.             }
  52.  
  53.         createHtml();
  54.     }
  55.  
  56.     function deleteElement(e) {
  57.  
  58.         const deleteLectureName = e.target
  59.             .parentNode
  60.             .querySelector('h4').textContent;
  61.  
  62.         const deleteModuleName = e.target
  63.             .parentNode.parentNode.parentNode
  64.             .querySelector('h3').textContent;
  65.            
  66.         let [aName, aDate, aTime] = deleteLectureName.split(' - ');
  67.  
  68.         let indexFlag;
  69.  
  70.         for (let lecture of addedModules[deleteModuleName]) {
  71.  
  72.             let [bDate, bTime] = lecture[1].split('T');
  73.             bDate = bDate.split('-').join('/');
  74.  
  75.             let delCondition1 = lecture[0] === aName;
  76.             let delCondition2 = bDate === aDate;
  77.             let delCondition3 = bTime === aTime;
  78.  
  79.             if (delCondition1 && delCondition2 && delCondition3) {
  80.                 indexFlag = addedModules[deleteModuleName].indexOf(lecture);
  81.                 break;
  82.             }
  83.         }
  84.  
  85.         addedModules[deleteModuleName].splice(indexFlag, 1);
  86.        
  87.         if (addedModules[deleteModuleName].length === 0) {
  88.             delete addedModules[deleteModuleName];
  89.         }
  90.  
  91.         createHtml();
  92.     }
  93.  
  94.     function createHtml() {
  95.        
  96.         moduleListArea.innerHTML = '';
  97.  
  98.         for (let module in addedModules) {
  99.  
  100.             addedModules[module].sort((a, b) => a[1].localeCompare(b[1]));
  101.            
  102.             const divElement = document.createElement('div');
  103.             divElement.classList.add('module');
  104.             const h3Element = document.createElement('h3');
  105.             h3Element.textContent = module;
  106.             const ulElement = document.createElement('ul');
  107.            
  108.             for (let training of addedModules[module]) {
  109.                
  110.                 let [date, time] = training[1].split('T');
  111.                 date = date.split('-').join('/');
  112.                
  113.                 const liElement = document.createElement('li');
  114.                 liElement.classList.add('flex');
  115.                 const h4Element = document.createElement('h4');
  116.                 h4Element.textContent = `${training[0]} - ${date} - ${time}`;
  117.                 const btnElement = document.createElement('button');
  118.                 btnElement.classList.add('red');
  119.                 btnElement.textContent = 'Delete';
  120.                 btnElement.addEventListener('click', deleteElement);
  121.  
  122.                 liElement.appendChild(h4Element);
  123.                 liElement.appendChild(btnElement);
  124.                 ulElement.appendChild(liElement);
  125.             }
  126.  
  127.             divElement.appendChild(h3Element);
  128.             divElement.appendChild(ulElement);
  129.             moduleListArea.appendChild(divElement);
  130.         }
  131.     }
  132. }
Add Comment
Please, Sign In to add comment