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);

View File

@@ -54,8 +54,10 @@
<div class="pane-head">
<h2>序列</h2>
<div class="series-head-tools">
<button id="sortAsc" class="sort-btn active">时间 ↑</button>
<button id="sortDesc" class="sort-btn">时间 ↓</button>
<button id="sortTimeAsc" class="sort-btn active" data-sort="timeAsc">时间 ↑</button>
<button id="sortTimeDesc" class="sort-btn" data-sort="timeDesc">时间 ↓</button>
<button id="sortCountAsc" class="sort-btn" data-sort="countAsc">张数 ↑</button>
<button id="sortCountDesc" class="sort-btn" data-sort="countDesc">张数 ↓</button>
<span id="seriesCount">0</span>
</div>
</div>

View File

@@ -287,17 +287,21 @@ button:disabled {
.series-head-tools {
display: flex;
align-items: center;
justify-content: flex-end;
flex-wrap: wrap;
gap: 6px;
max-width: 330px;
}
.sort-btn {
height: 26px;
padding: 0 8px;
min-width: 56px;
padding: 0 7px;
border: 1px solid var(--stroke);
border-radius: 7px;
background: #0b0f16;
color: var(--muted);
font-size: 12px;
font-size: 11px;
}
.sort-btn.active {