let PARAMS = getQueryParams(), PAGE_NUMBER = 1 $(document).ready(function(){ getProducts() renderSearchBadge() $('#product-category-filter').change(function(){ if($(this).val() && $(this).val() != ""){ if("search" in PARAMS) window.location.href = `products?search=${PARAMS.search}&category=${$(this).val()}` else window.location.href = `products?category=${$(this).val()}` }else{ if("search" in PARAMS) window.location.href = `products?search=${PARAMS.search}` else window.location.href = `products` } }) $("body").delegate("#search-remove-button", "click", function(){ if("category" in PARAMS) window.location.href = `products?category=${PARAMS.category}` else window.location.href = `products` }) $("body").delegate(".product-pagination-item", "click", function(e){ e.preventDefault() e.stopImmediatePropagation() let page = $(this).data('page') PAGE_NUMBER = page console.log('page:',PAGE_NUMBER) getProducts() window.scrollTo(0, 0); }); $("body").delegate(".product-pagination-previous", "click", function(e){ e.preventDefault() e.stopImmediatePropagation() PAGE_NUMBER -= 1 console.log('page:',PAGE_NUMBER) getProducts() window.scrollTo(0, 0); }) $("body").delegate(".product-pagination-next", "click", function(e){ e.preventDefault() e.stopImmediatePropagation() PAGE_NUMBER += 1 console.log('page:',PAGE_NUMBER) getProducts() window.scrollTo(0, 0); }) }) function getProducts(){ let queryParams = `?page_number=${PAGE_NUMBER-1}&page_size=12&draw=1` if("search" in PARAMS) queryParams += `&search=${PARAMS.search}` if("category" in PARAMS) queryParams += `&category_id=${PARAMS.category}` if("new_arrival" in PARAMS) queryParams += `&is_new_arrival=${PARAMS.new_arrival}` $.ajax({ async: true, url: `${PRODUCT_API_URL}${queryParams}`, type: 'GET', error: function(res) { const response = JSON.parse(res.responseText) }, success: function(res) { if(res.data.length > 0){ $('#products').css("display", "flex") $('#products-notfound').css("display", "none") let totalPage = Math.ceil(res.recordsTotal/12) renderProducts(res.data) renderProductPagination(totalPage) }else{ $('#products').css("display", "none") $('#products-notfound').css("display", "block") } } }); } function renderProducts(data){ let productsHtml = ``, col = 'col-12' if(data.length >= 4){ col = 'col-lg-3 col-md-4 col-sm-6 col-6' } else if(data.length == 3){ col = 'col-lg-4 col-md-4 col-sm-6 col-6' } else if(data.length == 2){ col = 'col-6' } else { col = 'col-12' } for(let product of data){ let imgUrl = product.full_thumbnail_url ? product.full_thumbnail_url : `${WEB_URL}assets/img/default.png` let price = CURRENCY == 'usd' ? formatDollar(product.price) : formatRupiah(product.price, true) let productHtml = `

${product.title}

${price}
` productsHtml += productHtml } $('#products').html(productsHtml) $('.product-lazyload').lazyload() } function renderSearchBadge(){ if("search" in PARAMS){ let searchBagdeHtml = ` Search: ${PARAMS.search} ` $('#search-badge').html(searchBagdeHtml) } } function renderProductPagination(totalPage){ if(totalPage > 1){ let fullPagesHtml = `` let previousDisable = PAGE_NUMBER == 1 ? 'disabled' : '' let nextDisable = PAGE_NUMBER == totalPage ? 'disabled' : '' let isPageLimit = totalPage > 5 ? true : false; let previousHtml = `
  • ` let nextHtml = `
  • ` let pagesHtml = `` for(let i=1; i<=totalPage; i++){ const pageActive = i == PAGE_NUMBER ? 'active' : '' const pageDisabled = i == PAGE_NUMBER ? '' : 'href="#"' let pageHtml = `` if(isPageLimit){ if(i == PAGE_NUMBER){ pageHtml = `
  • ${i}
  • ` }else if(i == PAGE_NUMBER-1 || i == PAGE_NUMBER+1){ pageHtml = `
  • ${i}
  • ` }else if(i == PAGE_NUMBER-2 || i == PAGE_NUMBER+2){ pageHtml = `
  • ...
  • ` } }else{ pageHtml = `
  • ${i}
  • ` } pagesHtml += pageHtml } fullPagesHtml = `${previousHtml}${pagesHtml}${nextHtml}` $('#product-pagination').html(fullPagesHtml) } }