From 7aca531f189f511a91aeb352a99fbdef166cef90 Mon Sep 17 00:00:00 2001 From: niruthikka24 Date: Sun, 26 Apr 2026 22:21:57 +0800 Subject: [PATCH] sorting implemented --- assets/js/bibsearch.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/assets/js/bibsearch.js b/assets/js/bibsearch.js index 8f2f031c..7c224a49 100644 --- a/assets/js/bibsearch.js +++ b/assets/js/bibsearch.js @@ -1,6 +1,29 @@ import { highlightSearchTerm } from "./highlight-search-term.js"; +const VENUE_PRIORITY = { TVCG: 1, VIS: 2, CHI: 3, PacificVis: 4 }; + +function venuePriority(abbr) { + for (const [venue, rank] of Object.entries(VENUE_PRIORITY)) { + if (abbr.startsWith(venue)) return rank; + } + return Object.keys(VENUE_PRIORITY).length + 1; +} + +function sortBibliographiesByVenue() { + document.querySelectorAll("ol.bibliography").forEach((ol) => { + const items = Array.from(ol.querySelectorAll(":scope > li")); + items.sort((a, b) => { + const abbrA = a.querySelector("abbr.badge")?.textContent.trim() ?? ""; + const abbrB = b.querySelector("abbr.badge")?.textContent.trim() ?? ""; + return venuePriority(abbrA) - venuePriority(abbrB); + }); + items.forEach((item) => ol.appendChild(item)); + }); +} + document.addEventListener("DOMContentLoaded", function () { + sortBibliographiesByVenue(); + // actual bibsearch logic const filterItems = (searchTerm) => { document.querySelectorAll(".bibliography, .unloaded").forEach((element) => element.classList.remove("unloaded"));