diff options
| author | Fuwn <[email protected]> | 2023-11-22 17:32:09 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-11-22 17:32:09 -0800 |
| commit | 07acfb05dcb902707594f14c318e9ea774ba8145 (patch) | |
| tree | ab273ad86c45a04ee0211a5bcc1853a66f5c79ff /src/lib | |
| parent | feat(upcoming): move to dedicated section (diff) | |
| download | due.moe-07acfb05dcb902707594f14c318e9ea774ba8145.tar.xz due.moe-07acfb05dcb902707594f14c318e9ea774ba8145.zip | |
feat(wrapped): optional reread filter
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/AniList/media.ts | 3 | ||||
| -rw-r--r-- | src/lib/Tools/Wrapped.svelte | 16 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/lib/AniList/media.ts b/src/lib/AniList/media.ts index 8e8f8fb5..7ba52589 100644 --- a/src/lib/AniList/media.ts +++ b/src/lib/AniList/media.ts @@ -42,6 +42,7 @@ export interface Media { progressVolumes: number; status: 'CURRENT' | 'PLANNING' | 'COMPLETED' | 'DROPPED' | 'PAUSED' | 'REPEATING'; score: number; + repeat: number; startedAt: { year: number; }; @@ -91,7 +92,7 @@ const collectionQueryTemplate = (type: Type, userId: number, includeCompleted: b title { romaji english native } nextAiringEpisode { episode timeUntilAiring } mediaListEntry { - progress progressVolumes status + progress progressVolumes status repeat score(format: POINT_100) startedAt { year } } startDate { year } diff --git a/src/lib/Tools/Wrapped.svelte b/src/lib/Tools/Wrapped.svelte index b9b3a1c8..56099af9 100644 --- a/src/lib/Tools/Wrapped.svelte +++ b/src/lib/Tools/Wrapped.svelte @@ -27,10 +27,12 @@ let watermark = false; let includeMusic = false; let includeSpecials = false; + let includeRepeats = false; $: { includeMusic = includeMusic; includeSpecials = includeSpecials; + includeRepeats = includeRepeats; update().then(() => {}); } @@ -68,7 +70,8 @@ (item, index, self) => self.findIndex((itemToCompare) => itemToCompare.id === item.id) === index && item.mediaListEntry?.startedAt.year === currentYear && - (includeMusic ? true : item.format !== 'MUSIC') + (includeMusic ? true : item.format !== 'MUSIC') && + (includeRepeats ? true : item.mediaListEntry?.repeat === 0) ) .sort((a, b) => { if (a.mediaListEntry?.score === undefined) { @@ -93,7 +96,8 @@ .filter( (item, index, self) => self.findIndex((itemToCompare) => itemToCompare.id === item.id) === index && - item.mediaListEntry?.startedAt.year === currentYear + item.mediaListEntry?.startedAt.year === currentYear && + (includeRepeats ? true : item.mediaListEntry?.repeat === 0) ) .sort((a, b) => { if (a.mediaListEntry?.score === undefined) { @@ -105,15 +109,16 @@ } }); + episodes = 0; + for (const media of animeList) { episodes += media.mediaListEntry?.progress || 0; } }; /* eslint-disable @typescript-eslint/no-explicit-any */ - const year = (statistic: { startYears: any }) => { - return statistic.startYears.find((y: { startYear: number }) => y.startYear === 2023); - }; + const year = (statistic: { startYears: any }) => + statistic.startYears.find((y: { startYear: number }) => y.startYear === 2023); const screenshot = async (dark = false) => { let element = document.querySelector('.categories-grid') as HTMLElement; @@ -333,6 +338,7 @@ <input type="checkbox" bind:checked={watermark} /> Enable watermark<br /> <input type="checkbox" bind:checked={transparency} /> Enable background transparency<br /> <input type="checkbox" bind:checked={includeMusic} /> Include music<br /> + <input type="checkbox" bind:checked={includeRepeats} /> Include rewatches & rereads<br /> <input type="checkbox" bind:checked={includeSpecials} /> Include specials and OVAs<br /> <input type="checkbox" bind:checked={abbreviateTitles} /> Fit long titles<br /> {#if abbreviateTitles} |