Advertisement
viligen

furniture

Jun 2nd, 2022
839
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     // sample input:
  3.     //[{"name": "Sofa",
  4.     // "img": "https://res.cloudinary.com/maisonsdumonde/image/upload/q_auto,f_auto/w_200/img/grey-3-seater-sofa-bed-200-13-0-175521_9.jpg",
  5.     // "price": 150,
  6.     // "decFactor": 1.2}]
  7.     let boughtFrn = [];
  8.     let totalPrice = 0;
  9.     let decArr = [0, 0]; //[sum, counter]
  10.  
  11.     let tBodyEl = document.querySelector(".table tbody");
  12.     let input = document.querySelector("#exercise textarea");
  13.  
  14.     let ouputArea = document.querySelectorAll("#exercise textarea")[1];
  15.  
  16.     let BtnGenerate = document.querySelector("#exercise button");
  17.     let buyBtn = document.querySelectorAll("#exercise button")[1];
  18.     buyBtn.addEventListener("click", onBuy);
  19.  
  20.     function onBuy(ev) {
  21.         let outpTxt = "";
  22.         outpTxt += `Bought furniture: ${boughtFrn.join(", ")}\n`;
  23.         outpTxt += `Total price: ${totalPrice.toFixed(2)}\n`;
  24.         outpTxt += `Average decoration factor: ${decArr[0] / decArr[1]}`;
  25.  
  26.         ouputArea.value = outpTxt;
  27.     }
  28.  
  29.     BtnGenerate.addEventListener("click", generate);
  30.  
  31.     function generate(event) {
  32.         let inputTxt = JSON.parse(input.value);
  33.  
  34.         for (let furnData of inputTxt) {
  35.             let name = furnData.name;
  36.             let price = furnData.price;
  37.             let img = furnData.img;
  38.             let dec = furnData.decFactor;
  39.  
  40.             furnFactory(name, img, price, dec);
  41.         }
  42.     }
  43.  
  44.     function furnFactory(nameFurn, imgSrc, priceFrn, decF) {
  45.         let newRow = document.createElement("tr");
  46.  
  47.         let newTd1 = document.createElement("td");
  48.         let newImgTag = document.createElement("img");
  49.         newImgTag.src = imgSrc;
  50.         newTd1.appendChild(newImgTag);
  51.         newRow.appendChild(newTd1);
  52.  
  53.         let newTd2 = document.createElement("td");
  54.         let newP2 = document.createElement("p");
  55.         newP2.textContent = nameFurn;
  56.         newTd2.appendChild(newP2);
  57.         newRow.appendChild(newTd2);
  58.  
  59.         let newTd3 = document.createElement("td");
  60.         let newP3 = document.createElement("p");
  61.         newP3.textContent = priceFrn;
  62.         newTd3.appendChild(newP3);
  63.         newRow.appendChild(newTd3);
  64.  
  65.         let newTd4 = document.createElement("td");
  66.         let newP4 = document.createElement("p");
  67.         newP4.textContent = decF;
  68.         newTd4.appendChild(newP4);
  69.         newRow.appendChild(newTd4);
  70.  
  71.         let newTd5 = document.createElement("td");
  72.         let newInp = document.createElement("input");
  73.         newInp.type = "checkbox";
  74.         newInp.addEventListener("change", onCheck);
  75.  
  76.         newTd5.appendChild(newInp);
  77.         newRow.appendChild(newTd5);
  78.         tBodyEl.appendChild(newRow);
  79.  
  80.         function onCheck(ev) {
  81.             if (ev.target.checked == true) {
  82.                 boughtFrn.push(nameFurn);
  83.                 totalPrice += Number(priceFrn);
  84.                 decArr[0] += Number(decF);
  85.                 decArr[1]++;
  86.                 console.log(boughtFrn, totalPrice, decArr);
  87.             } else {
  88.                 if (boughtFrn.includes(nameFurn)) {
  89.                     let idx = boughtFrn.indexOf(nameFurn);
  90.                     boughtFrn.splice(idx, 1);
  91.                     totalPrice -= Number(priceFrn);
  92.                     decArr[0] -= Number(decF);
  93.                     decArr[1]--;
  94.                     console.log(boughtFrn, totalPrice, decArr);
  95.                 }
  96.             }
  97.         }
  98.     }
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement