mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-10 16:19:24 -07:00
feat(stats): replace per-day trends section with library summary
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
|||||||
filterHiddenAnimeData,
|
filterHiddenAnimeData,
|
||||||
pruneHiddenAnime,
|
pruneHiddenAnime,
|
||||||
} from './anime-visibility';
|
} from './anime-visibility';
|
||||||
|
import { LibrarySummarySection } from './LibrarySummarySection';
|
||||||
|
|
||||||
function SectionHeader({ children }: { children: React.ReactNode }) {
|
function SectionHeader({ children }: { children: React.ReactNode }) {
|
||||||
return (
|
return (
|
||||||
@@ -113,12 +114,14 @@ export function TrendsTab() {
|
|||||||
if (error) return <div className="text-ctp-red p-4">Error: {error}</div>;
|
if (error) return <div className="text-ctp-red p-4">Error: {error}</div>;
|
||||||
if (!data) return null;
|
if (!data) return null;
|
||||||
|
|
||||||
|
const librarySummaryAsPoints = data.librarySummary.map((row) => ({
|
||||||
|
epochDay: 0,
|
||||||
|
animeTitle: row.title,
|
||||||
|
value: row.watchTimeMin,
|
||||||
|
}));
|
||||||
|
|
||||||
const animeTitles = buildAnimeVisibilityOptions([
|
const animeTitles = buildAnimeVisibilityOptions([
|
||||||
data.animePerDay.episodes,
|
librarySummaryAsPoints,
|
||||||
data.animePerDay.watchTime,
|
|
||||||
data.animePerDay.cards,
|
|
||||||
data.animePerDay.words,
|
|
||||||
data.animePerDay.lookups,
|
|
||||||
data.animeCumulative.episodes,
|
data.animeCumulative.episodes,
|
||||||
data.animeCumulative.cards,
|
data.animeCumulative.cards,
|
||||||
data.animeCumulative.words,
|
data.animeCumulative.words,
|
||||||
@@ -126,24 +129,6 @@ export function TrendsTab() {
|
|||||||
]);
|
]);
|
||||||
const activeHiddenAnime = pruneHiddenAnime(hiddenAnime, animeTitles);
|
const activeHiddenAnime = pruneHiddenAnime(hiddenAnime, animeTitles);
|
||||||
|
|
||||||
const filteredEpisodesPerAnime = filterHiddenAnimeData(
|
|
||||||
data.animePerDay.episodes,
|
|
||||||
activeHiddenAnime,
|
|
||||||
);
|
|
||||||
const filteredWatchTimePerAnime = filterHiddenAnimeData(
|
|
||||||
data.animePerDay.watchTime,
|
|
||||||
activeHiddenAnime,
|
|
||||||
);
|
|
||||||
const filteredCardsPerAnime = filterHiddenAnimeData(data.animePerDay.cards, activeHiddenAnime);
|
|
||||||
const filteredWordsPerAnime = filterHiddenAnimeData(data.animePerDay.words, activeHiddenAnime);
|
|
||||||
const filteredLookupsPerAnime = filterHiddenAnimeData(
|
|
||||||
data.animePerDay.lookups,
|
|
||||||
activeHiddenAnime,
|
|
||||||
);
|
|
||||||
const filteredLookupsPerHundredPerAnime = filterHiddenAnimeData(
|
|
||||||
data.animePerDay.lookupsPerHundred,
|
|
||||||
activeHiddenAnime,
|
|
||||||
);
|
|
||||||
const filteredAnimeProgress = filterHiddenAnimeData(
|
const filteredAnimeProgress = filterHiddenAnimeData(
|
||||||
data.animeCumulative.episodes,
|
data.animeCumulative.episodes,
|
||||||
activeHiddenAnime,
|
activeHiddenAnime,
|
||||||
@@ -221,7 +206,7 @@ export function TrendsTab() {
|
|||||||
type="line"
|
type="line"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<SectionHeader>Library — Per Day</SectionHeader>
|
<SectionHeader>Library — Summary</SectionHeader>
|
||||||
<AnimeVisibilityFilter
|
<AnimeVisibilityFilter
|
||||||
animeTitles={animeTitles}
|
animeTitles={animeTitles}
|
||||||
hiddenAnime={activeHiddenAnime}
|
hiddenAnime={activeHiddenAnime}
|
||||||
@@ -239,19 +224,7 @@ export function TrendsTab() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<StackedTrendChart title="Videos per Title" data={filteredEpisodesPerAnime} />
|
<LibrarySummarySection rows={data.librarySummary} hiddenTitles={activeHiddenAnime} />
|
||||||
<StackedTrendChart title="Watch Time per Title (min)" data={filteredWatchTimePerAnime} />
|
|
||||||
<StackedTrendChart
|
|
||||||
title="Cards Mined per Title"
|
|
||||||
data={filteredCardsPerAnime}
|
|
||||||
colorPalette={cardsMinedStackedColors}
|
|
||||||
/>
|
|
||||||
<StackedTrendChart title="Words Seen per Title" data={filteredWordsPerAnime} />
|
|
||||||
<StackedTrendChart title="Lookups per Title" data={filteredLookupsPerAnime} />
|
|
||||||
<StackedTrendChart
|
|
||||||
title="Lookups/100w per Title"
|
|
||||||
data={filteredLookupsPerHundredPerAnime}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<SectionHeader>Library — Cumulative</SectionHeader>
|
<SectionHeader>Library — Cumulative</SectionHeader>
|
||||||
<StackedTrendChart title="Watch Time Progress (min)" data={filteredWatchTimeProgress} />
|
<StackedTrendChart title="Watch Time Progress (min)" data={filteredWatchTimeProgress} />
|
||||||
|
|||||||
Reference in New Issue
Block a user