Add series count sorting

This commit is contained in:
Codex
2026-05-27 10:28:51 +08:00
parent ac75c37e3f
commit 45017fbdfd
4 changed files with 24 additions and 12 deletions

View File

@@ -18,7 +18,7 @@ const app = {
saveTimer: null,
pendingImage: null,
drag: null,
seriesSort: "asc",
seriesSort: "timeAsc",
showOverlay: true,
};
@@ -173,8 +173,12 @@ function sortSeries(list) {
const skipA = a.annotation?.skipped ? 1 : 0;
const skipB = b.annotation?.skipped ? 1 : 0;
if (skipA !== skipB) return skipA - skipB;
const result = timeKey(a).localeCompare(timeKey(b)) || String(a.series_number || "").localeCompare(String(b.series_number || ""), undefined, { numeric: true });
return app.seriesSort === "asc" ? result : -result;
const timeResult = timeKey(a).localeCompare(timeKey(b)) || String(a.series_number || "").localeCompare(String(b.series_number || ""), undefined, { numeric: true });
const countResult = Number(a.count || 0) - Number(b.count || 0) || timeResult;
if (app.seriesSort === "timeDesc") return -timeResult;
if (app.seriesSort === "countAsc") return countResult;
if (app.seriesSort === "countDesc") return -countResult;
return timeResult;
});
}
@@ -762,8 +766,9 @@ function wireImageGestures() {
function setSort(direction) {
app.seriesSort = direction;
$("sortAsc").classList.toggle("active", direction === "asc");
$("sortDesc").classList.toggle("active", direction === "desc");
document.querySelectorAll("[data-sort]").forEach((button) => {
button.classList.toggle("active", button.dataset.sort === direction);
});
app.series = sortSeries(app.series);
renderSeries();
if (app.activeSeries) {
@@ -783,8 +788,9 @@ function wire() {
app.showOverlay = !app.showOverlay;
updateOverlay();
});
$("sortAsc").addEventListener("click", () => setSort("asc"));
$("sortDesc").addEventListener("click", () => setSort("desc"));
document.querySelectorAll("[data-sort]").forEach((button) => {
button.addEventListener("click", () => setSort(button.dataset.sort));
});
$("studySearch").addEventListener("input", () => {
clearTimeout(app.searchTimer);
app.searchTimer = setTimeout(loadStudies, 250);