diff options
Diffstat (limited to 'frontend/src/routes')
-rw-r--r-- | frontend/src/routes/+layout.svelte | 3 | ||||
-rw-r--r-- | frontend/src/routes/statistics/+page.svelte | 43 | ||||
-rw-r--r-- | frontend/src/routes/statistics/+page.ts | 1 |
3 files changed, 47 insertions, 0 deletions
diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 9a5f3d2..6af3b88 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -63,6 +63,9 @@ <span class="icon-base icon-[material-symbols--folder-zip]" /> </Link> <div class="mb-auto" /> + <Link href="/statistics/" title="Statistics" accel="gs"> + <span class="icon-base icon-[material-symbols--bar-chart]" /> + </Link> <Link href="/help/" title="Help" accel="?" target="_blank"> <span class="icon-base icon-[material-symbols--help]" /> </Link> diff --git a/frontend/src/routes/statistics/+page.svelte b/frontend/src/routes/statistics/+page.svelte new file mode 100644 index 0000000..7497bcf --- /dev/null +++ b/frontend/src/routes/statistics/+page.svelte @@ -0,0 +1,43 @@ +<script lang="ts"> + import { statisticsQuery } from '$gql/Queries'; + import Head from '$lib/components/Head.svelte'; + import Stat from '$lib/statistics/Stat.svelte'; + import StatGroup from '$lib/statistics/StatGroup.svelte'; + import { getContextClient } from '@urql/svelte'; + + $: query = statisticsQuery(getContextClient()); + $: totals = $query.data?.statistics.total; +</script> + +<Head section="Statistics" /> + +{#if $query.data && totals} + <div class="flex flex-row flex-wrap gap-8"> + <StatGroup title="Content"> + <Stat title="Archives" value={totals.archives} /> + <Stat title="Comics" value={totals.comics} /> + <Stat title="Images" value={totals.images} /> + <Stat title="Pages" value={totals.pages} /> + <Stat title="Dedup" value={(1 - totals.images / totals.pages) * 100} precision={2} unit="%" /> + </StatGroup> + <StatGroup title="Metadata"> + <Stat title="Namespaces" value={totals.namespaces} /> + <Stat title="Tags" value={totals.tags} /> + <Stat title="Artists" value={totals.artists} /> + <Stat title="Circles" value={totals.circles} /> + <Stat title="Characters" value={totals.characters} /> + <Stat title="Worlds" value={totals.worlds} /> + </StatGroup> + <StatGroup title="Average per Comic"> + <Stat title="Tags" value={totals.comic.tags / totals.comics} precision={2} /> + <Stat title="Artists" value={totals.comic.artists / totals.comics} precision={2} /> + <Stat title="Circles" value={totals.comic.circles / totals.comics} precision={2} /> + <Stat title="Characters" value={totals.comic.characters / totals.comics} precision={2} /> + <Stat title="Worlds" value={totals.comic.worlds / totals.comics} precision={2} /> + </StatGroup> + <StatGroup title="Average per Archive"> + <Stat title="Comics" value={totals.comics / totals.archives} precision={2} /> + <Stat title="Images" value={totals.images / totals.archives} precision={2} /> + </StatGroup> + </div> +{/if} diff --git a/frontend/src/routes/statistics/+page.ts b/frontend/src/routes/statistics/+page.ts new file mode 100644 index 0000000..d3c3250 --- /dev/null +++ b/frontend/src/routes/statistics/+page.ts @@ -0,0 +1 @@ +export const trailingSlash = 'always'; |