retailer-vue/src/services/search.service.js

78 lines
2.6 KiB
JavaScript

// const vueAppMagenotApiUrl = process.env.VUE_APP_MAGENTO_API_URL;
//const vueAppCCUrl = process.env.VUE_APP_CC_URL;
// const retailorId = process.env.VUE_APP_RETAILOR_ID;
// const vueAppNodeslsApiUrl = process.env.VUE_APP_NODESLS_API_URL;
// const assetNodeslsUrl = process.env.VUE_APP_ASSETS_NODESLS_URL;
/* eslint-disable no-alert, no-console , no-debugger */
export const doIncreaseCountsForFilter = ({ product, availableFilter }) => {
const pv = product[availableFilter.prop]
if(pv)
{
const existingCount = availableFilter.counts.find(element => element.value == pv)
if (existingCount !== undefined && existingCount != null) {
existingCount.count = existingCount.count + 1
}
else {
availableFilter.counts.push({value:pv, count:1})
}
}
}
export const doCheckProductForEnabledFilters = ({ product, enabledFilters }) => {
if(enabledFilters.length){
var filteredCount = 0;
for (var f = 0; f < enabledFilters.length; f++) {
const pv = product[enabledFilters[f].prop]
if (enabledFilters[f].label == 'Category') {
filteredCount++;
continue // for now
}
if (pv == enabledFilters[f].value) // hardcoded to equals
{
filteredCount++;
//break
}
}
return (filteredCount==enabledFilters.length?true:false);
}
else
return true;
}
export const doCountProductAttributes = ({ product, availableFilters, attributesMap }) => {
// console.log('attributesMap:', attributesMap)
for (var a = 0; a < attributesMap.length; a++) {
var avAttribute = attributesMap[a]
var avFilter = availableFilters.find(element => element.label == avAttribute.label)
if (avFilter === undefined || avFilter == null) {
avFilter = {
label: avAttribute.label,
prop: avAttribute.prop,
counts: [],
options: avAttribute.options
}
availableFilters.push(avFilter)
}
doIncreaseCountsForFilter( { product, availableFilter: avFilter })
}
}
export const doFilterItems = ({ items, enabledFilters, availableFilters, attributesMap }) => {
const matchingItems = []
for (var i = 0; i < items.length; i++) {
var product = items[i]
const isValid = doCheckProductForEnabledFilters({ product, enabledFilters })
if (isValid && product.per =='No') {
doCountProductAttributes({ product, availableFilters, attributesMap })
matchingItems.push(product)
}
}
return matchingItems
}