var ajax_url_p = ''; var urls = [] if (window.location.href.indexOf('https://www.just-food.com/data-insights/') != -1) { var facet_index = 1; } else { var facet_index = 0; } // generate slugs function slugify(data) { return (data).toLowerCase().replace(/[^a-z0-9]+/g, '-'); } // fix image lazyload issue after ajax function lazyImg() { jQuery('#solr-search-results img').each(function () { var src = jQuery(this).data('src'); // Use .data() method to get the data-src attribute if (src) { jQuery(this).attr('src', src).removeData('src'); // Set src attribute and remove data-src attribute } }); } // Build fancytree format json from inputjson function buildfancytreejson(inputData) { const data = []; if (inputData == null) { console.log('null'); return []; } inputData.forEach(item => { const keys = item.key.split('->'); let parent = data; let level = 1; keys.forEach((key, index) => { const existingNode = parent.find(node => node.title === key && node.level === level); if (!existingNode) { const newNode = { title: key, expanded: false, folder: false, key: `${slugify(key)}_${level}_${index}`, facetName: key }; if (index === keys.length - 1) { newNode.doc_count = item.doc_count; } newNode.level = level; parent.push(newNode); parent = newNode.children = newNode.children || []; } else { parent = existingNode.children; } level++; }); }); return data; } // Fetch facets from url and populate the facets selection function loadFacetsfromUrl() { const urlParams = new URLSearchParams(window.location.search); const facetValues = {}; urlParams.forEach((value, key) => { if (key.includes('selected_facets')) { const facetParts = value.split(':'); const facetType = facetParts[0]; const facetValue = facetParts[1]; if (!facetValues[facetType]) { facetValues[facetType] = []; } facetValues[facetType].push(facetValue); } }); Object.keys(facetValues).forEach(facetType => { if ((facetType != 'publication_date_str') || facetType != 'undefined') { console.log(facetType); facetValues[facetType].forEach(facetValue => { var fancy_id = jQuery('#' + facetType + '_fancy'); if(fancy_id.length > 0){ var allKeys = jQuery.map(jQuery('#' + facetType + '_fancy').fancytree('getRootNode').getChildren(), function (node) { console.log(node.data['facetName']) console.log(facetValue) if (node.data['facetName'] == facetValue) { node.setSelected(true); } }); } }); } }) } // reload fancytree after ajax with latest facetsdata function reloadFancyTree(treeId, treeDataArray) { var tree = jQuery('#' + treeId).fancytree('getTree'); var selectedNodes = tree.getSelectedNodes(); selectedNodes.forEach(function (node) { }); tree.reload(buildfancytreejson(treeDataArray)); jQuery("a.fancytree-header").show(); // show the facet headers by default if (treeDataArray == null) { var tree_class = treeId.replace('_fancy', ''); jQuery('a[data-toggle=' + tree_class + ']').hide(); } selectedNodes.forEach(function (node) { var currentNode = tree.getNodeByKey(node.key); if (currentNode) { currentNode.setSelected(true); } }); } jQuery(document).ready(function () { //updatePubdatePrice(); getserach_by_value(); setTimeout(() => { loadFacetsfromUrl(); }, 500); const urlParams = new URLSearchParams(window.location.search); var paramValue = urlParams.get('search_sort'); if (paramValue === null) { paramValue = 'sort_by_relevancy_desc'; } }); // Ajax function on facets selection/deselection jQuery(document).on('click', '.ui-fancytree li .fancytree-checkbox', function () { //alert(123); var facet_name = jQuery(this).closest('li').attr('data-os-facet-data') var industry_type = jQuery(this).closest('li').attr('data-os-industry_type') if(facet_name == ''){ jQuery(".clear_filters_"+industry_type).css("display", "none") }else{ jQuery(".clear_filters_"+industry_type).css("display", "block") } var selected_chekbox_facet = jQuery(this).closest('li').attr('aria-selected'); if(selected_chekbox_facet == "true"){ jQuery(".no_filters_"+industry_type).css("display", "none") } else { jQuery(".no_filters_"+industry_type).css("display", "block") } data_refresh_after_ajax(industry_type, facet_name) }); // Function to pass dynamic params to url without reloading the page function setQueryStringParameter(name, value, append = false) { const url = new URL(https://www.just-food.com/contractors/training/canadean/window.location.href); const params = url.searchParams; if (params.has(name)) { params.set(name, value); } else if (append) { params.append(name, value); } else { params.set(name, value); } window.history.replaceState(null, "", url.toString()); } // Ajax function - Send ajax call with current page url and refresh search/pagination/facets function ajaxReq(page_url) { var search_results_div = jQuery("#solr-search-results"); jQuery(search_results_div).css('position', 'relative'); var overlay = jQuery("
").css({ 'position': 'absolute', 'top': 0, 'left': 0, 'width': '100%', 'height': '100%', 'background': 'rgba(255, 255, 255, 0.7)', 'z-index': 999999 }).appendTo(search_results_div); jQuery('.filter-criteria').removeClass('is-open'); jQuery.ajax({ url: page_url, dataType: 'html', success: function (response) { jQuery('.res_info').html(jQuery(response).find('.res_info').html()) // update pagination block jQuery('.fancytree-render-js').html(jQuery(response).find('.fancytree-render-js').html()) // update facets html jQuery('#solr-search-results').html(jQuery(response).find('#solr-search-results').html()) // update search results div var primary_facet = jQuery('.span-l a i').attr('data-industry'); console.log(primary_facet) // var themes_tree = jQuery("#themes_str_fancy").fancytree("getTree"); // themes_tree.visit(function (node) { // console.log(node.count); // }); overlay.remove(); setTimeout(function () { lazyImg(); if (window.location.href.indexOf('https://www.just-food.com/data-insights/') != -1) { reloadFancyTree('_company_name_str_fancy', _company_name_str_arr); reloadFancyTree('_disease_name_str_fancy', _disease_name_str_arr); reloadFancyTree('_drug_name_str_fancy', _drug_name_str_arr); reloadFancyTree('themes_insights_str_fancy', themes_insights_str_arr); } else { reloadFancyTree('categories_str_fancy', categories_str_arr); reloadFancyTree('type_fancy', type_arr); reloadFancyTree('sector_str_fancy', sector_str_arr); reloadFancyTree('region_str_fancy', region_str_arr); } // updatePubdatePrice(); // fix image lazyload console.log('lazy loaded images') }, 100); if (parseInt(jQuery('.res_info strong:first').text().trim()) == 0 || parseInt(jQuery('.res_info strong:nth-child(2)').text().trim()) == 0) { jQuery('.nodata-insights').css("display", "block") jQuery('.nodata-insights').html('No Data Found') } if (parseInt(jQuery('.res_info strong:first').text().trim()) == parseInt(jQuery('.res_info strong:nth-child(2)').text().trim())) { //setTimeout(function() { jQuery('.search_page_loadmore .insights_loadmore').hide() jQuery('#load-more-archives, #load-more-insights').hide() //}, 100); } else { jQuery('.search_page_loadmore .insights_loadmore').show() jQuery('#load-more-archives, #load-more-insights').show() } }, error: function () { overlay.remove(); } }); } // Pagination Click - Ajax jQuery(document).on('click', '.pg-pagination-prev,.pg-pagination-next', function (e) { e.preventDefault() var page_url = jQuery(this).find('a').attr('href') window.history.replaceState(null, null, page_url); ajaxReq(page_url); }) // Sort by relevancy - Ajax jQuery(document).on('change', '#DDPMenupg-ddp-sort', function (e) { e.preventDefault() var sort_param = jQuery(this).val() var sort_param_text = jQuery(this).find('span').text() console.log(sort_param) if (sort_param == 'sort_by_relevancy_desc') { var page_url = window.location.href + '&search_sort=' } else { var page_url = window.location.href + '&search_sort=' + sort_param.toString() } if (window.location.href.indexOf('search_sort') != -1) { const urlParams1 = new URLSearchParams(window.location.search); // console.log("sort "+urlParams1) for (let key of urlParams1.keys()) { console.log("keys " + key) // if (urlParams1.get(key).includes('search_sort')) { if (key == 'search_sort') { console.log("Key containing 'date': " + key); setQueryStringParameter(key, sort_param, false) jQuery('.sort-by-text').text(sort_param_text) jQuery('#pg-ddp-sort').removeClass('is-open') } } } else { jQuery('.sort-by-text').text(sort_param_text) jQuery('#pg-ddp-sort').removeClass('is-open') window.history.replaceState(null, null, page_url); } // window.history.replaceState(null, null, page_url); ajaxReq(page_url) }) // Per page - Ajax jQuery(document).on('click', '#load-more-archives,#load-more-insights', function (e) { e.preventDefault() var urlParams = new URLSearchParams(window.location.search) //var per_page = ''; if (window.location.href.indexOf('per_page') == -1) { var per_page = 30; var page_url = window.location.href + '&per_page=' + per_page page_url = page_url.replace(/\/page\/\d+\//, '/') console.log("new " + page_url.replace(/\/page\/\d+\//, '/')) window.history.replaceState(null, null, page_url); } else if (window.location.href.indexOf('per_page') != -1) { const urlParams1 = new URLSearchParams(window.location.search); var per_page = parseInt(urlParams.get('per_page')) + 10 // console.log("sort "+urlParams1) for (let key of urlParams1.keys()) { console.log("keys " + key) // if (urlParams1.get(key).includes('search_sort')) { if (key == 'per_page') { console.log("Key containing 'date': " + key); setQueryStringParameter(key, per_page, false) } } var page_url = window.location.href } else { var page_url = window.location.href + '&per_page=' + per_page window.history.replaceState(null, null, page_url); } // window.history.replaceState(null, null, page_url); ajaxReq(page_url) }) //show fancytree reset button on keyup jQuery(document).on('keyup', '#inline-search', function () { if (jQuery(this).val() == '') { jQuery(this).closest(".js-geo-tree").find('.fancytree-reset').hide() } else { jQuery(this).closest(".js-geo-tree").find('.fancytree-reset').show() } }); //search box in facets jQuery(document).on('input', '.fancytree-search', function () { var searchString = jQuery(this).val(); jQuery(this).closest(".fancytree-view").find('ul li').each(function (index, value) { var currentName = jQuery(value).text() if (currentName.toUpperCase().indexOf(searchString.toUpperCase()) > -1) { jQuery(value).show(); jQuery(this).find('[aria-hidden="true"]').csss('display', 'block'); // jQuery('.wpsolr_facet_scroll [aria-hidden="true"]').css('display', 'block');ssss } else { jQuery(value).hide(); } }); }); // Search within facets data in Fancytree function getserach_by_value() { jQuery(".fancytree-search").on("keyup", function (e) { var match = jQuery(this).val(); var fancytree_id = jQuery(this).closest(".fancytree-holder").find(".fancytree-view").attr('id'); var tree = jQuery.ui.fancytree.getTree("#" + fancytree_id); tree.filterNodes(function (node) { var n_title = node.data.facetName node.title = n_title + "(" + node.data.doc_count + ")"; return !match || node.title.toLowerCase().indexOf(match.toLowerCase()) > -1; }); // tree.filterNodes(function (node) { // var n_title = node.data.facetName // if (node.data.doc_count) { // node.title = n_title + "(" + node.data.doc_count + ")"; // } // return !match || node.title.toLowerCase().indexOf(match.toLowerCase()) > -1; // }); if (match === '') { jQuery(this).closest(".fancytree-holder").find('.input-group-button .fancytree-reset').hide(); // Visit all nodes and collapse them tree.visit(function (node) { node.setExpanded(false); }); } else { jQuery(this).closest(".fancytree-holder").find('.input-group-button .fancytree-reset').show(); } // Define the custom sorting function function sortChildren(a, b) { var aDocCount = a.data.doc_count || 0; var bDocCount = b.data.doc_count || 0; return bDocCount - aDocCount; } // Get the root node of the Fancytree var rootNode = tree.getRootNode(); // Sort the children of the root node using the custom sorting function rootNode.sortChildren(sortChildren, true); }); } // Search within facets data in Fancytree jQuery(".fancytree-search").on("keyup", function (e) { var match = jQuery(this).val().trim(); var fancytree_id = jQuery(this).closest(".fancytree-holder").find(".fancytree-view").attr('id') // console.log("fancytree_id - " + fancytree_id) var tree = jQuery.ui.fancytree.getTree("#" + fancytree_id); tree.filterNodes(function (node) { // console.log(node); // if (node.data.facetName.indexOf('_') != -1) { // var n_title = node.data.facetName.split('_')[0] // } // else { var n_title = node.data.facetName // } if (node.data.doc_count) { node.title = n_title + "(" + node.data.doc_count + ")"; } return !match || node.title.toLowerCase().indexOf(match.toLowerCase()) > -1; }); if (match == '') { jQuery(this).closest(".fancytree-holder").find('.input-group-button .fancytree-reset').hide() // Visit all nodes and collapse them tree.visit(function (node) { node.setExpanded(false); }); } else { jQuery(this).closest(".fancytree-holder").find('.input-group-button .fancytree-reset').show() } }); //empty search box on click of reset button and show all industries jQuery(document).on('click', '.fancytree-reset', function (e) { var fancytree_id = jQuery(this).closest(".fancytree-holder").find(".fancytree-view").attr('id') var tree = jQuery.ui.fancytree.getTree("#" + fancytree_id); jQuery(this).closest(".fancytree-holder").find(".fancytree-search").val('').change() tree.clearFilter(); jQuery(this).css("display", 'none'); }) // Search query with existing params jQuery("form#solr_facet").submit(function (e) { // jQuery.blockUI(); // document.querySelector('.overlay').style.display = 'block'; e.preventDefault(); var arr = window.location.href.split('&').slice(1).join('&'); if (arr) { arr = "&" + arr; } else { arr = ''; } var url = window.location.href; var searchdata = jQuery('#main_search_field').val(); if (searchdata && url.includes("title=true")) { window.location.href = "/store/?s=" + encodeURIComponent(searchdata) + "&title=true"; } else if (searchdata) { window.location.href = "/store/?s=" + encodeURIComponent(searchdata); } else { window.location.href = "/store/?s=" + arr; } }); // Grid and List View jQuery("#DDPMenupg-ddp-view li a").click(function (e) { var view = jQuery(this).attr('id') jQuery('#DDPMenupg-ddp-view').attr('sel-view', view) if (view == 'grid-view-search') { jQuery('.cell1').hide() jQuery('.grid-only').show() jQuery('.list-result-title').hide() jQuery('.grid-result-title').show() jQuery('.search-results-container ul').addClass('row-up rule row-medium-up-2 fixed grid-view') jQuery('.search-results-container ul .cell1').removeClass('medium-3').addClass('medium-12') jQuery('.search-results-container ul .cell2').removeClass('medium-9').addClass('medium-12') } else { jQuery('.cell1').show() jQuery('.grid-only').hide() jQuery('.grid-result-title').hide() jQuery('.list-result-title').show() jQuery('.search-results-container ul').removeClass('row-up rule row-medium-up-2 fixed grid-view') jQuery('.search-results-container ul .cell1').addClass('medium-3').removeClass('medium-12') jQuery('.search-results-container ul .cell2').addClass('medium-9').removeClass('medium-12') } }); // Update refinemenets selection after ajax function add_refinements() { console.log("add_refinements") lazyImg(); setTimeout(function () { if (jQuery('.refinements-count span').text() == 0) { jQuery('.refinements-count').hide() } }, 10); const urlParams = new URLSearchParams(window.location.search); const facetValues = {}; jQuery('#SearchBar').show() jQuery('.refine-option').show() jQuery('.refinements-count').show() var sum = 1; urlParams.forEach((value, key) => { if (key.includes('selected_facets')) { const facetParts = value.split(':'); const facetType = facetParts[0]; const facetValue = facetParts[1]; if (!facetValues[facetType]) { facetValues[facetType] = []; } facetValues[facetType].push({ facetValue }); } }); console.log("fecet are doing:"+facetValues); jQuery.each(facetValues, function (index, item) { jQuery('.' + index + '-span').empty() jQuery('.refinements-count span').text() jQuery.each(item, function (idx, it) { var node_name = it.facetValue jQuery('.' + index + '-name').show() if (index == '_price_f') { var face_name = 'jQuery' + it.facetValue.replace('-', ' - jQuery') jQuery('.' + index + '-span').append('' + face_name + ''); } else if (index == 'publication_date_str') { console.log(it); var face_name = jQuery("[data-os-facet-data='" + it.facetValue + "']").find('.fancytree-node .fancytree-title').text() jQuery('.' + index + '-span').append('' + face_name + ''); } else { jQuery('.' + index + '-span').append('' + it.facetValue + ''); } jQuery('.refinements-count span').text(sum) sum++ }) }) } // Remove refinements function remove_refinements(facetType_r, facetValue_r) { var refines_count = jQuery('.refinements-count span').text() var allKeys = jQuery.map(jQuery('#' + facetType_r + '_fancy').fancytree('getRootNode').getChildren(), function (node) { if (facetType_r != '_price_f') { node.setSelected(false); jQuery('[data-title="' + facetValue_r + '"]').closest('a').remove() // refines_count = parseInt(refines_count) - 1 } return node; }); if (facetType_r == '_price_f') { jQuery.each(allKeys, function (event, data) { data.setSelected(false); if (data.title == 'jQuery0-*') { data.setSelected(true); jQuery('[data-title="' + facetValue_r + '"]').closest('a').remove() facetValue_r = 'jQuery0-*' } }); } if (facetType_r == 'publication_date_str') { jQuery.each(allKeys, function (event, data) { data.setSelected(false); if (data.title == 'All') { data.setSelected(true); jQuery('[data-title="' + facetValue_r + '"]').closest('a').remove() facetValue_r = 'All' } }); } refines_count = parseInt(refines_count) - 1 setTimeout(function () { jQuery('.refinements-count span').text(refines_count) jQuery("#SearchBarRefine span.button").each(function (index) { if (jQuery(this).find("a.button").length == 0) { jQuery(this).hide() } }); if (refines_count == 1) { jQuery('.refinements-count').contents().filter(function () { return this.nodeType == 3; }).replaceWith(' Refinement'); } else { jQuery('.refinements-count').contents().filter(function () { return this.nodeType == 3; }).replaceWith(' Refinements'); } if (refines_count == 0) { jQuery('.clear_refinements').hide() jQuery('.refinements-count').hide() } console.log("log----------:"+refines_count) }, 500); data_refresh_after_ajax(facetType_r, facetValue_r) } function data_refresh_after_ajax(industry_type, facet_name) { const url = new URL(https://www.just-food.com/contractors/training/canadean/location); url.searchParams.set(industry_type, facet_name); var separator = window.location.href.includes('?') ? '&' : '?'; if (window.location.href.indexOf(encodeURIComponent(industry_type + ":" + facet_name)) != -1) { const urlParams = new URLSearchParams(window.location.search); const url2=window.location.href var c_url=window.location.href for (let key of urlParams.keys()) { if (urlParams.get(key).includes(industry_type)) { //console.log("Key containing 'industry_type': " + key); if (facet_name == '') { const url1 = new URL(https://www.just-food.com/contractors/training/canadean/decodeURIComponent(window.location.href)); const params1 = new URLSearchParams(url1.search); const newParams1 = new URLSearchParams(); for (const [key, value] of params1) { if (!value.includes(industry_type)) { newParams1.append(key, value); } } c_url = `${url1.origin}${url1.pathname}?${newParams1.toString()}`; window.history.replaceState(null, null, c_url); } else if (urlParams.get(key).includes(industry_type)) { var c_url = window.location.href.replace(encodeURIComponent(industry_type + ":" + facet_name), '') // c_url = c_url.replace(encodeURIComponent(key) + '=', '') c_url = c_url.replace(/([?&]selected_facets%5B\d+\%5D)=(&|$)/g, '$2'); c_url = c_url.replace(/([&?])(?:&|$)/, '$1').replace(/(\?|&)$/, ''); console.log("Updated URL: " + decodeURIComponent(c_url)); window.history.replaceState(null, null, c_url); } } } } else { var encode_url = encodeURIComponent('selected_facets[' + facet_index + ']') + '=' + encodeURIComponent(industry_type + ":" + facet_name) window.history.replaceState(null, null, window.location.href + separator + encode_url); } ajax_url_p = page_url = window.location.href ajaxReq(ajax_url_p); facet_index++ }