Advertisement
AlexandrP

ViewController

Feb 20th, 2023
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. class ViewController {
  3.     constructor() {
  4.       window.addEventListener("hashchange", this.handleHashChange);
  5.       window.addEventListener("load", this.handleHashChange);
  6.       this.receiptManager = new ReceiptManager();
  7.       this.cartManager = new CartManager();
  8.     }
  9.  
  10.     handleHashChange = () => {
  11.    
  12.       let hash = window.location.hash.slice(1) || "all";
  13.      
  14.       const pageIds = ["all", "fav", "create", "profile", "error"];
  15.  
  16.       pageIds.forEach((id) => {
  17.         let page = document.getElementById(id);
  18.  
  19.         if (hash === id) {
  20.           page.style.display = "block";
  21.         } else {
  22.           page.style.display = "none";
  23.         }
  24.       });
  25.  
  26.       switch (hash) {
  27.  
  28.         case "all":
  29.             this.renderAllPage();
  30.         case "cart":
  31.             this.renderCartPage();
  32.         case "order":
  33.             this.renderOrderPage();
  34.     }
  35.  
  36.     }
  37.   }
  38.  
  39.   renderReceipts = (receiptList, container) => {
  40.     container.innerHTML = "";
  41.  
  42.     receiptList.forEach(receipt => {
  43.  
  44.         let card = createElement('div');
  45.         card.classList.add('card');
  46.  
  47.  
  48.         let img = createElement('img');
  49.         img.src = receipt.thumbnail;
  50.         img.width = 200;
  51.  
  52.         let title = createElement('div');
  53.         title.innerText = receipt.title;
  54.         title.classList.add('title');
  55.  
  56.  
  57.         let ingredients = createElement('div');
  58.         ingredients.innerText = receipt.ingredients;
  59.         ingredients.classList.add('ingredients');
  60.  
  61.         let inputCount = createElement('input');
  62.         inputCount.type = "number";
  63.         inputCount.value = 1;
  64.  
  65.         let addToCartBtn = createElement('button');
  66.         addToCartBtn.addEventListener('click', () => {
  67.             this.cartManager.addToCart(receipt, Number(inputCount.value));
  68.         })
  69.         addToCartBtn.innerText = "Add to cart";
  70.  
  71.         card.append(
  72.             img,
  73.             title,
  74.             weight,
  75.             ingredients,
  76.             inputCount,
  77.             addToCartBtn
  78.         );
  79.        
  80.         container.appendChild(card);
  81.     });
  82. }
  83.  
  84. renderAllPage = () => {
  85.     let searchInput = document.getElementById('searchInput');
  86.  
  87.     searchInput.addEventListener('input',(event)=> {
  88.  
  89.         let result = this.receiptManager.search(event.target.value);
  90.  
  91.         console.log(result);
  92.         this.renderReceipts(result,renderContainer);
  93.  
  94.     } )
  95.  
  96.     let receiptContainer = document.querySelector('#all .container');
  97.  
  98.     this.renderReceipts(this.receiptManager.receiptList,receiptContainer);
  99. }
  100.  
  101.  
  102.  
  103.   let viewController = new ViewController();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement