georgiev955

01.Ski Lift

Sep 29th, 2023
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     const firstNameElement = document.querySelector('#first-name');
  3.     const lastNameElement = document.querySelector('#last-name');
  4.     const peopleCountElement = document.querySelector('#people-count');
  5.     const fromDateElement = document.querySelector('#from-date');
  6.     const daysElement = document.querySelector('#days-count');
  7.  
  8.     const previewInfoUl = document.querySelector('ul.ticket-info-list');
  9.     const confirmInfoUl = document.querySelector('ul.confirm-ticket');
  10.  
  11.     const button = document.querySelector('#next-btn');
  12.  
  13.     button.addEventListener("click", previewTicket);
  14.  
  15.     function previewTicket(e) {
  16.         e.preventDefault();
  17.  
  18.         const firstName = firstNameElement.value;
  19.         const lastName = lastNameElement.value;
  20.         const peopleCount = peopleCountElement.value;
  21.         const fromDate = fromDateElement.value;
  22.         const days = daysElement.value;
  23.  
  24.         if (!firstName || !lastName || !peopleCount || !fromDate || !days) {
  25.             return;
  26.         }
  27.  
  28.         emptyInput(firstNameElement, lastNameElement, peopleCountElement, fromDateElement, daysElement);
  29.         createListItem(previewInfoUl, firstName, lastName, peopleCount, fromDate, days);
  30.     }
  31.  
  32.     function emptyInput(firstNameElement, lastNameElement, peopleCountElement, fromDateElement, daysElement) {
  33.         firstNameElement.value = '';
  34.         lastNameElement.value = '';
  35.         peopleCountElement.value = '';
  36.         fromDateElement.value = '';
  37.         daysElement.value = '';
  38.         button.disabled = true;
  39.     }
  40.    
  41.     function createListItem(previewInfoUl, firstName, lastName, peopleCount, fromDate, days) {
  42.         const listElement = document.createElement('li');
  43.         listElement.classList.add('ticket');
  44.         previewInfoUl.appendChild(listElement);
  45.  
  46.         listElement.innerHTML = `
  47.         <article>
  48.         <h3>Name: ${firstName} ${lastName}</h3>
  49.         <p>From date: ${fromDate}</p>
  50.         <p>For ${days} days</p>
  51.         <p>For ${peopleCount} people</p>
  52.         </article>`
  53.  
  54.         createButtons(listElement);
  55.     }
  56.  
  57.     function createButtons(listElement) {
  58.         const liRef = listElement;
  59.  
  60.         const editButton = document.createElement('button');
  61.         editButton.classList.add('edit-btn');
  62.         editButton.textContent = 'Edit';
  63.  
  64.         const continueButton = document.createElement('button');
  65.         continueButton.classList.add('continue-btn');
  66.         continueButton.textContent = 'Continue'
  67.  
  68.         liRef.appendChild(editButton);
  69.         liRef.appendChild(continueButton);
  70.  
  71.         editButton.addEventListener('click', editInfo);
  72.         continueButton.addEventListener('click', proceedInfo);
  73.     }
  74.  
  75.     function editInfo(e) {
  76.         const liRef = e.target.parentNode;
  77.         const data = Array.from(liRef.children[0].children).map(x => x = x.textContent);
  78.        
  79.         const firstName = data[0].split(' ')[1];
  80.         const lastName = data[0].split(' ')[2];
  81.         const date = data[1].split(' ')[2];
  82.         const daysCount = data[2].split(' ')[1];
  83.         const peopleCount = data[3].split(' ')[1];
  84.        
  85.         firstNameElement.value = firstName;
  86.         lastNameElement.value = lastName;
  87.         peopleCountElement.value = peopleCount;
  88.         fromDateElement.value = date;
  89.         daysElement.value = daysCount;
  90.  
  91.         liRef.remove();
  92.         button.disabled = false;
  93.     }
  94.  
  95.     function proceedInfo(e) {
  96.         const liRef = e.target.parentNode;
  97.         liRef.children[1].remove();
  98.         liRef.children[1].remove();
  99.         liRef.remove();
  100.  
  101.         const confirmButton = document.createElement('button');
  102.         confirmButton.classList.add('confirm-btn');
  103.         confirmButton.textContent = 'Confirm';
  104.  
  105.         const cancelButton = document.createElement('button');
  106.         cancelButton.classList.add('cancel-btn');
  107.         cancelButton.textContent = 'Cancel';
  108.  
  109.         liRef.appendChild(confirmButton);
  110.         liRef.appendChild(cancelButton);
  111.         confirmInfoUl.appendChild(liRef);
  112.  
  113.         confirmButton.addEventListener('click', finishBooking);
  114.         cancelButton.addEventListener('click', abortOperation);
  115.     }
  116.  
  117.     function abortOperation(e) {
  118.         const liRef = e.target.parentNode;
  119.         liRef.remove();
  120.         button.disabled = false;
  121.     }
  122.  
  123.     function finishBooking(e) {
  124.         document.querySelector('#main').remove();
  125.         const h1El = document.createElement('h1');
  126.         h1El.id = 'thank-you';
  127.         h1El.textContent = 'Thank you, have a nice day!'
  128.         const button = document.createElement('button');
  129.         button.id = 'back-btn';
  130.         button.textContent = 'Back';
  131.  
  132.         document.querySelector('#body').appendChild(h1El);
  133.         document.querySelector('#body').appendChild(button);
  134.  
  135.         button.addEventListener('click', reload);
  136.     }
  137.  
  138.     function reload(e) {
  139.         window.location.reload();
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment