Our Solutions

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; } }); });