aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-03-20 07:56:14 -0700
committerFuwn <[email protected]>2025-03-20 07:56:14 -0700
commit70fe91d8148815bab099b64aa14a927336d871e7 (patch)
tree3b729fa7a30bd21e68953a1023e831f9cedf56f2 /src
parentfeat(Landing): Update demo sizing (diff)
downloaddue.moe-70fe91d8148815bab099b64aa14a927336d871e7.tar.xz
due.moe-70fe91d8148815bab099b64aa14a927336d871e7.zip
feat: Add reverse sorting settings toggle and functionality
Diffstat (limited to 'src')
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte18
-rw-r--r--src/lib/List/CleanGrid.svelte4
-rw-r--r--src/lib/List/CleanList.svelte5
-rw-r--r--src/lib/Settings/Categories/Display.svelte24
-rw-r--r--src/stores/settings.ts2
5 files changed, 38 insertions, 15 deletions
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte
index 57e201d7..5a93c731 100644
--- a/src/lib/List/Anime/CleanAnimeList.svelte
+++ b/src/lib/List/Anime/CleanAnimeList.svelte
@@ -127,7 +127,14 @@
{/if}
{#if $settings.displayCoverModeAnime}
- <CleanGrid {media} {dummy} type="anime" {upcoming} {notYetReleased}>
+ <CleanGrid
+ {media}
+ {dummy}
+ type="anime"
+ {upcoming}
+ {notYetReleased}
+ reverseSort={$settings.displayReverseSort}
+ >
<div slot="title" let:title={anime} let:progress>
{#if !upcoming && !notYetReleased}
{pendingUpdate === anime.id ? progress + 1 : progress}{@html totalEpisodes(anime)}
@@ -149,7 +156,14 @@
</div>
</CleanGrid>
{:else}
- <CleanList {media} type="anime" {upcoming} {notYetReleased} {lastUpdatedMedia}>
+ <CleanList
+ {media}
+ type="anime"
+ {upcoming}
+ {notYetReleased}
+ {lastUpdatedMedia}
+ reverseSort={$settings.displayReverseSort}
+ >
<span slot="information" let:title={anime} let:progress>
{#if !upcoming || notYetReleased || !$settings.displayCountdownRightAligned}
<span class="opaque">|</span>
diff --git a/src/lib/List/CleanGrid.svelte b/src/lib/List/CleanGrid.svelte
index ec93a685..549d388f 100644
--- a/src/lib/List/CleanGrid.svelte
+++ b/src/lib/List/CleanGrid.svelte
@@ -12,15 +12,17 @@
export let type: 'anime' | 'manga';
export let upcoming = false;
export let notYetReleased = false;
+ export let reverseSort = false;
let uniqueID = new Date().getTime();
+ let processedMedia = reverseSort ? media.reverse() : media;
</script>
<div
class="covers"
style={`grid-template-columns: repeat(auto-fill, minmax(${$settings.displayCoverWidth}px, 1fr))`}
>
- {#each media as title}
+ {#each processedMedia as title}
{@const progress = (title.mediaListEntry || { progress: 0 }).progress}
{#if type === 'anime' ? upcoming || notYetReleased || progress !== (title.nextAiringEpisode?.episode || 9999) - 1 : progress != title.episodes}
diff --git a/src/lib/List/CleanList.svelte b/src/lib/List/CleanList.svelte
index 47811932..82f0709b 100644
--- a/src/lib/List/CleanList.svelte
+++ b/src/lib/List/CleanList.svelte
@@ -10,10 +10,13 @@
export let upcoming = false;
export let notYetReleased = false;
export let lastUpdatedMedia: number;
+ export let reverseSort = false;
+
+ let processedMedia = reverseSort ? media.reverse() : media;
</script>
<ul>
- {#each media as title}
+ {#each processedMedia as title}
{@const progress = (title.mediaListEntry || { progress: 0 }).progress}
{#if type === 'anime' ? upcoming || notYetReleased || progress !== (title.nextAiringEpisode?.episode || 9999) - 1 : progress !== title.episodes}
diff --git a/src/lib/Settings/Categories/Display.svelte b/src/lib/Settings/Categories/Display.svelte
index 1dbe4c95..e47bf2ae 100644
--- a/src/lib/Settings/Categories/Display.svelte
+++ b/src/lib/Settings/Categories/Display.svelte
@@ -315,6 +315,19 @@
<p />
+<b>List sort</b><br />
+<SettingCheckboxToggle setting="displayReverseSort" text="Reverse anime sort order" />
+<br />
+<SettingCheckboxToggle
+ setting="displaySortedByDifference"
+ text={$locale().settings.display.categories.media.fields.sortBy.title}
+>
+ <SettingHint lineBreak>
+ {$locale().settings.display.categories.media.fields.sortBy.hint}
+ </SettingHint>
+</SettingCheckboxToggle>
+<br />
+
<b>{$locale().settings.display.categories.media.title}</b><br />
<SettingCheckboxToggle
setting="displayHoverCover"
@@ -388,17 +401,6 @@
<br />
-<SettingCheckboxToggle
- setting="displaySortedByDifference"
- text={$locale().settings.display.categories.media.fields.sortBy.title}
->
- <SettingHint lineBreak>
- {$locale().settings.display.categories.media.fields.sortBy.hint}
- </SettingHint>
-</SettingCheckboxToggle>
-
-<br />
-
<select bind:value={$settings.displayAoButa} on:change={onHelperChange}>
<option value="mai">{$locale().settings.display.categories.helper.options.mai}</option>
<option value="mai_2">{$locale().settings.display.categories.helper.options.mai} #2</option>
diff --git a/src/stores/settings.ts b/src/stores/settings.ts
index 012e5207..4ccb5ca0 100644
--- a/src/stores/settings.ts
+++ b/src/stores/settings.ts
@@ -67,6 +67,7 @@ export interface Settings {
displayDataSaver: boolean;
debugDummyLists: boolean;
displayScheduleFilterList: boolean;
+ displayReverseSort: boolean;
}
const defaultSettings: Settings = {
@@ -110,6 +111,7 @@ const defaultSettings: Settings = {
displayFiltersIncludeCompleted: false,
displayDataSaver: false,
displayScheduleFilterList: false,
+ displayReverseSort: false,
// Debug
debugDummyLists: false,