debounce with product search

This commit is contained in:
sidharth 2022-01-21 17:33:32 +05:30
parent ad63d7d012
commit 55224926d9
4 changed files with 104 additions and 104 deletions

View File

@ -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"}

View File

@ -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>

View File

@ -16,7 +16,8 @@
</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>
<template v-slot:activator="{ on }">
@ -31,9 +32,7 @@
</template>
<div>
<v-card tile flat v-if="searchData">
<RetailerSearchProducts
@actionClose="showSnackBarMessage"
/>
<RetailerSearchProducts @actionClose="showSnackBarMessage" />
</v-card>
</div>
</v-menu>
@ -67,7 +66,6 @@
<div v-show="cartProductsItem.length != 0">
<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);
},
},

View File

@ -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 }