Advertisement
Todorov_Stanimir

01. Ski Inventory JS Advanced - 26 October 2019

Nov 3rd, 2019
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.    let [nameEl, quantEl, priceEl] = Array.from(document.querySelectorAll('#add-new [type=text]'));
  3.    let [filterBut, addBut, buyBut] = Array.from(document.querySelectorAll('button'));
  4.    let sectProductsEl = Array.from(document.querySelectorAll("#products ul"))[0];
  5.    let myProductsEl = Array.from(document.querySelectorAll("#myProducts ul"))[0];
  6.    let totalPriceElem = document.getElementsByTagName('h1')[1];
  7.    let totalPrice = 0;
  8.    let filtEl = document.getElementById('filter');
  9.  
  10.    addBut.addEventListener('click', function (even) {
  11.       even.preventDefault()
  12.  
  13.       let name = nameEl.value;
  14.       let quantity = Number(quantEl.value);
  15.       let price = Number(priceEl.value);
  16.  
  17.       if (name !== '' && quantity > 0 && price > 0) {
  18.          let liEl = document.createElement('li');
  19.          let spanEl = document.createElement('span');
  20.          let strongEl = document.createElement('strong');
  21.          let divEl = document.createElement('div');
  22.          let strong2El = document.createElement('strong');
  23.          let butEl = document.createElement('button');
  24.          butEl.addEventListener('click', function (even) {
  25.             even.preventDefault();
  26.             totalPrice += Number(even.target.previousElementSibling.textContent);
  27.             totalPriceElem.textContent = `Total Price: ${totalPrice.toFixed(2)}`;
  28.             if (quantity >= 1) {
  29.                even.target.parentElement.parentElement.getElementsByTagName('strong')[0].textContent = `Available: ${--quantity}`;
  30.                let liElem = document.createElement('li');
  31.                let strongElem = document.createElement('strong');
  32.                liElem.textContent = name;
  33.                strongElem.textContent = price.toFixed(2);
  34.                liElem.appendChild(strongElem);
  35.                myProductsEl.appendChild(liElem);
  36.  
  37.             }
  38.            
  39.             if (quantity===0) {
  40.                let thisEl = even.target.parentElement.parentElement;
  41.                sectProductsEl.removeChild(thisEl);
  42.             }
  43.          })
  44.          spanEl.textContent = name;
  45.          strongEl.textContent = `Available: ${quantity}`;
  46.          strong2El.textContent = price.toFixed(2);
  47.          butEl.textContent = `Add to Client's List`;
  48.  
  49.         divEl.appendChild(strong2El);
  50.         divEl.appendChild(butEl);
  51.         liEl.appendChild(spanEl);
  52.         liEl.appendChild(strongEl);
  53.         liEl.appendChild(divEl);
  54.  
  55.         sectProductsEl.appendChild(liEl)
  56.      }
  57.  
  58.      filterBut.addEventListener('click', function (even) {
  59.         even.preventDefault();
  60.         let filter = filtEl.value;
  61.         Array.from(sectProductsEl.querySelectorAll('li')).forEach(el => {
  62.            if (!el.firstChild.textContent.toLowerCase().includes(filter.toLowerCase()) && filter !== '') {
  63.               el.style.display = 'none';
  64.            } else {
  65.               el.style.display = 'block';
  66.            }
  67.            if (filter === '') {
  68.               el.style.display = 'block';
  69.            }
  70.         });
  71.      });
  72.   });
  73.  
  74.   buyBut.addEventListener('click', function (even) {
  75.      even.preventDefault();
  76.      while (myProductsEl.hasChildNodes()) {
  77.         myProductsEl.removeChild(myProductsEl.firstChild);
  78.      }
  79.      totalPriceElem.textContent = `Total Price: 0.00`;
  80.      totalPrice = 0;
  81.  
  82.   });
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement