Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve() {
- const lectureName = document.querySelector('form input[name="lecture-name"]');
- const lectureDate = document.querySelector('form input[name="lecture-date"]');
- const lectureModule = document.querySelector('form select[name="lecture-module"]');
- const lectureAddBtn = document.querySelector('form > div:nth-child(4) > button');
- const moduleListArea = document.querySelector('.user-view > .modules');
- let addedModules = {};
- lectureAddBtn.addEventListener('click', addElement);
- function addElement(e) {
- e.preventDefault();
- let condition1 = lectureName.value === '';
- let condition2 = lectureDate.value === '';
- let condition3 = lectureModule.value === 'Select module';
- if (condition1 || condition2 || condition3) {
- return;
- }
- let addModuleName = `${lectureModule.value.toUpperCase()}-MODULE`;
- if (! addedModules.hasOwnProperty(addModuleName))
- addedModules[addModuleName] = [];
- let isDuplicated = false;
- for (let element of addedModules[addModuleName]) {
- let addCondition1 = element[0] === lectureName.value;
- let addCondition2 = element[1] === lectureDate.value;
- if (addCondition1 && addCondition2) {
- isDuplicated = true;
- break;
- }
- }
- if (! isDuplicated) {
- let addValue1 = lectureName.value;
- let addValue2 = lectureDate.value;
- addedModules[addModuleName]
- .push([addValue1, addValue2]);
- }
- createHtml();
- }
- function deleteElement(e) {
- const deleteLectureName = e.target
- .parentNode
- .querySelector('h4').textContent;
- const deleteModuleName = e.target
- .parentNode.parentNode.parentNode
- .querySelector('h3').textContent;
- let [aName, aDate, aTime] = deleteLectureName.split(' - ');
- let indexFlag;
- for (let lecture of addedModules[deleteModuleName]) {
- let [bDate, bTime] = lecture[1].split('T');
- bDate = bDate.split('-').join('/');
- let delCondition1 = lecture[0] === aName;
- let delCondition2 = bDate === aDate;
- let delCondition3 = bTime === aTime;
- if (delCondition1 && delCondition2 && delCondition3) {
- indexFlag = addedModules[deleteModuleName].indexOf(lecture);
- break;
- }
- }
- addedModules[deleteModuleName].splice(indexFlag, 1);
- if (addedModules[deleteModuleName].length === 0) {
- delete addedModules[deleteModuleName];
- }
- createHtml();
- }
- function createHtml() {
- moduleListArea.innerHTML = '';
- for (let module in addedModules) {
- addedModules[module].sort((a, b) => a[1].localeCompare(b[1]));
- const divElement = document.createElement('div');
- divElement.classList.add('module');
- const h3Element = document.createElement('h3');
- h3Element.textContent = module;
- const ulElement = document.createElement('ul');
- for (let training of addedModules[module]) {
- let [date, time] = training[1].split('T');
- date = date.split('-').join('/');
- const liElement = document.createElement('li');
- liElement.classList.add('flex');
- const h4Element = document.createElement('h4');
- h4Element.textContent = `${training[0]} - ${date} - ${time}`;
- const btnElement = document.createElement('button');
- btnElement.classList.add('red');
- btnElement.textContent = 'Delete';
- btnElement.addEventListener('click', deleteElement);
- liElement.appendChild(h4Element);
- liElement.appendChild(btnElement);
- ulElement.appendChild(liElement);
- }
- divElement.appendChild(h3Element);
- divElement.appendChild(ulElement);
- moduleListArea.appendChild(divElement);
- }
- }
- }
Add Comment
Please, Sign In to add comment