78 lines
2.6 KiB
JavaScript
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
|
|
}
|