There were no products found that match your query.
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('solution-division')) {
document.querySelectorAll('#solution-division').forEach(s => s.value = urlParams.get('solution-division'));
document.querySelectorAll('#solution-division').forEach(s => s.classList.add('selected-filter'));
}
if (urlParams.get('solution-market')) {
document.querySelectorAll('#solution-market').forEach(s => s.value = urlParams.get('solution-market'));
document.querySelectorAll('#solution-market').forEach(s => s.classList.add('selected-filter'));
}
if (urlParams.get('application')) {
document.querySelectorAll('#application').forEach(s => s.value = urlParams.get('application'));
document.querySelectorAll('#application').forEach(s => s.classList.add('selected-filter'));
}
//https://stackoverflow.com/a/37041756
function intersect(a, b) {
var setB = new Set(b);
return [...new Set(a)].filter(x => setB.has(x));
}
jQuery(document).ready(function(){
if(window.location.search.length > 0){
window.brandsMap = [];
window.marketsMap = [];
window.applicationsMap = [];
// need to grab brands, markets, and applications because only IDs are stored
jQuery.getJSON( "/wp-json/wp/v2/solution-division?per_page=100", function( data ) {
window.brands = data;
data.forEach(brand=>brandsMap.push({"id": brand.id, "name": brand.name, "slug": brand.slug, "markets": [], "applications": []}));
}).promise().done( function(){
jQuery.getJSON( "/wp-json/wp/v2/solution-market?per_page=100", function( data ) {
window.markets = data;
data.forEach(market=>marketsMap.push({"id": market.id, "name": market.name, "slug": market.slug, "brands": [], "applications": []}));
})}).promise().done( function(){
jQuery.getJSON( "/wp-json/wp/v2/application?per_page=100", function( data ) {
window.applications = data;
data.forEach(application=>applicationsMap.push({"id": application.id, "name": application.name, "slug": application.slug, "markets": [], "brands": []}));
})}).promise().done( function(){
jQuery.getJSON( "/wp-json/wp/v2/product?per_page=100", function( data ) {
window.products = data;
var search = new URLSearchParams(window.location.search);
data.forEach(product=>{
if(search.has("solution-division")){
product["solution-division"].forEach(productBrand=>{
brandsMap.find(b=>b.id==productBrand).markets = [...new Set([...brandsMap.find(b=>b.id==productBrand).markets,...product["solution-market"]])];
brandsMap.find(b=>b.id==productBrand).applications = [...new Set([...brandsMap.find(b=>b.id==productBrand).applications,...product.application])];
});
}
if(search.has("solution-market")){
product["solution-market"].forEach(productMarket=>{
marketsMap.find(b=>b.id==productMarket).brands = [...new Set([...marketsMap.find(b=>b.id==productMarket).brands,...product["solution-division"]])];
marketsMap.find(b=>b.id==productMarket).applications = [...new Set([...marketsMap.find(b=>b.id==productMarket).applications,...product.application])];
});
}
if(search.has("application")){
product.application.forEach(productApplication=>{
applicationsMap.find(b=>b.id==productApplication).markets = [...new Set([...applicationsMap.find(b=>b.id==productApplication).markets,...product["solution-market"]])];
applicationsMap.find(b=>b.id==productApplication).brands = [...new Set([...applicationsMap.find(b=>b.id==productApplication).brands,...product["solution-division"]])];
});
}
});
}).promise().done( function(){
// once maps have been created, filter based on selections
var setSelectors = [true, true, true];
var search = new URLSearchParams(window.location.search);
window.finalBrandIds = window.brandsMap.map(brand => brand.id);
window.finalMarketIds = window.marketsMap.map(market => market.id);
window.finalApplicationIds = window.applicationsMap.map(app => app.id) ;
// for each search parameter used, filter valid options for other selectors
search.forEach((value, key) => {
if(key == "solution-division") {
setSelectors[0] = false;
var searchMap = window.brandsMap.find(brand => brand.slug == value);
window.finalApplicationIds = intersect(window.finalApplicationIds , searchMap.applications);
window.finalMarketIds = intersect(window.finalMarketIds , searchMap.markets);
} else if(key == "solution-market") {
setSelectors[1] = false;
var searchMap = window.marketsMap.find(market => market.slug == value);
window.finalBrandIds = intersect(window.finalBrandIds, searchMap.brands);
window.finalApplicationIds = intersect(window.finalApplicationIds, searchMap.applications);
} else if(key == "application") {
setSelectors[2] = false;
var searchMap = window.applicationsMap.find(app => app.slug == value);
window.finalBrandIds = intersect(window.finalBrandIds, searchMap.brands);
window.finalMarketIds = intersect(window.finalMarketIds , searchMap.markets);
}
});
// only filter valid options of unused selectors
if(setSelectors[0]){
for(var el of document.querySelectorAll("#solution-division")){
var jel = jQuery(el);
jel.empty();
jel.append(jQuery("").attr("value", "").text("- Select a Brand -"));
window.finalBrandIds.forEach(brandId => {
var currentBrand = brandsMap.find(brand => brand.id == brandId);
// add options, cheat replacing & entity because editor decodes it
jel.append(jQuery("").attr("value", currentBrand.slug).text(currentBrand.name.replaceAll('amp;', '')));
});
}
}
if(setSelectors[1]){
for(var el of document.querySelectorAll("#solution-market")){
var jel = jQuery(el);
jel.empty();
jel.append(jQuery("").attr("value", "").text("- Select an Industry -"));
window.finalMarketIds.forEach(marketId => {
var currentMarket = marketsMap.find(market => market.id == marketId);
jel.append(jQuery("").attr("value", currentMarket.slug).text(currentMarket.name.replaceAll('amp;', '')));
});
}
}
if(setSelectors[2]){
for(var el of document.querySelectorAll("#application")){
var jel = jQuery(el);
jel.empty();
jel.append(jQuery("").attr("value", "").text("- Select an Application -"));
window.finalApplicationIds.forEach(appId => {
var currentApp = applicationsMap.find(app => app.id == appId );
jel.append(jQuery("").attr("value", currentApp.slug).text(currentApp.name.replaceAll('amp;', '')));
});
}
}
});
});
}
// filter on change
jQuery('select.fusion-form-input').change(function() {
// ignore default value
if(this.selectedIndex > 0){
var page = window.location;
var pageBase = page.origin + page.pathname.split("page")[0];
var pageSearch = page.search;
if(pageSearch.length > 0){
pageSearch += "&"
} else {
pageSearch += "?"
}
pageSearch += this.id + "=" + this.selectedOptions[0].value;
var newURL = pageBase + pageSearch
window.location = newURL;
}
});
});