diff options
Diffstat (limited to 'src/lib/List')
| -rw-r--r-- | src/lib/List/Anime/CompletedAnimeList.svelte | 28 | ||||
| -rw-r--r-- | src/lib/List/Anime/DueAnimeList.svelte | 35 |
2 files changed, 50 insertions, 13 deletions
diff --git a/src/lib/List/Anime/CompletedAnimeList.svelte b/src/lib/List/Anime/CompletedAnimeList.svelte index 76ec7207..1fa775c4 100644 --- a/src/lib/List/Anime/CompletedAnimeList.svelte +++ b/src/lib/List/Anime/CompletedAnimeList.svelte @@ -85,10 +85,32 @@ ); outdatedCompletedAnime.sort((a: Media, b: Media) => { - const difference = (anime: Media) => - anime.episodes - (anime.mediaListEntry || { progress: 0 }).progress; + switch ($settings.displayAnimeSort) { + case 'difference': { + const difference = (anime: Media) => + (anime.nextAiringEpisode?.episode === -1 + ? 99999 + : anime.nextAiringEpisode?.episode || -1) - + (anime.mediaListEntry || { progress: 0 }).progress; - return difference(a) - difference(b); + return difference(a) - difference(b); + } + + case 'end_date': + return ( + new Date(a.endDate.year, a.endDate.month - 1).getTime() - + new Date(b.endDate.year, b.endDate.month - 1).getTime() + ); + + case 'start_date': + return ( + new Date(a.startDate.year, a.startDate.month - 1).getTime() - + new Date(b.startDate.year, b.startDate.month - 1).getTime() + ); + + case 'time_remaining': + return (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999); + } }); if (!endTime) endTime = performance.now() - startTime; diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte index 1453baeb..8650590b 100644 --- a/src/lib/List/Anime/DueAnimeList.svelte +++ b/src/lib/List/Anime/DueAnimeList.svelte @@ -73,16 +73,31 @@ dueAnime = dueAnime.filter((media: Media) => media.nextAiringEpisode?.episode !== -1); dueAnime.sort((a: Media, b: Media) => { - if ($settings.displaySortedByDifference === true) { - const difference = (anime: Media) => - (anime.nextAiringEpisode?.episode === -1 - ? 99999 - : anime.nextAiringEpisode?.episode || -1) - - (anime.mediaListEntry || { progress: 0 }).progress; - - return difference(a) - difference(b); - } else { - return (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999); + switch ($settings.displayAnimeSort) { + case 'difference': { + const difference = (anime: Media) => + (anime.nextAiringEpisode?.episode === -1 + ? 99999 + : anime.nextAiringEpisode?.episode || -1) - + (anime.mediaListEntry || { progress: 0 }).progress; + + return difference(a) - difference(b); + } + + case 'end_date': + return ( + new Date(a.endDate.year, a.endDate.month - 1).getTime() - + new Date(b.endDate.year, b.endDate.month - 1).getTime() + ); + + case 'start_date': + return ( + new Date(a.startDate.year, a.startDate.month - 1).getTime() - + new Date(b.startDate.year, b.startDate.month - 1).getTime() + ); + + case 'time_remaining': + return (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999); } }); |