Advertisement
Kamend1

02.Event tracker

Apr 9th, 2025
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(){
  2.     let eventField = document.getElementById('event');
  3.     let noteField = document.getElementById('note');
  4.     let dateField = document.getElementById('date');
  5.  
  6.     let upcomingList = document.getElementById('upcoming-list');
  7.     let endedList = document.getElementById('events-list');
  8.  
  9.     let saveBtn = document.getElementById('save');
  10.     saveBtn.addEventListener('click', function (e) {
  11.         e.preventDefault();
  12.         saveEvent();
  13.     })
  14.  
  15.     let deleteBtn = document.querySelector('.btn.delete');
  16.     deleteBtn.addEventListener('click', deleteEvents);
  17.  
  18.     function saveEvent() {
  19.         let event = eventField.value;
  20.         let note = noteField.value;
  21.         let date = dateField.value;
  22.  
  23.         if (!event || !note || !date) {
  24.             return;
  25.         }
  26.        
  27.         let eventP = createElement('p', `Name: ${event}`);
  28.         let noteP = createElement('p', `Note: ${note}`);
  29.         let dateP = createElement('p', `Date: ${date}`);
  30.    
  31.         let article = createElement('article', null, {}, eventP, noteP, dateP);
  32.    
  33.         let editBtn = createElement('button', 'Edit', { class: 'btn edit' });
  34.         editBtn.addEventListener('click', editElement);
  35.  
  36.         let doneBtn = createElement('button', 'Done', { class: 'btn done' });
  37.         doneBtn.addEventListener('click', doneElement);
  38.  
  39.         let buttonsDiv = createElement('div', null, { class: 'buttons' }, editBtn, doneBtn);
  40.    
  41.         let container = createElement('div', null, { class: 'event-container' }, article, buttonsDiv);
  42.    
  43.         let li = createElement('li', null, { class: 'event-item' }, container);
  44.  
  45.         upcomingList.appendChild(li);
  46.  
  47.         eventField.value = '';
  48.         noteField.value = '';
  49.         dateField.value = '';
  50.  
  51.     }
  52.  
  53.     function editElement(event) {
  54.         let currentEvent = event.target.parentElement.parentElement;
  55.         let eventName = currentEvent.querySelector('.event-container p:first-of-type').textContent.replace('Name: ', '');;
  56.         let note = currentEvent.querySelector('.event-container p:nth-child(2)').textContent.replace('Note: ', '');
  57.         let date = currentEvent.querySelector('.event-container p:last-of-type').textContent.replace('Date: ', '');
  58.  
  59.         eventField.value = eventName;
  60.         noteField.value = note;
  61.         dateField.value = date;
  62.  
  63.         currentEvent.remove();
  64.     }
  65.  
  66.     function doneElement (event) {
  67.         let currentEvent = event.target.parentElement.parentElement;
  68.         let newLiChild = currentEvent.querySelector('.event-container article');
  69.  
  70.         let newLi = createElement('li', null, { class: 'event-item' }, newLiChild);
  71.         endedList.appendChild(newLi);
  72.         currentEvent.parentElement.remove();
  73.     }
  74.  
  75.     function deleteEvents () {
  76.         endedList.innerHTML = '';
  77.     }
  78.  
  79.     function createElement(type, content, attributes = {}, ...children) {
  80.         let element = document.createElement(type);
  81.    
  82.         if (content) {
  83.             element.textContent = content;
  84.         }
  85.    
  86.         for (let attr in attributes) {
  87.             if (attr === 'class') {
  88.                 element.classList.add(...attributes[attr].split(' '));
  89.             } else {
  90.                 element.setAttribute(attr, attributes[attr]);
  91.             }
  92.         }
  93.    
  94.         for (let child of children) {
  95.             if (typeof child === 'string') {
  96.                 child = document.createTextNode(child);
  97.             }
  98.             element.appendChild(child);
  99.         }
  100.    
  101.         return element;
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement