document.addEventListener("DOMContentLoaded", function () {
var searchBar = document.getElementById("search-bar");
var degreeFilter = document.getElementById("degree-filter");
var graduationDateFilter = document.getElementById("graduation-date-filter");
var filterButton = document.getElementById("filter-button");
var alumniResults = document.getElementById("alumni-results");
var alumniBlocks = Array.from(document.querySelectorAll(".alumni-block"));
// ÇÐÀ§ ÃßÃâ (»õ ¾ç½Ä: .alumni-degree-badge, ±âÁ¸ ¾ç½Ä: .details)
function getDegree(block) {
var badge = block.querySelector(".alumni-degree-badge");
if (badge) return badge.textContent.trim();
var details = block.querySelector(".details");
if (details) {
if (details.textContent.indexOf("PhD") !== -1) return "PhD";
if (details.textContent.indexOf("M.S.") !== -1) return "M.S.";
}
return "";
}
// Á¹¾÷³âµµ ÃßÃâ
function getYear(block) {
var el = block.querySelector(".graduation-year");
if (!el) return "";
var match = el.textContent.match(/(\d{4})/);
return match ? match[1] : "";
}
// ÇÐÀ§ Ä«¿îÆ® ¾÷µ¥ÀÌÆ®
function updateDegreeCounts() {
var degreeCounts = { PhD: 0, "M.S.": 0 };
var total = 0;
alumniBlocks.forEach(function (block) {
total++;
var deg = getDegree(block);
if (deg === "PhD") degreeCounts.PhD++;
else if (deg === "M.S.") degreeCounts["M.S."]++;
});
degreeFilter.innerHTML =
'' +
'' +
'';
}
// ¿¬µµº° ±×·ìÇÎ + ·»´õ¸µ
function renderAlumniWithDividers(filteredBlocks) {
if (!filteredBlocks) filteredBlocks = alumniBlocks;
var grouped = {};
filteredBlocks.forEach(function (block) {
var year = getYear(block) || "Unknown";
if (!grouped[year]) grouped[year] = [];
grouped[year].push(block);
});
var sortedYears = Object.keys(grouped).sort(function (a, b) { return b - a; });
alumniResults.innerHTML = "";
sortedYears.forEach(function (year) {
var divider = document.createElement("div");
divider.className = "year-divider";
divider.textContent = "Graduation Year: " + year;
alumniResults.appendChild(divider);
grouped[year].forEach(function (block) {
alumniResults.appendChild(block);
});
});
}
// ÇÊÅÍ Àû¿ë
function applyFilters() {
var searchValue = searchBar.value.toLowerCase();
var degreeValue = degreeFilter.value;
var yearValue = graduationDateFilter.value.trim();
var filtered = alumniBlocks.filter(function (block) {
// À̸§
var nameEl = block.querySelector(".alumni-name");
var name = nameEl ? nameEl.textContent.toLowerCase() : "";
// ÇÐÀ§
var degree = getDegree(block);
// Á¹¾÷³âµµ
var gradYear = getYear(block);
// Àüü ÅØ½ºÆ® (°Ë»ö¿ë)
var fullText = block.textContent.toLowerCase();
var matchName = !searchValue || name.indexOf(searchValue) !== -1 || fullText.indexOf(searchValue) !== -1;
var matchDegree = !degreeValue || degree === degreeValue;
var matchYear = !yearValue || gradYear === yearValue;
return matchName && matchDegree && matchYear;
});
renderAlumniWithDividers(filtered);
// Ä«¿îÆ® ¾÷µ¥ÀÌÆ®
var allOption = degreeFilter.querySelector('option[value=""]');
if (allOption) {
allOption.textContent = "All Degrees (" + filtered.length + "¸í)";
}
}
// À̺¥Æ® ¹ÙÀεù
filterButton.addEventListener("click", applyFilters);
searchBar.addEventListener("input", applyFilters);
degreeFilter.addEventListener("change", applyFilters);
graduationDateFilter.addEventListener("input", applyFilters);
// ÃʱâÈ
updateDegreeCounts();
renderAlumniWithDividers();
});