/* Template Name: Toner eCommerce + Admin HTML Template Author: Themesbrand Version: 1.2.0 Website: https://Themesbrand.com/ Contact: Themesbrand@gmail.com File: product list table init Js 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", "stock": "Out of stock", "color": ["secondary", "light", "dark"], "size": ["s", "m", "l"], }, { '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", "stock": "In stock", "color": ["light", "dark"], }, { '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", "stock": "In stock", "color": ["primary", "danger", "secondary"], "size": ["s", "m", "l"], }, { 'id': 4, "productImg": "../build/images/products/img-7.png", "productTitle": "Innovative education book", "category": "Kids", "price": "96.26", "discount": "0%", "rating": "4.7", "stock": "In stock", }, { '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", "stock": "In stock", "color": ["success", "danger", "secondary"], "size": ["40", "41", "42"], }, { '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", "stock": "Out of stock", "color": ["danger"], "size": ["40", "41", "42"], }, { '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", "stock": "In stock", "size": ["s", "m", "l", "xl"], }, { '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", "stock": "In stock", "color": ["light", "warning"], "size": ["s", "l"], }, { '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", "stock": "In stock", "color": ["dark", "light"], "size": ["s", "m", "l", "xl"], }, { 'id': 10, "productImg": "../build/images/products/img-12.png", "productTitle": "Carven Lounge Chair Red", "category": "Furniture", "price": "209.99", "discount": "0%", "rating": "4.1", "stock": "Out of stock", "color": ["secondary", "dark", "danger", "light"], }, { 'id': 11, "productImg": "../build/images/products/img-3.png", "productTitle": "Ninja Pro Max Smartwatch", "category": "Watches", "price": "309.09", "discount": "20%", "rating": "3.5", "stock": "In stock", "color": ["secondary", "info"], }, { '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", "stock": "Out of stock", "color": ["success"], "size": ["s", "m", "l", "xl"], }]; // product-list if (document.getElementById("product-list")) { var productList = new gridjs.Grid({ columns: [ { name: 'Product Name', data: (function (row) { var num = 1; if (row.color) { var colorElem = ''; } else { var colorElem = ''; } if (row.size) { var sizeElem = ''; }else{ var sizeElem = ''; } return gridjs.html('
\
\
\ \
\
\
\
'+ row.productTitle + '
\

'+ row.category + '

\
\
'+ colorElem + sizeElem); }), width: '400px', }, { name: 'Rate', data: (function (row) { return gridjs.html(''+row.rating+''); }), width: '80px', }, { name: 'Price', data: (function (row) { var text = row.discount; var myArray = text.split("%"); var discount = myArray[0]; var afterDiscount = row.price - (row.price * discount / 100); if (discount > 0) { var afterDiscountElem = '
$' + afterDiscount.toFixed(2) + ' $' + row.price + '
' } else { var afterDiscountElem = '
$' + row.price + '
' } return gridjs.html(afterDiscountElem); }), width: '80px', }, { name: 'Status', data: (function (row) { return gridjs.html(isStatus(row.stock)); }), width: '100px', }, { name: 'Action', width: '80px', data: (function (row) { return gridjs.html(''); }) }, ], sort: true, pagination: { limit: 10 }, data: productListData, }).render(document.getElementById("product-list")); }; function isStatus(val) { switch (val) { case "In stock": return (''+ val +''); case "Out of stock": return (''+ val +''); } } // 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 || el.category.toLowerCase().indexOf(query.toLowerCase()) !== -1 || el.stock.toLowerCase().indexOf(query.toLowerCase()) !== -1|| el.price.toLowerCase().indexOf(query.toLowerCase()) !== -1 }) } var filterData = filterItems(productListData, inputVal); productList.updateConfig({ data: filterData }).forceRender(); }); // 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 ); productList.updateConfig({ data: filterDataAll }).forceRender(); }); 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; }); } }); productList.updateConfig({ data: filterData }).forceRender(); }); }); // 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; }); } }); productList.updateConfig({ data: filterData }).forceRender(); }); }); // 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; } productList.updateConfig({ data: filterDataAll }).forceRender(); }); }); // 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; } productList.updateConfig({ data: filterDataAll }).forceRender(); }); }); document.getElementById("sort-elem").addEventListener("change", function (e) { var inputVal = e.target.value if (inputVal == "low_to_high") { sortElementsByAsc(); } else if (inputVal == "high_to_low") { sortElementsByDesc(); } else if (inputVal == "") { sortElementsById() } }); // sort element ascending function sortElementsByAsc() { var list = productListData.sort(function (a, b) { var text = a.discount; var myArray = text.split("%"); var discount = myArray[0]; var x = a.price - (a.price * discount / 100); var text1 = b.discount; var myArray1 = text1.split("%"); var discount = myArray1[0]; var y = b.price - (b.price * discount / 100); if (x < y) { return -1; } if (x > y) { return 1; } return 0; }) productList.updateConfig({ data: list }).forceRender(); } // sort element descending function sortElementsByDesc() { var list = productListData.sort(function (a, b) { var text = a.discount; var myArray = text.split("%"); var discount = myArray[0]; var x = a.price - (a.price * discount / 100); var text1 = b.discount; var myArray1 = text1.split("%"); var discount = myArray1[0]; var y = b.price - (b.price * discount / 100); if (x > y) { return -1; } if (x < y) { return 1; } return 0; }) productList.updateConfig({ data: list }).forceRender(); } // sort element id function sortElementsById() { var list = productListData.sort(function (a, b) { var x = parseInt(a.id); var y = parseInt(b.id); if (x < y) { return -1; } if (x > y) { return 1; } return 0; }) productList.updateConfig({ data: list }).forceRender(); }