PageSourceSearch

https://backnumber.info/static/original/fanclub/plugin/js/checkbox_calendar.js

js backnumber.info collected 2026-09-24 21:49:19 UTC 7,300 bytes, 221 lines download raw bytes

1$(function(){
2	var all_flg = false;
3
4	// ==画面読み込み時のチェックボックスとインフォ表示の制御==
5
6	// URLパラメータに保持している選択情報を画面に反映
7	let selection = [];
8	var isUserTags = false;
9	var isParamTag = false;
10	var checkboxes = document.querySelectorAll('input[name="schedule"]');
11	var params = new URLSearchParams(window.location.search);
12	params.forEach((value, key) => {
13		if ( key == "selection"){
14			// チェックリストに保持
15			selection = value.split(',');
16		} 
17	});
18	if (selection.length === 0){
19		// URLパラメータが無い場合(初期表示)
20		// 推しグループ選択があればそれにチェックを入れる
21		var userTags = $('[name="usersInfoTags"]');
22		if (userTags.length > 0) {
23			isUserTags = true;
24			checkboxes.forEach(function(checkbox) {
25				if (checkbox.value.includes("tag")) {
26					// いったんすべてチェックOFF
27					checkbox.checked = false;
28					userTags.each(function() {
29					var userTagVal = $(this).val();
30						if (checkbox.value == ("tag-" + userTagVal)) {
31							// お気に入りタグはチェックON
32							console.log("お気に入りタグ:" + checkbox.value + ":" + ("tag-" + userTagVal));
33							checkbox.checked = true;
34						} 
35					});
36				}
37			});
38		}
39	} else {
40		// URLパラメータ指定の項目にチェックを入れる
41		isParamTag = true;
42		checkboxes.forEach(function(checkbox) {
43				checkbox.checked = false;
44				selection.forEach(function(selectedTag) {
45				if (checkbox.value == selectedTag) {
46					checkbox.checked = true;
47				}
48			});
49		});
50	}
51
52	// 推しグループ登録 または URLパラメータにタグ指定がある場合はall_flgをONにする
53	if (!isParamTag && isUserTags){
54		// 初期表示かつお気に入りタグがある場合
55		all_flg = true;
56	} else if (!isParamTag){
57		// 初期表示かつお気に入りタグが無い場合
58		all_flg = false;
59	} else if (isParamTag && !selection.includes('schedule_all')){
60		// リンク遷移後の画面表示 かつ allが選択されていない場合
61		all_flg = true;
62	}
63
64	$('input').click(function() {
65		// 選択したtagやcatの値が入る
66		var check_val = $(this).val();
67
68		if (all_flg == false){
69			if(check_val !== 'schedule_all') {
70				//$('.infoList .schedule-block').hide();
71				$('.infoList .schedule-block').addClass('calendar--hidden').removeClass('calendar--show');
72				$(this).parents("ul").find("li input").prop("checked",false);
73				$(this).prop("checked",true);
74				//$('.'+check_val).show();
75				$('.'+check_val).addClass('calendar--show').removeClass('calendar--hidden');
76				all_flg = true;
77			}
78		}
79		var check = $(this).prop("checked");
80		// チェックしたのがscheduleだった場合(エビダンではここに入ることはない)
81		if(check_val == 'schedule') {
82			if(check == true) {
83				$('input:checkbox').prop("checked",true);
84				$('[name="schedule"]').each(function() {
85					var check_val = $(this).val();
86					//$('.'+check_val).css('display','block');
87					$('.'+check_val).addClass('calendar--show').removeClass('calendar--hidden');
88				});
89			} else {
90				$('input:checkbox').prop("checked",false);
91				$('[name="schedule"]').each(function() {
92				var check_val = $(this).val();
93					//$('.'+check_val).css('display','none');
94					$('.'+check_val).addClass('calendar--hidden').removeClass('calendar--show');
95				});
96			}
97
98		//チェックしたのがスケジュールALLだった場合
99		} else if(check_val == 'schedule_all'){
100			if(check == true) {
101				$('[name="schedule"]').prop("checked",true);
102				$('[name="schedule"]').each(function() {
103					var check_val = $(this).val();
104					//$('.'+check_val).css('display','block');
105					$('.'+check_val).addClass('calendar--show').removeClass('calendar--hidden');
106				});
107				var dame2 = 0;
108				$('input:checkbox').each(function() {
109					if($(this).prop("checked") == false) {
110						dame2++;
111					}
112				});
113				if(dame2 == '1') {
114					$('#schedule_all').prop("checked",true);
115				}
116			} else {
117				$('[name="schedule"]').prop("checked",false);
118				$('#schedule_all').prop("checked",false);
119				$('[name="schedule"]').each(function() {
120				var check_val = $(this).val();
121					//$('.'+check_val).css('display','none');
122					$('.'+check_val).addClass('calendar--hidden').removeClass('calendar--show');
123				});
124			}
125			all_flg = false;
126		// チェックしたのがタグやカテゴリだった場合
127		} else {
128			if(check == true) {
129				//$('.'+check_val).css('display','block');
130				$('.'+check_val).addClass('calendar--show').removeClass('calendar--hidden');
131				var check_name = $(this).attr('name');
132				var dame = 0;
133				$('[name="'+check_name+'"]').each(function() {
134					if($(this).prop("checked") == false) {
135						var check_val = $(this).val();
136						//$('.'+check_val).css('display','none');
137						$('.'+check_val).addClass('calendar--hidden').removeClass('calendar--show');
138						dame++;
139					}
140				});
141
142				if(dame == '0' || dame == '1') {
143					$('[name="'+check_name+'"]').prop("checked",true);
144					var dame2 = 0;
145					$('input:checkbox').each(function() {
146						if($(this).prop("checked") == false) {
147							dame2++;
148						}
149					});
150
151					if(dame2 == '1') {
152						$('#schedule_all').prop("checked",true);
153					}
154
155				} else {
156					$('#schedule_all').prop("checked",false);
157				}
158			}else{
159				//$('.'+check_val).css('display','none');
160				$('.'+check_val).addClass('calendar--hidden').removeClass('calendar--show');
161				var check_name = $(this).attr('name');
162				$('#schedule_all').prop("checked",false);
163				// $('#all01').prop("checked",false);
164			}
165		}
166
167		// 空チェック
168		checkEmptyList();
169	});
170	$('document').ready(function() {
171	// category
172		for (let i = 1; i <= 11; i++) {
173			if($(`#schedule${i}`).prop('checked')) {
174				//$(`.tag__wrap${i}`).show();
175				$(`.tag__wrap${i}`).addClass('calendar--show').removeClass('calendar--hidden');
176			}
177			else{
178				//$(`.tag__wrap${i}`).hide();
179				$(`.tag__wrap${i}`).addClass('calendar--hidden').removeClass('calendar--show');
180				for (let c = 1; c <= 11; c++) {
181					if ($(`#category${c}`).prop('checked')) {
182						//$(`.cat__wrap${c}`).show();
183						$(`.cat__wrap${c}`).addClass('calendar--show').removeClass('calendar--hidden');
184					}
185				} 
186			}
187		}
188		//  all
189		if($("#schedule_all").prop('checked')){
190			//$('.schedule-block').show();
191			$('.schedule-block').addClass('calendar--show').removeClass('calendar--hidden');
192			var all_flg = false;
193		}
194	});
195});
196function checkEmptyList() {
197	// 空きチェック
198	const scheduleEntryBoxes = document.querySelectorAll('.schedule_entry_box');
199	scheduleEntryBoxes.forEach(scheduleEntryBox => {
200		const calendarShowElements = scheduleEntryBox.querySelectorAll('.calendar--show');
201		if (calendarShowElements.length > 0) {
202			scheduleEntryBox.classList.add('calendar--show');
203			scheduleEntryBox.classList.remove('calendar--hidden');
204		} else {
205			scheduleEntryBox.classList.add('calendar--hidden');
206			scheduleEntryBox.classList.remove('calendar--show');
207		}
208	});
209}
210
211// ==画面読み込み時のインフォ表示制御==
212$(window).on('load', function() {
213	// インフォ表示・非表示
214	$('[name="schedule"]').each(function() {
215		if ($(this).prop("checked") === false) {
216			var val = $(this).val();
217			$('.'+val).css('display','none');
218		}
219	});
220	return;
221});

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.