?$(document).ready(function () { const SITECORE_VALUES = { LANG: $('#lang').val(), SEARCH_RESULT_LINK: $('#searchResultLink').val(), DEFAULT_CATEGORY_ID: $('#defaultCategoryID').val(), DEFAULT_SUBCATEGORY_ID: $('#defaultSubCategoryID').val(), SUBCATEGORY_TEXT: $('#subCategoryText').val() }; // categoryMap(categoryId, categoryObject) var categoryMap = new Map(); // subCategoryMap(subCategoryId, categoryId) var subCategoryMap = new Map(); // childrenCategoryMap(categoryId, category.children) var childrenCategoryMap = new Map(); var targetNode = document.getElementById('category-select'); var config = { attributes: true }; var callback = function (mutationsList, observer) { // Use traditional 'for loops' for IE 11 for (let i = 0; i < mutationsList.length; i++) { let mutation = mutationsList[i]; if (mutation.type === 'attributes' && mutation.attributeName === "aria-activedescendant") { loadSubCategoryOption(targetNode.getAttribute('aria-activedescendant')); $('#search-box-button-2').text(SITECORE_VALUES.SUBCATEGORY_TEXT); $('#subCategory-select').attr('aria-activedescendant', ''); } } }; var observer = new MutationObserver(callback); observer.observe(targetNode, config); $.get( '/webapi/GetCategoryRest', { lang: SITECORE_VALUES.LANG }, function (data) { if (data) { // ¥«¥Æ¥´¥ê¤È¥µ¥Ö¥«¥Æ¥´¥ê¤Î¥É¥í¥Ã¥×¥À¥¦¥ó¥Ü¥Ã¥¯¥¹¥Ç©`¥¿³õÆÚ»¯ data.categories.forEach(function (category, index, array) { // ¥«¥Æ¥´¥ê·Ç±íʾ¤ÎˆöºÏ¡¢„IÀí¤ò¥¹¥­¥Ã¥×¤¹¤ë if (category.categorytreedisplayoff_flag == "TRUE") { return false; } var option = createOptionElement(category.category_id, category.name); $('#category-select').append(option); childrenCategoryMap.set(category.category_id, category.children); categoryMap.set(category.category_id, category); category.children.forEach(function (subCategory, index, array) { if (subCategory.categorytreedisplayoff_flag == "TRUE") { return false; } subCategory.parentCategoryId = category.category_id; // subCategory¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤Ù¤Æ¤ÎÇéˆó¤¬¤Þ¤È¤Þ¤ë subCategoryMap.set(subCategory.category_id, subCategory); }); }); // ¥Ç¥Õ¥©¥ë¥È¥«¥Æ¥´¥ê¤È¥Ç¥Õ¥©¥ë¥È¥µ¥Ö¥«¥Æ¥´¥ê¤Î¥Ç©`¥¿³õÆÚ»¯ observer.disconnect(); selectDefaultCategory(); observer.observe(targetNode, config); } } ); function loadSubCategoryOption(categoryId) // void function { if (typeof($('#search-box-button-2').attr('disabled')) != "undefined"){ $('#search-box-button-2').removeAttr('disabled'); } $('#subCategory-select').empty(); var defaultSubOption = createOptionElement('all-subCategory', SITECORE_VALUES.SUBCATEGORY_TEXT); //crate default option! $('#subCategory-select').append(defaultSubOption); if (categoryId && childrenCategoryMap.has(categoryId)) { childrenCategoryMap.get(categoryId).forEach(function (subCategory, index, array) { if (subCategory.categorytreedisplayoff_flag == "TRUE") { return false; } // Case15523 ¡¸/MEMSÕñ„Ó×Ó¡¹±íÓ›¤È¡¸Ë®¾§°kÕñÆ÷¡¹¤Îßx’kÖ«Ï÷³ý if (subCategory.category_id === 'cgsubResonators') { subCategory.name = subCategory.name.replace('/MEMSÕñ„Ó×Ó', '').replace('/MEMSгÕñÆ÷', '').replace('/MEMS Resonators', ''); } if (subCategory.category_id === 'cgsubCrystalOscillators') { return false; } var option = createOptionElement(subCategory.category_id, subCategory.name); $('#subCategory-select').append(option); }); } if ($('#subCategory-select').find('li').length == 1) { $('#search-box-button-2').attr("disabled", true); } } function createOptionElement(val, name) { var $option = $('
  • ').attr('id', val).text(name); return $option; } function selectDefaultCategory() { var isValidCategory = (SITECORE_VALUES.DEFAULT_CATEGORY_ID && categoryMap.has(SITECORE_VALUES.DEFAULT_CATEGORY_ID)); var isValidSubCategory = (SITECORE_VALUES.DEFAULT_SUBCATEGORY_ID && subCategoryMap.has(SITECORE_VALUES.DEFAULT_SUBCATEGORY_ID)); // ¥Ç¥Õ¥©¥ë¥È¥«¥Æ¥´¥ê¥Ç©`¥¿¤¬´æÔÚ¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¥«¥Æ¥´¥ê¥Ç©`¥¿¤¬ÓЄ¿¤¹¤ë¡£ if (isValidCategory) { // ¥«¥Æ¥´¥ê¤Î¸î¤êµ±¤Æ loadSubCategoryOption(SITECORE_VALUES.DEFAULT_CATEGORY_ID); bindLi('category-select', 'search-box-button-1', categoryMap.get(SITECORE_VALUES.DEFAULT_CATEGORY_ID).name, 'li[id=' + SITECORE_VALUES.DEFAULT_CATEGORY_ID + ']'); } // ¥Ç¥Õ¥©¥ë¥È¥µ¥Ö¥«¥Æ¥´¥ê¥Ç©`¥¿¤¬´æÔÚ¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¥µ¥Ö¥«¥Æ¥´¥ê¥Ç©`¥¿¤¬ÓЄ¿¤¹¤ë¡£ if (isValidSubCategory) { var parentCategoryId = subCategoryMap.get(SITECORE_VALUES.DEFAULT_SUBCATEGORY_ID).parentCategoryId; if (parentCategoryId == SITECORE_VALUES.DEFAULT_CATEGORY_ID) { bindLi('subCategory-select', 'search-box-button-2', categoryMap.get(parentCategoryId).name + ' ' + subCategoryMap.get(SITECORE_VALUES.DEFAULT_SUBCATEGORY_ID).name, 'li[id=' + SITECORE_VALUES.DEFAULT_SUBCATEGORY_ID + ']'); } // defaultCategoryID¤¬²»Õý£¨Î´ÔO¶¨¤Þ¤¿¤Ï´æÔÚ¤·¤Ê¤¤¤Ê¤É£©¤Î¤¿¤á¤ËÓH¥«¥Æ¥´¥ê¤ÈÒ»Ö¤·¤Ê¤¤ˆöºÏ¤ÏdefaultSubCategoryID¤òßx’k¤·¡¢ÓH¥«¥Æ¥´¥ê¤òÔO¶¨¤¹¤ë else if (!isValidCategory) { // ¥«¥Æ¥´¥ê¤Î¸î¤êµ±¤Æ loadSubCategoryOption(parentCategoryId); bindLi('category-select', 'search-box-button-1', categoryMap.get(parentCategoryId).name, 'li[id=' + parentCategoryId + ']'); bindLi('subCategory-select', 'search-box-button-2', categoryMap.get(parentCategoryId).name + ' ' + subCategoryMap.get(SITECORE_VALUES.DEFAULT_SUBCATEGORY_ID).name, 'li[id=' + SITECORE_VALUES.DEFAULT_SUBCATEGORY_ID + ']'); } //¤â¤·¡¢ÓH¥«¥Æ¥´¥ê¤¬Ò»Ö¤·¤Ê¤¤ˆöºÏ¤ÏdefaultCategoryID¤òƒžÏȤ¹¤ë£¨defaultSubCategoryID¤Ïßx’k¤·¤Ê¤¤£© } } function getUrl() { var categoryId = $('#category-select').find('li[aria-selected="true"]').attr("id"); if (categoryId == 'all-category') { categoryId = null; } var subCategoryId = $('#subCategory-select').find('li[aria-selected="true"]').attr("id"); if (subCategoryId == 'all-subCategory') { subCategoryId = null; } var targetCategoryId = subCategoryId || categoryId; var url = ""; // ¥«¥Æ¥´¥ê¤¬ßx’k¤µ¤ì¤Æ¤Ê¤«¤Ã¤¿¤é if (!targetCategoryId) { return SITECORE_VALUES.SEARCH_RESULT_LINK; } var tagetCategoryObj = subCategoryMap.get(targetCategoryId) || categoryMap.get(targetCategoryId); // Íⲿ¥ê¥ó¥¯¤¬ÔO¶¨¤µ¤ì¤Æ¤¤¤¿ˆöºÏ if (tagetCategoryObj && tagetCategoryObj.url) { return tagetCategoryObj.url; // external url } // ¥«¥Æ¥´¥ê¤¬ßx’k¤µ¤ì¤Æ¤¤¤Æ, Íⲿ¥ê¥ó¥¯¤Ç¤Ï¤Ê¤¤ˆöºÏ return SITECORE_VALUES.SEARCH_RESULT_LINK + "?cate=" + targetCategoryId; } function bindLi(ulid, buttonid, buttonText, liTag) { $('#' + ulid).find('li[aria-selected="true"]').removeAttr('aria-selected'); $('#' + buttonid).text(buttonText); $('#' + ulid).find(liTag).attr('aria-selected', 'true').click(); } $('#categorySearch01SearchButton').off('click').on('click', function () { var url = getUrl(); window.open(url, '_blank'); }); $('#categorySearch01SearchButton_sp').off('click').on('click', function () { var url = getUrl(); window.open(url, '_blank'); }); });