aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-11-16 10:52:29 -0800
committerFuwn <[email protected]>2023-11-16 10:52:29 -0800
commit9b00508ef8565aedde954c109a4bb79a13f0f8fb (patch)
tree422f60f696974572caa73e7136414d3ee1928126 /src/lib
parentrefactor(wrapped): merge filters (diff)
downloaddue.moe-9b00508ef8565aedde954c109a4bb79a13f0f8fb.tar.xz
due.moe-9b00508ef8565aedde954c109a4bb79a13f0f8fb.zip
feat(wrapped): media format filters
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Tools/Wrapped.svelte132
1 files changed, 75 insertions, 57 deletions
diff --git a/src/lib/Tools/Wrapped.svelte b/src/lib/Tools/Wrapped.svelte
index 1d0c6761..107d70b0 100644
--- a/src/lib/Tools/Wrapped.svelte
+++ b/src/lib/Tools/Wrapped.svelte
@@ -25,6 +25,15 @@
let transparency = false;
let darkTheme = true;
let watermark = false;
+ let includeMusic = false;
+ let includeSpecials = false;
+
+ $: {
+ includeMusic = includeMusic;
+ includeSpecials = includeSpecials;
+
+ update().then(() => {});
+ }
onMount(async () => {
if (user !== undefined) {
@@ -34,68 +43,73 @@
currentUserIdentity = JSON.parse($userIdentity);
currentUserIdentity.name = currentUserIdentity.name;
-
- const currentYear = new Date(Date.now()).getFullYear();
-
- animeList = (
- await mediaListCollection(
- user,
- currentUserIdentity,
- Type.Anime,
- $anime,
- $lastPruneTimes.anime,
- true,
- true
- )
- )
- .filter(
- (item, index, self) =>
- self.findIndex((itemToCompare) => itemToCompare.id === item.id) === index &&
- item.mediaListEntry?.startedAt.year === currentYear
- )
- .sort((a, b) => {
- if (a.mediaListEntry?.score === undefined) {
- return 1;
- } else if (b.mediaListEntry?.score === undefined) {
- return -1;
- } else {
- return b.mediaListEntry?.score - a.mediaListEntry?.score;
- }
- });
- mangaList = (
- await mediaListCollection(
- user,
- currentUserIdentity,
- Type.Manga,
- $manga,
- $lastPruneTimes.manga,
- true,
- true
- )
- )
- .filter(
- (item, index, self) =>
- self.findIndex((itemToCompare) => itemToCompare.id === item.id) === index &&
- item.mediaListEntry?.startedAt.year === currentYear
- )
- .sort((a, b) => {
- if (a.mediaListEntry?.score === undefined) {
- return 1;
- } else if (b.mediaListEntry?.score === undefined) {
- return -1;
- } else {
- return b.mediaListEntry?.score - a.mediaListEntry?.score;
- }
- });
-
- for (const media of animeList) {
- episodes += media.mediaListEntry?.progress || 0;
- }
} else {
currentUserIdentity.id = -2;
}
+
+ await update();
});
+ const update = async () => {
+ const currentYear = new Date(Date.now()).getFullYear();
+
+ animeList = (
+ await mediaListCollection(
+ user,
+ currentUserIdentity,
+ Type.Anime,
+ $anime,
+ $lastPruneTimes.anime,
+ true,
+ true
+ )
+ )
+ .filter(
+ (item, index, self) =>
+ self.findIndex((itemToCompare) => itemToCompare.id === item.id) === index &&
+ item.mediaListEntry?.startedAt.year === currentYear &&
+ (includeMusic ? true : item.format !== 'MUSIC')
+ )
+ .sort((a, b) => {
+ if (a.mediaListEntry?.score === undefined) {
+ return 1;
+ } else if (b.mediaListEntry?.score === undefined) {
+ return -1;
+ } else {
+ return b.mediaListEntry?.score - a.mediaListEntry?.score;
+ }
+ });
+ mangaList = (
+ await mediaListCollection(
+ user,
+ currentUserIdentity,
+ Type.Manga,
+ $manga,
+ $lastPruneTimes.manga,
+ true,
+ true
+ )
+ )
+ .filter(
+ (item, index, self) =>
+ self.findIndex((itemToCompare) => itemToCompare.id === item.id) === index &&
+ item.mediaListEntry?.startedAt.year === currentYear
+ )
+ .sort((a, b) => {
+ if (a.mediaListEntry?.score === undefined) {
+ return 1;
+ } else if (b.mediaListEntry?.score === undefined) {
+ return -1;
+ } else {
+ return b.mediaListEntry?.score - a.mediaListEntry?.score;
+ }
+ });
+
+ 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);
@@ -323,6 +337,10 @@
<input type="checkbox" bind:checked={transparency} /> Enable background transparency
</li>
<li>
+ <input type="checkbox" bind:checked={includeMusic} /> Include music
+ <input type="checkbox" bind:checked={includeSpecials} /> Include specials and OVAs
+ </li>
+ <li>
<a href={'#'} on:click={() => screenshot(true)}>Generate dark themed image</a>
</li>
<li>