aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-23 03:45:05 -0800
committerFuwn <[email protected]>2023-12-23 03:45:05 -0800
commit5f1f9c467a1aa4e1b8d598ed29bb6e7a567f9b53 (patch)
tree382ccb36d27da108655753490d3e77b3da960364 /src/lib/Tools
parentfix(schedule): loading message order (diff)
downloaddue.moe-5f1f9c467a1aa4e1b8d598ed29bb6e7a567f9b53.tar.xz
due.moe-5f1f9c467a1aa4e1b8d598ed29bb6e7a567f9b53.zip
feat(wrapped): filter duplicates in merge
Diffstat (limited to 'src/lib/Tools')
-rw-r--r--src/lib/Tools/Wrapped.svelte21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/lib/Tools/Wrapped.svelte b/src/lib/Tools/Wrapped.svelte
index 4d3f6ec4..56c17942 100644
--- a/src/lib/Tools/Wrapped.svelte
+++ b/src/lib/Tools/Wrapped.svelte
@@ -346,13 +346,26 @@
await database.activities.bulkDelete((await database.activities.toArray()).map((m) => m.page));
};
- const mergeArraySort = (a: any, b: any) => [...a, ...b].sort((a, b) => b.meanScore - a.meanScore);
+ const mergeArraySort = (a: any, b: any, mode: 'tags' | 'genres') => {
+ let merged = [...a, ...b].sort((a, b) => b.meanScore - a.meanScore);
+
+ merged = merged.filter(
+ (item, index, self) =>
+ self.findIndex((itemToCompare) =>
+ mode === 'genres'
+ ? itemToCompare.genre === item.genre
+ : itemToCompare.tag.name === item.tag.name
+ ) === index
+ );
+
+ return merged;
+ };
const randomCoverFromTop10 = (
statistics: { anime: any; manga: any },
mode: 'tags' | 'genres'
) => {
- const top = mergeArraySort(statistics.anime[mode], statistics.manga[mode]);
+ const top = mergeArraySort(statistics.anime[mode], statistics.manga[mode], mode);
return mediaCover(top[Math.floor(Math.random() * top.length)].mediaIds[0]);
};
@@ -497,7 +510,7 @@
<div>
<b>Highest Rated Genres</b>
<ol>
- {#each mergeArraySort(wrapped.statistics.anime.genres, wrapped.statistics.manga.genres).slice(0, highestRatedCount) as genre}
+ {#each mergeArraySort(wrapped.statistics.anime.genres, wrapped.statistics.manga.genres, 'genres').slice(0, highestRatedCount) as genre}
<li>
<a
href={`https://anilist.co/search/anime?genres=${genre.genre}`}
@@ -524,7 +537,7 @@
<div>
<b>Highest Rated Tags</b>
<ol>
- {#each mergeArraySort(wrapped.statistics.anime.tags, wrapped.statistics.manga.tags).slice(0, highestRatedCount) as tag}
+ {#each mergeArraySort(wrapped.statistics.anime.tags, wrapped.statistics.manga.tags, 'tags').slice(0, highestRatedCount) as tag}
<li>
<a
href={`https://anilist.co/search/anime?genres=${tag.tag.name}`}