Onesible

02-Event-Tracker-Resources

Apr 9th, 2025 (edited)
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let saveBtn = document.getElementById('save');
  3.     saveBtn.addEventListener('click', onSave);
  4.     document.querySelector('.delete').addEventListener('click', () => {
  5.         eventList.replaceChildren();
  6.     });
  7.  
  8.     let upcomingEvents = document.getElementById('upcoming-list');
  9.     let eventList = document.getElementById('events-list');
  10.  
  11.     let name = document.getElementById('event');
  12.     let note = document.getElementById('note');
  13.     let date = document.getElementById('date');
  14.  
  15.     function onSave(e) {
  16.         e.preventDefault();
  17.  
  18.         let currName = name.value;
  19.         let currNote = note.value;
  20.         let currDate = date.value;
  21.        
  22.         if (!currName || !currNote || !currDate) {
  23.             return;
  24.         }
  25.  
  26.         let editBtn = create('button', ['Edit'], 'btn edit');
  27.         let doneBtn = create('button', ['Done'], 'btn done');
  28.  
  29.         editBtn.addEventListener('click', (e) => onEdit(e, currName, currNote, currDate));
  30.         doneBtn.addEventListener('click', onDone);
  31.  
  32.         let li = create('li', [
  33.             create('div', [
  34.                 create('article', [
  35.                     create('p', [`Name: ${currName}`]),
  36.                     create('p', [`Note: ${currNote}`]),
  37.                     create('p', [`Date: ${currDate}`])
  38.                 ]),
  39.                 create('div', [
  40.                     editBtn,
  41.                     doneBtn
  42.                 ], 'buttons')
  43.             ], 'event-container')
  44.         ], 'event-item');
  45.  
  46.         upcomingEvents.appendChild(li);
  47.  
  48.         e.target.parentElement.reset();
  49.     }
  50.  
  51.     function onEdit(e, eventName, eventNote, eventDate) {
  52.         name.value = eventName;
  53.         note.value = eventNote;
  54.         date.value = eventDate;
  55.  
  56.         e.target.closest('li').remove();
  57.     }
  58.  
  59.     function onDone(e) {
  60.         let li = e.target.closest('li')
  61.  
  62.         li.querySelector('.buttons').remove();
  63.         eventList.appendChild(li);
  64.     }
  65.  
  66.     function create(tag, children, className) {
  67.         let el = document.createElement(tag);
  68.         if (className) {
  69.             el.className = className;
  70.         }
  71.         children.forEach(child => {
  72.             if (typeof child === 'object') {
  73.                 el.appendChild(child);
  74.             } else {
  75.                 el.appendChild(document.createTextNode(child));
  76.             }
  77.         });
  78.  
  79.         return el;
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment