Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. function initialize(){
  2. //mengambil item dari localStorage
  3. let products = localStorage.getItem("products");
  4. let discountFlag = false;
  5. //jika item tidak tersedia
  6. if(products === null) {
  7. //fetch data menggunakan fungsi fetchData()
  8. fetchData()
  9. //mengambil ulang item
  10. products = localStorage.getItem("products");
  11. }
  12. //mengubah item menjadi JavaScript Object
  13. products = JSON.parse(products)
  14.  
  15. //menampilkan produk dalam bentuk card menggunakan fungsi renderAllProduct
  16. renderAllProduct(products)
  17.  
  18. let displayProducts = products
  19. let txtSearch = document.getElementById('txtSearch')
  20.  
  21. txtSearch.addEventListener('keyup',function() {
  22. let searchWord = this.value.toLowerCase()
  23. displayProducts = products.filter (product =>
  24. product.name.toLowerCase().includes(searchWord))
  25. renderAllProduct(displayProducts,discountFlag)
  26. })
  27.  
  28. let cboDiscount = document.getElementById('cboDiscount')
  29. cboDiscount.addEventListener('change',function() {
  30. if (this.checked) {
  31. discountFlag = true;
  32. }else{
  33. discountFlag = false
  34. }
  35. renderAllProduct(displayProducts,discountFlag)
  36. })
  37. }
  38.  
  39. function fetchData() {
  40. let req = new XMLHttpRequest()
  41.  
  42. req.onreadystatechange = function() {
  43. if(req.readyState != 4 || req.status != 200)
  44. return;
  45. let data = JSON.parse(req.responseText)
  46. //menyimpan data dengan access key 'products' di localStorage
  47. localStorage.setItem("products", req.responseText)
  48. }
  49.  
  50. req.onerror = function() {
  51. alert(req.responseText)
  52. }
  53. req.open('GET','productdata.json',true)
  54. req.send()
  55. }
  56.  
  57. function renderAllProduct(products,discountFlag) {
  58. products = JSON.parse(JSON.stringify(products))
  59. if(discountFlag)
  60. products.map(product => {
  61. product.price *= 0.75
  62. return product
  63. })
  64. document.getElementById('card-container').innetHTML = '';
  65. products.forEach(product => renderProduct(product))
  66. }
  67.  
  68. function renderProduct(product) {
  69. const cardContainer = document.getElementById('card-container');
  70. let card = document.createElement('div')
  71. const cardClass = document.createAttribute('class')
  72. cardClass.value = 'card'
  73. card.setAttributeNode(cardClass)
  74.  
  75. let img = document.createElement('img')
  76. img.src = '/images/'+product.image
  77.  
  78. card.appendChild(img)
  79.  
  80. let container = document.createElement('div')
  81. const containerClass = document.createAttribute('class')
  82. containerClass.value = 'container'
  83. container.setAttributeNode(containerClass)
  84.  
  85. let itemName = document.createElement('h4')
  86. itemName.appendChild(document.createTextNode(product.name))
  87. container.appendChild(itemName)
  88.  
  89. let itemPrice = document.createElement('p')
  90. itemPrice.appendChild(document.createTextNode(product.price))
  91. container.appendChild(itemPrice)
  92.  
  93. let itemSeller = document.createElement('p')
  94. let seller = product.seller.name+"("+product.seller.location+")"
  95. itemSeller.appendChild(document.createTextNode(seller))
  96.  
  97. container.appendChild(itemSeller)
  98.  
  99. card.appendChild(container)
  100.  
  101. cardContainer.appendChild(card)
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement