/* Template Name: Toner eCommerce + Admin HTML Template Author: Themesbrand Version: 1.2.0 Website: https://Themesbrand.com/ Contact: Themesbrand@gmail.com File: Product-grid init File */ var productListData = [{ 'id': 1, "productImg": "../build/images/products/img-10.png", "productTitle": "World's most expensive t shirt", "category": "Fashion", "price": "354.99", "discount": "25%", "rating": "4.9", "color": ["secondary", "light", "dark"], "size": ["s", "m", "l"], "stock": "12", "orders": "48", "publish": "12 Oct, 2021", }, { 'id': 2, "productImg": "../build/images/products/img-15.png", "productTitle": "Like Style Women Black Handbag", "category": "Fashion", "price": "742.00", "discount": "0%", "rating": "4.2", "color": ["light", "dark"], "stock": "06", "orders": "30", "publish": "06 Jan, 2021", }, { 'id': 3, "productImg": "../build/images/products/img-1.png", "productTitle": "Black Horn Backpack For Men Bags 30 L Backpack", "category": "Grocery", "price": "150.99", "discount": "25%", "rating": "3.8", "color": ["primary", "danger", "secondary"], "size": ["s", "m", "l"], "stock": "10", "orders": "48", "publish": "26 Mar, 2021", }, { 'id': 4, "productImg": "../build/images/products/img-7.png", "productTitle": "Innovative education book", "category": "Kids", "price": "96.26", "discount": "0%", "rating": "4.7", "stock": "15", "orders": "40", "publish": "19 Apr, 2021", }, { 'id': 5, "productImg": "../build/images/products/img-4.png", "productTitle": "Sangria Girls Mint Green & Off-White Solid Open Toe Flats", "category": "Kids", "price": "96.26", "discount": "75%", "rating": "4.7", "color": ["success", "danger", "secondary"], "size": ["40", "41", "42"], "stock": "08", "orders": "55", "publish": "30 Mar, 2021", }, { 'id': 6, "productImg": "../build/images/products/img-5.png", "productTitle": "Lace-Up Casual Shoes For Men", "category": "Fashion", "price": "229.00", "discount": "0%", "rating": "4.0", "color": ["danger"], "size": ["40", "41", "42"], "stock": "15", "orders": "48", "publish": "12 Oct, 2021", }, { 'id': 7, "productImg": "../build/images/products/img-6.png", "productTitle": "Striped High Neck Casual Men Orange Sweater", "category": "Fashion", "price": "120.00", "discount": "48%", "rating": "4.8", "size": ["s", "m", "l", "xl"], "stock": "12", "orders": "45", "publish": "15 May, 2021", }, { 'id': 8, "productImg": "../build/images/products/img-9.png", "productTitle": "Lace-Up Casual Shoes For Men", "category": "Kids", "price": "229.00", "discount": "15%", "rating": "2.4", "color": ["light", "warning"], "size": ["s", "l"], "stock": "20", "orders": "48", "publish": "21 Jun, 2021", }, { 'id': 9, "productImg": "../build/images/products/img-10.png", "productTitle": "Printed, Typography Men Round Neck Black T-shirt", "category": "Fashion", "price": "81.99", "discount": "0%", "rating": "4.9", "color": ["dark", "light"], "size": ["s", "m", "l", "xl"], "stock": "14", "orders": "55", "publish": "15 Jan, 2021", }, { 'id': 10, "productImg": "../build/images/products/img-12.png", "productTitle": "Carven Lounge Chair Red", "category": "Furniture", "price": "209.99", "discount": "0%", "rating": "4.1", "color": ["secondary", "dark", "danger", "light"], "stock": "20", "orders": "60", "publish": "15 Jun, 2021", }, { 'id': 11, "productImg": "../build/images/products/img-3.png", "productTitle": "Ninja Pro Max Smartwatch", "category": "Watches", "price": "309.09", "discount": "20%", "rating": "3.5", "color": ["secondary", "info"], "stock": "12", "orders": "48", "publish": "12 Oct, 2021", }, { 'id': 12, "productImg": "../build/images/products/img-2.png", "productTitle": "Opinion Striped Round Neck Green T-shirt", "category": "Fashion", "price": "126.99", "discount": "0%", "rating": "4.1", "color": ["success"], "size": ["s", "m", "l", "xl"], "stock": "06", "orders": "30", "publish": "06 Jan, 2021", }]; var prevButton = document.getElementById('page-prev'); var nextButton = document.getElementById('page-next'); var currentPage = 1; var itemsPerPage = 6; loadProductList(productListData, currentPage); paginationEvents(); function loadProductList(datas, page) { var pages = Math.ceil(datas.length / itemsPerPage) if (page < 1) page = 1 if (page > pages) page = pages; document.getElementById("product-grid").innerHTML = ""; for (var i = (page - 1) * itemsPerPage; i < (page * itemsPerPage) && i < datas.length; i++) { if (datas[i]) { // Array.from(datas).forEach(function (listdata) { var num = 1; if (datas[i].color) { var colorElem = ''; } else { var colorElem = ''; } if (datas[i].size) { var sizeElem = ''; } else { var sizeElem = ''; } var text = datas[i].discount; var myArray = text.split("%"); var discount = myArray[0]; var afterDiscount = datas[i].price - (datas[i].price * discount / 100); if (discount > 0) { var discountElem = '
\
'+ datas[i].discount + '
\
'; var afterDiscountElem = '
$' + afterDiscount.toFixed(2) + ' $' + datas[i].price + '
' } else { var discountElem = ""; var afterDiscountElem = '
$' + datas[i].price + '
' } document.getElementById("product-grid").innerHTML += '
\
\
\
\ \ \ '+ discountElem + '\
\
\
\ '+ afterDiscountElem + '\ '+ datas[i].rating + ' \
\ \
'+ datas[i].productTitle + '
\
\

'+ datas[i].category + '

\
\
'+ colorElem + '
\
'+ sizeElem + '
\
\
\
\
\
'+ datas[i].stock + '
\

Stocks

\
\
\
\
\
'+ datas[i].orders + '
\

Orders

\
\
\
\
\
'+ datas[i].publish + '
\

Publish

\
\
\
\
\
\
'; } }; selectedPage(); currentPage == 1 ? prevButton.parentNode.classList.add('disabled') : prevButton.parentNode.classList.remove('disabled'); currentPage == pages ? nextButton.parentNode.classList.add('disabled') : nextButton.parentNode.classList.remove('disabled'); } function selectedPage() { var pagenumLink = document.getElementById('page-num').getElementsByClassName('clickPageNumber'); for (var i = 0; i < pagenumLink.length; i++) { if (i == currentPage - 1) { pagenumLink[i].parentNode.classList.add("active"); } else { pagenumLink[i].parentNode.classList.remove("active"); } } }; // paginationEvents function paginationEvents() { var numPages = function numPages() { return Math.ceil(productListData.length / itemsPerPage); }; function clickPage() { document.addEventListener('click', function (e) { if (e.target.nodeName == "A" && e.target.classList.contains("clickPageNumber")) { currentPage = e.target.textContent; loadProductList(productListData, currentPage); } }); }; function pageNumbers() { var pageNumber = document.getElementById('page-num'); pageNumber.innerHTML = ""; // for each page for (var i = 1; i < numPages() + 1; i++) { pageNumber.innerHTML += "
" + i + "
"; } } prevButton.addEventListener('click', function () { if (currentPage > 1) { currentPage--; loadProductList(productListData, currentPage); } }); nextButton.addEventListener('click', function () { if (currentPage < numPages()) { currentPage++; loadProductList(productListData, currentPage); } }); pageNumbers(); clickPage(); selectedPage(); } // Search product list var searchProductList = document.getElementById("searchProductList"); searchProductList.addEventListener("keyup", function () { var inputVal = searchProductList.value.toLowerCase(); function filterItems(arr, query) { return arr.filter(function (el) { return el.productTitle.toLowerCase().indexOf(query.toLowerCase()) !== -1 }) } var filterData = filterItems(productListData, inputVal); searchResult(filterData); loadProductList(filterData, currentPage); }); // category list filter Array.from(document.querySelectorAll('.filter-list a')).forEach(function (filteritem) { filteritem.addEventListener("click", function () { var filterListItem = document.querySelector(".filter-list a.active"); if (filterListItem) filterListItem.classList.remove("active"); filteritem.classList.add('active'); var filterItemValue = filteritem.querySelector(".listname").innerHTML var filterData = productListData.filter(filterlist => filterlist.category === filterItemValue); searchResult(filterData); loadProductList(filterData, currentPage); }); }); // price range slider var slider = document.getElementById('product-price-range'); if (slider) { noUiSlider.create(slider, { start: [0, 2000], // Handle start position step: 10, // Slider moves in increments of '10' margin: 20, // Handles must be more than '20' apart connect: true, // Display a colored bar between the handles behaviour: 'tap-drag', // Move handle on tap, bar is draggable range: { // Slider can select '0' to '100' 'min': 0, 'max': 2000 }, format: wNumb({ decimals: 0, prefix: '$ ' }) }); var minCostInput = document.getElementById('minCost'), maxCostInput = document.getElementById('maxCost'); var filterDataAll = ''; // When the slider value changes, update the input and span slider.noUiSlider.on('update', function (values, handle) { var productListupdatedAll = productListData; if (handle) { maxCostInput.value = values[handle]; } else { minCostInput.value = values[handle]; } var maxvalue = maxCostInput.value.substr(2); var minvalue = minCostInput.value.substr(2); filterDataAll = productListupdatedAll.filter( product => parseFloat(product.price) >= minvalue && parseFloat(product.price) <= maxvalue ); searchResult(filterDataAll); loadProductList(filterDataAll, currentPage); }); minCostInput.addEventListener('change', function () { slider.noUiSlider.set([null, this.value]); }); maxCostInput.addEventListener('change', function () { slider.noUiSlider.set([null, this.value]); }); } // color-filter document.querySelectorAll("#color-filter li").forEach(function (item) { var inputVal = item.querySelector("input[type='radio']").value; item.querySelector("input[type='radio']").addEventListener("change", function () { var filterData = productListData.filter(function (filterlist) { if (filterlist.color) { return filterlist.color.some(function (g) { return g == inputVal; }); } }); searchResult(filterData); loadProductList(filterData, currentPage); }); }); // size-filter document.querySelectorAll("#size-filter li").forEach(function (item) { var inputVal = item.querySelector("input[type='radio']").value; item.querySelector("input[type='radio']").addEventListener("change", function () { var filterData = productListData.filter(function (filterlist) { if (filterlist.size) { return filterlist.size.some(function (g) { return g == inputVal; }); } }); searchResult(filterData); loadProductList(filterData, currentPage); }); }); // discount-filter var arraylist = []; document.querySelectorAll("#discount-filter .form-check").forEach(function (item) { var inputVal = item.querySelector(".form-check-input").value; item.querySelector(".form-check-input").addEventListener("change", function () { if (item.querySelector(".form-check-input").checked) { arraylist.push(inputVal); } else { arraylist.splice(arraylist.indexOf(inputVal), 1); } var filterproductdata = productListData; if (item.querySelector(".form-check-input").checked && inputVal == 0) { filterDataAll = filterproductdata.filter(function (product) { if (product.discount) { var listArray = product.discount.split("%"); return parseFloat(listArray[0]) < 10; } }); } else if (item.querySelector(".form-check-input").checked && arraylist.length > 0) { var compareval = Math.min.apply(Math, arraylist); filterDataAll = filterproductdata.filter(function (product) { if (product.discount) { var listArray = product.discount.split("%"); return parseFloat(listArray[0]) >= compareval; } }); } else { filterDataAll = productListData; } searchResult(filterDataAll); loadProductList(filterDataAll, currentPage); }); }); // rating-filter document.querySelectorAll("#rating-filter .form-check").forEach(function (item) { var inputVal = item.querySelector(".form-check-input").value; item.querySelector(".form-check-input").addEventListener("change", function () { if (item.querySelector(".form-check-input").checked) { arraylist.push(inputVal); } else { arraylist.splice(arraylist.indexOf(inputVal), 1); } var filterproductdata = productListData; if (item.querySelector(".form-check-input").checked && inputVal == 1) { filterDataAll = filterproductdata.filter(function (product) { if (product.rating) { var listArray = product.rating; return parseFloat(listArray) == 1; } }); } else if (item.querySelector(".form-check-input").checked && arraylist.length > 0) { var compareval = Math.min.apply(Math, arraylist); filterDataAll = filterproductdata.filter(function (product) { if (product.rating) { var listArray = product.rating; return parseFloat(listArray) >= compareval; } }); } else { filterDataAll = productListData; } searchResult(filterDataAll); loadProductList(filterDataAll, currentPage); }); }); function searchResult(data) { if (data.length == 0) { document.getElementById("pagination-element").style.display = "none"; document.getElementById("search-result-elem").classList.remove("d-none"); } else { document.getElementById("pagination-element").style.display = "flex"; document.getElementById("search-result-elem").classList.add("d-none"); } var pageNumber = document.getElementById('page-num'); pageNumber.innerHTML = ""; var dataPageNum = Math.ceil(data.length / itemsPerPage) // for each page for (var i = 1; i < dataPageNum + 1; i++) { pageNumber.innerHTML += "
" + i + "
"; } }