From 34d997fc9de36a59c8fa9de41b13898afb9f1e3e Mon Sep 17 00:00:00 2001 From: Youwes09 Date: Fri, 27 Mar 2026 15:46:15 -0500 Subject: [PATCH] Feat: Chapter Organization --- src/components/pages/SeriesDetail.svelte | 46 +++++++++++++++++++++--- src/store/state.svelte.ts | 5 +-- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/src/components/pages/SeriesDetail.svelte b/src/components/pages/SeriesDetail.svelte index 9535c0c..797d795 100644 --- a/src/components/pages/SeriesDetail.svelte +++ b/src/components/pages/SeriesDetail.svelte @@ -69,7 +69,20 @@ } const sortDir = $derived(store.settings.chapterSortDir); - const sortedChapters = $derived(sortDir === "desc" ? [...chapters].reverse() : [...chapters]); + const sortMode = $derived(store.settings.chapterSortMode ?? "source"); + let sortMenuOpen = $state(false); + + const sortedChapters = $derived.by(() => { + const base = [...chapters]; + if (sortMode === "chapterNumber") { + base.sort((a, b) => a.chapterNumber - b.chapterNumber); + } else if (sortMode === "uploadDate") { + base.sort((a, b) => Number(a.uploadDate ?? 0) - Number(b.uploadDate ?? 0)); + } else { + base.sort((a, b) => a.sourceOrder - b.sourceOrder); + } + return sortDir === "desc" ? base.reverse() : base; + }); const totalPages = $derived(Math.ceil(sortedChapters.length / CHAPTERS_PER_PAGE)); const pageChapters = $derived(sortedChapters.slice((chapterPage - 1) * CHAPTERS_PER_PAGE, chapterPage * CHAPTERS_PER_PAGE)); const readCount = $derived(chapters.filter(c => c.isRead).length); @@ -461,10 +474,27 @@
- +
+ + {#if sortMenuOpen} + + {/if} +