1;(function() { 2 'use strict'; 3 4 const param = new URLSearchParams(location.search); 5 const sections = ['news', 'upcoming', 'archived']; 6 7 // Helper function to update sort year or select nav based on URL parameters 8 const updateBasedOnUrlParams = (section, paramSuffix, targetClass, toggleClass) => { 9 const paramKey = `${section}_${paramSuffix}`; 10 const paramValue = param.get(paramKey); 11 12 if (paramValue) { 13 const $target = $(`.jsResultArea[data-select-section="${section}"] ${targetClass}`); 14 const $element = $target.find(`option[value="${paramValue}"], .jsSelectNavItem[data-type="${paramValue}"]`); 15 16 if ($element.length > 0) { 17 if (toggleClass) { 18 $element.addClass(toggleClass).siblings().removeClass(toggleClass); 19 } else { 20 $target.val(paramValue); 21 } 22 } 23 } 24 }; 25 26 // Initial display based on URL parameters 27 sections.forEach(section => { 28 updateBasedOnUrlParams(section, 'year', '.jsSortYear'); 29 updateBasedOnUrlParams(section, 'select', '.jsSelectNav', 's_current'); 30 }); 31 32 $('.jsResultArea').each((i, ele) => { 33 const $resultArea = $(ele); 34 const $resultItem = $resultArea.find('.jsResultItem'); 35 const $sortYear = $resultArea.find('.jsSortYear'); 36 const $moreArea = $resultArea.find('.jsMoreArea'); 37 const $moreItem = $moreArea.find('.jsMoreItem'); 38 const $moreBtnWrap = $moreArea.find('.jsMoreBtnWrap'); 39 const $moreBtn = $moreBtnWrap.find('.jsMoreBtn'); 40 const $selectNav = $resultArea.find('.jsSelectNav'); 41 const $selectNavItem = $selectNav.find('.jsSelectNavItem'); 42 const showNum = Number($moreArea.data('shownum')) || 12; 43 44 let selectedYear; 45 let selectedType; 46 47 const filterItems = () => { 48 selectedYear = $sortYear.val(); 49 const $filteredItems = selectedType === undefined ? 50 $resultItem : 51 selectedType === 0 ? 52 $resultItem.filter(`[data-type]`) : 53 $resultItem.filter(`[data-type="${selectedType}"]`); 54 55 $filteredItems.removeClass('u_disNon').each(function() { 56 const showFlag = $(this).attr('data-year') === selectedYear; 57 $(this).toggleClass('u_disNon', !showFlag); 58 }); 59 }; 60 61 const updateItemsVisibility = () => { 62 selectedType = $selectNavItem.filter('.s_current').data('type'); 63 const $filteredItems = selectedYear === undefined ? 64 $resultItem : 65 $resultItem.filter(`[data-year="${selectedYear}"]`); 66 67 $filteredItems.removeClass('u_disNon').each(function() { 68 const showFlag = selectedType === 0 || $(this).attr('data-type') === selectedType; 69 $(this).toggleClass('u_disNon', !showFlag); 70 }); 71 }; 72 73 const updateMoreItems = () => { 74 let $filteredItems; 75 76 if (selectedYear && selectedType !== undefined) { 77 $filteredItems = selectedType === 0 ? 78 $moreItem.filter(`[data-year="${selectedYear}"][data-type]`) : 79 $moreItem.filter(`[data-year="${selectedYear}"][data-type="${selectedType}"]`); 80 } else if (selectedYear) { 81 $filteredItems = $moreItem.filter(`[data-year="${selectedYear}"]`); 82 } else if (selectedType !== undefined) { 83 $filteredItems = selectedType === 0 ? 84 $moreItem.filter(`[data-type]`) : 85 $moreItem.filter(`[data-type="${selectedType}"]`); 86 } else { 87 $filteredItems = $moreItem; 88 } 89 90 $filteredItems.removeClass('u_disNon').filter(':visible').each((i, ele) => { 91 if (i >= showNum) { 92 $(ele).addClass('u_disNon'); 93 } 94 }); 95 $moreBtnWrap.toggle($filteredItems.filter('.u_disNon').length > 0); 96 }; 97 98 $sortYear.on('change', () => { 99 filterItems(); 100 updateItemsVisibility(); 101 updateMoreItems(); 102 }); 103 104 $selectNavItem.on('click', function() { 105 $(this).addClass('s_current').siblings().removeClass('s_current'); 106 filterItems(); 107 updateItemsVisibility(); 108 updateMoreItems(); 109 }); 110 111 $moreBtn.on('click', function() { 112 let $filteredItems; 113 114 if (selectedYear && selectedType !== undefined) { 115 $filteredItems = selectedType === 0 ? 116 $moreItem.filter(`[data-year="${selectedYear}"][data-type]`) : 117 $moreItem.filter(`[data-year="${selectedYear}"][data-type="${selectedType}"]`); 118 } else if (selectedYear) { 119 $filteredItems = $moreItem.filter(`[data-year="${selectedYear}"]`); 120 } else if (selectedType !== undefined) { 121 $filteredItems = selectedType === 0 ? 122 $moreItem.filter(`[data-type]`) : 123 $moreItem.filter(`[data-type="${selectedType}"]`); 124 } else { 125 $filteredItems = $moreItem; 126 } 127 128 $filteredItems.filter('.u_disNon').each((i, ele) => { 129 if (i < showNum) { 130 $(ele).removeClass('u_disNon'); 131 } 132 }); 133 134 if ($filteredItems.filter('.u_disNon').length === 0) { 135 $moreBtnWrap.hide(); 136 } 137 138 return false; 139 }); 140 141 filterItems();
142 updateItemsVisibility(); 143 updateMoreItems(); 144 }); 145})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.