debounce with product search
This commit is contained in:
parent
ad63d7d012
commit
55224926d9
|
@ -1 +1 @@
|
|||
{"branch_name":"beta","last_commit_date":"2022-01-20T09:20:12.000Z","last_commit_author":"rakesh","last_commit_hash":"aecadf3107a47299cdc79a7ea795e944f95452fd"}
|
||||
{"branch_name":"beta","last_commit_date":"2022-01-20T09:38:46.000Z","last_commit_author":"rakesh","last_commit_hash":"ad63d7d012c005f4fd033a9432f7feb1494fbf8e"}
|
|
@ -39,7 +39,7 @@
|
|||
<!-- built files will be auto injected -->
|
||||
|
||||
<!-- Listrak Analytics – Javascript Framework -->
|
||||
<script type="text/javascript">
|
||||
<!-- <script type="text/javascript">
|
||||
var biJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
|
||||
(function (d, s, id, tid, vid) {
|
||||
var js, ljs = d.getElementsByTagName(s)[0];
|
||||
|
@ -49,9 +49,9 @@
|
|||
js.src = biJsHost + "cdn.listrakbi.com/scripts/script.js?m=" + tid + "&v=" + vid;
|
||||
ljs.parentNode.insertBefore(js, ljs);
|
||||
})(document, 'script', 'ltkSDK', 'yJ3fjhPTdCKx', '1');
|
||||
</script>
|
||||
</script> -->
|
||||
<!--START Pepperjam CODE-->
|
||||
<script>
|
||||
<!-- <script>
|
||||
(function () {
|
||||
var a = document.createElement("script");
|
||||
a.type = "text/javascript", a.async = !0, a.src = "//container.pepperjam.com/4135755510.js";
|
||||
|
@ -62,10 +62,10 @@
|
|||
b.parentNode.insertBefore(a, b)
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
</script> -->
|
||||
<!--END Pepperjam CODE-->
|
||||
<!-- Criteo Homepage Tag -->
|
||||
<script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script>
|
||||
<!-- <script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script>
|
||||
<script type="text/javascript">
|
||||
window.criteo_q = window.criteo_q || [];
|
||||
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
|
||||
|
@ -75,7 +75,7 @@
|
|||
{ event: "setSiteType", type: deviceType },
|
||||
// { event: "viewHome" }
|
||||
);
|
||||
</script>
|
||||
</script> -->
|
||||
<!-- END Criteo Home Page Tag -->
|
||||
</body>
|
||||
|
||||
|
|
|
@ -16,9 +16,10 @@
|
|||
</v-container>
|
||||
</v-overlay>
|
||||
<div v-show="!cartProductsProgress">
|
||||
<v-row><v-col cols="12" sm="12" md="12">
|
||||
<v-row
|
||||
><v-col cols="12" sm="12" md="12">
|
||||
<v-col cols="12" sm="12" md="8">
|
||||
<v-menu offset-y down allow-overflow >
|
||||
<v-menu offset-y down allow-overflow>
|
||||
<template v-slot:activator="{ on }">
|
||||
<v-text-field
|
||||
prepend-inner-icon="mdi-magnify"
|
||||
|
@ -31,9 +32,7 @@
|
|||
</template>
|
||||
<div>
|
||||
<v-card tile flat v-if="searchData">
|
||||
<RetailerSearchProducts
|
||||
@actionClose="showSnackBarMessage"
|
||||
/>
|
||||
<RetailerSearchProducts @actionClose="showSnackBarMessage" />
|
||||
</v-card>
|
||||
</div>
|
||||
</v-menu>
|
||||
|
@ -65,9 +64,8 @@
|
|||
</v-row>
|
||||
|
||||
<div v-show="cartProductsItem.length != 0">
|
||||
<v-row >
|
||||
<v-row>
|
||||
<v-col cols="12" sm="12" md="8">
|
||||
|
||||
<v-col cols="12">
|
||||
<p
|
||||
class="h3 body-font text-uppercase primary--text"
|
||||
|
@ -259,7 +257,6 @@ export default {
|
|||
return this.$store.state.cartProduct.cartProductsProgress;
|
||||
}
|
||||
},
|
||||
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
|
@ -282,7 +279,6 @@ export default {
|
|||
};
|
||||
},
|
||||
watch: {
|
||||
|
||||
cartProductsItem() {
|
||||
this.stockFlagHideShow();
|
||||
this.calledCriteoViewBasket();
|
||||
|
@ -345,6 +341,8 @@ export default {
|
|||
});
|
||||
},
|
||||
searchProducts() {
|
||||
if (this.timeout) clearTimeout(this.timeout);
|
||||
this.timeout = setTimeout(() => {
|
||||
if (this.searchData) {
|
||||
this.$store.dispatch("catalogBrowser/search", {
|
||||
fullCatalog: window.craneCatalog,
|
||||
|
@ -355,6 +353,7 @@ export default {
|
|||
sortBy: "relevance",
|
||||
});
|
||||
}
|
||||
}, 500);
|
||||
},
|
||||
},
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { getField, updateField } from 'vuex-map-fields'
|
||||
import { doFilterItems } from '@/services/search.service'
|
||||
// import { doFilterItems } from '@/services/search.service'
|
||||
//import { criteoForProductList } from "@/services/util.service";
|
||||
import Fuse from 'fuse.js'
|
||||
export const catalogBrowser = {
|
||||
|
@ -131,7 +131,7 @@ export const catalogBrowser = {
|
|||
},
|
||||
/* eslint-disable no-alert, no-console , no-debugger */
|
||||
|
||||
search: ({ commit, state }, { fullCatalog, keywords, filters, pageNumber, pageSize, sortBy }) => {
|
||||
search:async ({ commit, state }, { fullCatalog, keywords, filters, pageNumber, pageSize, sortBy }) => {
|
||||
|
||||
|
||||
commit('inProgress', true)
|
||||
|
@ -140,22 +140,22 @@ export const catalogBrowser = {
|
|||
// commit('setEnabledFilters', filters)
|
||||
// debugger
|
||||
const products = []
|
||||
if (filters !== undefined && filters.length) {
|
||||
const categoryFilter = filters.find((f => f.prop == 'ci'))
|
||||
if (categoryFilter !== undefined) {
|
||||
console.log('filtering by category')
|
||||
const category = fullCatalog.allCategoryDetails.find(c => c.id == categoryFilter.value)
|
||||
if (category) {
|
||||
for (var pi = 0; pi < category.p.length; pi++) {
|
||||
const pid = category.p[pi]
|
||||
const product = fullCatalog.products[pid]
|
||||
if (product !== undefined) {
|
||||
products.push(product)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (filters !== undefined && filters.length) {
|
||||
// const categoryFilter = filters.find((f => f.prop == 'ci'))
|
||||
// if (categoryFilter !== undefined) {
|
||||
// console.log('filtering by category')
|
||||
// const category = fullCatalog.allCategoryDetails.find(c => c.id == categoryFilter.value)
|
||||
// if (category) {
|
||||
// for (var pi = 0; pi < category.p.length; pi++) {
|
||||
// const pid = category.p[pi]
|
||||
// const product = fullCatalog.products[pid]
|
||||
// if (product !== undefined) {
|
||||
// products.push(product)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
if (keywords !== null && keywords != '') {
|
||||
products.length = 0
|
||||
|
@ -170,46 +170,47 @@ export const catalogBrowser = {
|
|||
|
||||
const availableFilters = [];
|
||||
let filteredItems = [];
|
||||
let pageData = [];
|
||||
if (products.length > 0) {
|
||||
// let pageData = [];
|
||||
// if (products.length > 0) {
|
||||
|
||||
filteredItems = doFilterItems({
|
||||
items: products, enabledFilters: state.enabledFilters,
|
||||
availableFilters, attributesMap: window.attributesMap
|
||||
})
|
||||
// filteredItems = doFilterItems({
|
||||
// items: products, enabledFilters: state.enabledFilters,
|
||||
// availableFilters, attributesMap: window.attributesMap
|
||||
// })
|
||||
|
||||
switch (sortBy) {
|
||||
case 'name':
|
||||
filteredItems.sort((a, b) => {
|
||||
if (a.n < b.n) return -1
|
||||
else if (a.n > b.n) return 1
|
||||
else return 0
|
||||
})
|
||||
break
|
||||
case 'price':
|
||||
filteredItems.sort((a, b) => {
|
||||
if (a.p < b.p) return -1
|
||||
else if (a.p > b.p) return 1
|
||||
else return 0
|
||||
})
|
||||
break
|
||||
case 'color':
|
||||
filteredItems.sort((a, b) => {
|
||||
if (a.dc < b.dc) return -1
|
||||
else if (a.dc > b.dc) return 1
|
||||
else return 0
|
||||
})
|
||||
break
|
||||
}
|
||||
if (pageSize != 'ALL') {
|
||||
pageSize = Number(pageSize)
|
||||
pageData = filteredItems.slice((pageNumber - 1) * pageSize, pageNumber * pageSize)
|
||||
}
|
||||
else {
|
||||
pageData = filteredItems;
|
||||
}
|
||||
}
|
||||
commit('setSearchResults', pageData);
|
||||
// switch (sortBy) {
|
||||
// case 'name':
|
||||
// filteredItems.sort((a, b) => {
|
||||
// if (a.n < b.n) return -1
|
||||
// else if (a.n > b.n) return 1
|
||||
// else return 0
|
||||
// })
|
||||
// break
|
||||
// case 'price':
|
||||
// filteredItems.sort((a, b) => {
|
||||
// if (a.p < b.p) return -1
|
||||
// else if (a.p > b.p) return 1
|
||||
// else return 0
|
||||
// })
|
||||
// break
|
||||
// case 'color':
|
||||
// filteredItems.sort((a, b) => {
|
||||
// if (a.dc < b.dc) return -1
|
||||
// else if (a.dc > b.dc) return 1
|
||||
// else return 0
|
||||
// })
|
||||
// break
|
||||
// }
|
||||
// if (pageSize != 'ALL') {
|
||||
// pageSize = Number(pageSize)
|
||||
// pageData = filteredItems.slice((pageNumber - 1) * pageSize, pageNumber * pageSize)
|
||||
// }
|
||||
// else {
|
||||
// pageData = filteredItems;
|
||||
// }
|
||||
// }
|
||||
// commit('setSearchResults', pageData);
|
||||
commit('setSearchResults', products);
|
||||
|
||||
commit('setAvailableFilters', availableFilters);
|
||||
commit('setSearchTerms', { keywords: keywords, pageNumber: pageNumber, pageSize: pageSize, sortBy: sortBy, filters: filters }
|
||||
|
|
Loading…
Reference in New Issue