PageSourceSearch

https://www.nissan-global.com/EN/IR/NEWS_EVENT/ASSETS/JS/index.js

js nissan-global.com collected 2026-09-24 08:28:03 UTC 4,787 bytes, 145 lines download raw bytes

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.