Add series count sorting
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user