feat(channels): 전체 선택을 현재 활성 국가 탭으로 한정
전체 선택/카운트/선택 영상 보기를 보이는 카드 기준으로 동작, 탭 전환 시 숨겨진 카드는 자동 선택 해제. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
24f964364a
commit
db8452d1ea
@ -198,20 +198,27 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 현재 탭에서 보이는(숨겨지지 않은) 카드의 체크박스만 반환
|
||||
function visibleCheckboxes() {
|
||||
return Array.from(document.querySelectorAll('.channel-checkbox'))
|
||||
.filter(cb => { const c = cb.closest('.card'); return c && c.style.display !== 'none'; });
|
||||
}
|
||||
|
||||
function updateSelectedCount() {
|
||||
const checkboxes = document.querySelectorAll('.channel-checkbox');
|
||||
const checked = document.querySelectorAll('.channel-checkbox:checked');
|
||||
const count = checked.length;
|
||||
const visibleBoxes = visibleCheckboxes();
|
||||
const checkedVisible = visibleBoxes.filter(cb => cb.checked);
|
||||
const count = checkedVisible.length;
|
||||
|
||||
document.getElementById('selectedCount').innerText = count;
|
||||
document.getElementById('viewSelectedBtn').style.display = count > 0 ? 'flex' : 'none';
|
||||
|
||||
// Update select all checkbox state
|
||||
// 전체 선택 상태는 '보이는 탭' 기준
|
||||
const selectAll = document.getElementById('selectAllCheckbox');
|
||||
if (count === 0) {
|
||||
selectAll.checked = false;
|
||||
selectAll.indeterminate = false;
|
||||
} else if (count === checkboxes.length) {
|
||||
} else if (count === visibleBoxes.length) {
|
||||
selectAll.checked = true;
|
||||
selectAll.indeterminate = false;
|
||||
} else {
|
||||
@ -245,8 +252,8 @@
|
||||
|
||||
function toggleSelectAll() {
|
||||
const isChecked = document.getElementById('selectAllCheckbox').checked;
|
||||
const checkboxes = document.querySelectorAll('.channel-checkbox');
|
||||
checkboxes.forEach(cb => cb.checked = isChecked);
|
||||
// 현재 활성 탭에서 보이는 카드만 선택/해제
|
||||
visibleCheckboxes().forEach(cb => cb.checked = isChecked);
|
||||
updateSelectedCount();
|
||||
}
|
||||
|
||||
@ -285,9 +292,14 @@
|
||||
const visible = (code === 'ALL') || (g === code);
|
||||
card.style.display = visible ? '' : 'none';
|
||||
if (visible) shown++;
|
||||
else { // 숨겨진 카드는 선택 해제(전체 선택/선택 영상 보기를 현재 탭으로 한정)
|
||||
const cb = card.querySelector('.channel-checkbox');
|
||||
if (cb) cb.checked = false;
|
||||
}
|
||||
});
|
||||
const empty = document.getElementById('emptyCountry');
|
||||
if (empty) empty.style.display = shown === 0 ? 'block' : 'none';
|
||||
updateSelectedCount();
|
||||
}
|
||||
function updateCountryTabCounts() {
|
||||
const counts = { ALL: 0, KR: 0, JP: 0, US: 0, ETC: 0 };
|
||||
|
||||
Loading…
Reference in New Issue
Block a user