@@ -360,17 +298,15 @@
|
- |
-
-
+
2017
4 檔
-
-
-
-
+
+
+
| 01/01 280 |
-
+
| 01/08 09+導演版 |
-
+
| 06/13 10+導演版 |
-
+
| 12/05 05+導演版 |
-
-
-
- |
-
-
+
2018
3 檔
-
-
-
-
+
+
+
| 05/05 25 |
-
+
| 09/30 05 |
-
+
| 10/28 05+導演版 |
-
-
-
- |
-
-
+
2019
5 檔
-
-
-
-
+
+
+
| 05/31 06 |
-
+
| 06/08 11 |
-
+
| 07/05 04 |
-
+
| 09/20 10 |
-
+
| 10/25 11 |
-
-
-
- |
-
-
+
2020
2 檔
-
-
-
-
+
+
+
| 01/10 10+導演版 |
-
+
| 10/09 10+導演版 |
-
-
-
- |
-
@@ -773,10 +676,6 @@
const tabBtns = document.querySelectorAll(".variety-shows-tabs .tab-btn");
const slots = document.querySelectorAll(".variety-shows-table-slot");
const input = document.getElementById("variety-shows-search");
- const yearNav = document.querySelector(".variety-shows-year-nav");
- const yearNavBtns = yearNav
- ? yearNav.querySelectorAll("button[data-year]")
- : [];
const hashToTab = {
"captain-brothers": "captain",
"each-rampage": "solo",
@@ -787,69 +686,61 @@
return hashToTab[id] || "all";
}
- function setYearOpen(yearRow, open) {
- const btn = yearRow.querySelector(".variety-table__year-toggle");
- const panel = yearRow.querySelector(".variety-table__year-panel");
- if (!btn || !panel) return;
- btn.setAttribute("aria-expanded", open ? "true" : "false");
- panel.hidden = !open;
- yearRow.classList.toggle("is-open", open);
+ function rowMatchesSearch(row, q) {
+ if (!q) return true;
+ const air = row.querySelector(".variety-table__air-date");
+ const airData = air
+ ? `${air.dataset.airStart || ""} ${air.dataset.airEnd || ""}`
+ : "";
+ const text = (row.textContent + " " + airData)
+ .replace(/\s+/g, " ")
+ .trim()
+ .toLowerCase();
+ return text.includes(q);
}
- function visibleSlotWithYears() {
- return Array.from(slots).find(
- (slot) => !slot.hidden && slot.querySelector(".variety-table__year-row")
- );
- }
+ function syncYearRows(slot) {
+ const q = (input && input.value.trim().toLowerCase()) || "";
+ slot.querySelectorAll(".variety-table__year-row").forEach((yearRow) => {
+ const year = yearRow.dataset.year;
+ const btn = yearRow.querySelector(".variety-table__year-toggle");
+ const detailRows = slot.querySelectorAll(
+ `.variety-table__show-row[data-year="${year}"]`
+ );
+ let anyMatch = false;
+ const yearOpen = yearRow.classList.contains("is-open");
- function setActiveYearNav(year) {
- yearNavBtns.forEach((btn) => {
- btn.classList.toggle("is-active", btn.dataset.year === year);
+ detailRows.forEach((row) => {
+ const match = rowMatchesSearch(row, q);
+ if (match) anyMatch = true;
+ row.hidden = !yearOpen || (q && !match);
+ });
+
+ if (q && anyMatch) {
+ yearRow.classList.add("is-open");
+ if (btn) btn.setAttribute("aria-expanded", "true");
+ detailRows.forEach((row) => {
+ row.hidden = !rowMatchesSearch(row, q);
+ });
+ }
+
+ yearRow.hidden = Boolean(q) && !anyMatch;
});
}
- function openYear(year) {
- const slot = visibleSlotWithYears();
- if (!slot) return;
- const yearRow = slot.querySelector(
- `.variety-table__year-row[data-year="${year}"]`
- );
- if (!yearRow) return;
- setYearOpen(yearRow, true);
- setActiveYearNav(year);
- yearRow.scrollIntoView({ behavior: "smooth", block: "nearest" });
- }
-
- function updateYearNavVisibility(tab) {
- if (!yearNav) return;
- yearNav.hidden = tab === "solo";
+ function setYearOpen(yearRow, open) {
+ const btn = yearRow.querySelector(".variety-table__year-toggle");
+ if (!btn) return;
+ btn.setAttribute("aria-expanded", open ? "true" : "false");
+ yearRow.classList.toggle("is-open", open);
+ const slot = yearRow.closest(".variety-shows-table-slot");
+ if (slot) syncYearRows(slot);
}
function filterVisibleRows() {
- const q = (input && input.value.trim().toLowerCase()) || "";
slots.forEach((slot) => {
if (slot.hidden) return;
- slot.querySelectorAll(".variety-table__year-row").forEach((yearRow) => {
- const detailRows = yearRow.querySelectorAll(
- ".variety-table--inner tbody tr"
- );
- let anyMatch = false;
- detailRows.forEach((row) => {
- const air = row.querySelector(".variety-table__air-date");
- const airData = air
- ? `${air.dataset.airStart || ""} ${air.dataset.airEnd || ""}`
- : "";
- const text = (row.textContent + " " + airData)
- .replace(/\s+/g, " ")
- .trim()
- .toLowerCase();
- const match = !q || text.includes(q);
- row.hidden = !match;
- if (match) anyMatch = true;
- });
- if (q && anyMatch) setYearOpen(yearRow, true);
- yearRow.hidden = Boolean(q) && !anyMatch;
- });
+ syncYearRows(slot);
});
}
@@ -858,16 +749,9 @@
const yearRow = btn.closest(".variety-table__year-row");
const open = btn.getAttribute("aria-expanded") !== "true";
setYearOpen(yearRow, open);
- if (open && yearRow.dataset.year) {
- setActiveYearNav(yearRow.dataset.year);
- }
});
});
- yearNavBtns.forEach((btn) => {
- btn.addEventListener("click", () => openYear(btn.dataset.year));
- });
-
function showTab(tab) {
tabBtns.forEach((btn) => {
const on = btn.dataset.tab === tab;
@@ -878,8 +762,6 @@
const keys = (slot.dataset.showTabs || "").split(/\s+/);
slot.hidden = !keys.includes(tab);
});
- updateYearNavVisibility(tab);
- if (tab === "solo") setActiveYearNav("");
filterVisibleRows();
}