From acd0f000cac3da235f95364b3e50de9d567dfa0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=20Sch=C3=B6nmann?=
<102795185+tom-bywild@users.noreply.github.com>
Date: Thu, 5 Jan 2023 10:22:55 +0100
Subject: [PATCH] chore: update stats UI (#126)
* feat: add 1h range
* chore: update label generation
* chore: update crane-link
* chore: update breadcrumbs
---
web/scripts/generate-trends.ts | 2 +-
web/src/lib/blocks/views/Hero.svelte | 6 +-
web/src/lib/page/views/BasePageInit.svelte | 5 +-
web/src/lib/statistics/models/github.ts | 37 +++++++++-
.../github/stars/[range]/+page.server.ts | 2 +-
.../github/stars/[range]/+page.svelte | 68 ++++++++-----------
6 files changed, 77 insertions(+), 43 deletions(-)
diff --git a/web/scripts/generate-trends.ts b/web/scripts/generate-trends.ts
index c2e91a47..93c96db0 100644
--- a/web/scripts/generate-trends.ts
+++ b/web/scripts/generate-trends.ts
@@ -11,7 +11,7 @@ import path from 'node:path';
// @ts-ignore Issue w/ node types.
const cwd = process.cwd();
const base = path.join(cwd, 'static', 'data', 'stats');
-const ranges = ['6h', '12h', '24h', '48h', '72h', '1w', '2w', '1m'];
+const ranges = ['1h', '6h', '12h', '24h', '48h', '72h', '1w', '2w', '1m'];
/**
* Simple parser for CLI arguments.
diff --git a/web/src/lib/blocks/views/Hero.svelte b/web/src/lib/blocks/views/Hero.svelte
index db55a16b..fee17964 100644
--- a/web/src/lib/blocks/views/Hero.svelte
+++ b/web/src/lib/blocks/views/Hero.svelte
@@ -12,6 +12,9 @@
export let textVariant: 'dense' | 'fit' | undefined = undefined;
export let variant: 'prominent' | undefined = undefined;
+ let cn: string | undefined = undefined;
+ export { cn as class };
+
const isSingleLongTitle = checkForSingleLongTitle(title);
const defaultVariant = `
@@ -37,7 +40,8 @@
'h-full': height === 'full',
'flex-1': height === 'flex',
fixed: isFixed
- }
+ },
+ cn
)}
>
-
+{#if withBreadcrumb}
+
+{/if}
diff --git a/web/src/lib/statistics/models/github.ts b/web/src/lib/statistics/models/github.ts
index e27c590f..5a930023 100644
--- a/web/src/lib/statistics/models/github.ts
+++ b/web/src/lib/statistics/models/github.ts
@@ -1,6 +1,41 @@
import type { GithubTrendItem } from '../types/github';
-export const githubTrendRanges = ['6h', '12h', '24h', '48h', '72h', '1w', '2w', '1m'];
+export const githubTrendRanges = [
+ '1h',
+ '6h',
+ '12h',
+ '24h',
+ '48h',
+ '72h',
+ '1w',
+ '2w',
+ '1m'
+] as const;
+
+export function mapRangeToLabel(source: string) {
+ switch (source) {
+ case '1h':
+ return '1 hour';
+ case '6h':
+ return '6 hours';
+ case '12h':
+ return '12 hours';
+ case '24h':
+ return '24 hours';
+ case '48h':
+ return '48 hours';
+ case '72h':
+ return '72 hours';
+ case '1w':
+ return '1 week';
+ case '2w':
+ return '2 weeks';
+ case '1m':
+ return '1 month';
+ default:
+ return source;
+ }
+}
export async function fetchReposByStars(params: {
range: typeof githubTrendRanges[number];
diff --git a/web/src/routes/statistics/github/stars/[range]/+page.server.ts b/web/src/routes/statistics/github/stars/[range]/+page.server.ts
index 45b75042..5c69c28e 100644
--- a/web/src/routes/statistics/github/stars/[range]/+page.server.ts
+++ b/web/src/routes/statistics/github/stars/[range]/+page.server.ts
@@ -9,7 +9,7 @@ export const load: PageServerLoad = async ({ params, setHeaders }) => {
});
// @ts-expect-error Range not picked up by type inference.
- const range: string = params.range;
+ const range: typeof githubTrendRanges[number] = params.range;
if (!githubTrendRanges.includes(range)) {
throw error(401, `Invalid range: ${range}`);
diff --git a/web/src/routes/statistics/github/stars/[range]/+page.svelte b/web/src/routes/statistics/github/stars/[range]/+page.svelte
index 9eb915d2..83656bcc 100644
--- a/web/src/routes/statistics/github/stars/[range]/+page.svelte
+++ b/web/src/routes/statistics/github/stars/[range]/+page.svelte
@@ -9,6 +9,8 @@
import CommonControls from '$lib/controls/views/CommonControls.svelte';
import Link from '$lib/display/views/Link.svelte';
import BasePageInit from '$lib/page/views/BasePageInit.svelte';
+ import BreadcrumbMeta from '$lib/seo/views/BreadcrumbMeta.svelte';
+ import { mapRangeToLabel } from '$lib/statistics/models/github';
import clsx from 'clsx';
import type { PageServerData } from './$types';
@@ -16,35 +18,24 @@
const { items, ranges } = data;
let selectedRange = data.selectedRange;
-
- const mapRangeToLabel = (source: string) => {
- switch (source) {
- case '6h':
- return '6 hours';
- case '12h':
- return '12 hours';
- case '24h':
- return '24 hours';
- case '48h':
- return '48 hours';
- case '72h':
- return '72 hours';
- case '1w':
- return '1 week';
- case '2w':
- return '2 weeks';
- case '1m':
- return '1 month';
- default:
- return source;
- }
- };
+
@@ -56,9 +47,10 @@
subtitleSize="xl"
height="50"
variant="prominent"
+ theme="gradient-dark-zinc"
/>
-
+
Trends for last
@@ -90,13 +82,13 @@
{#each items as { original, trend, crane }}
-
+
+ {original.name}
+
by
@@ -143,14 +135,14 @@
-
+
{#if crane.packageSlug}
-
+
+ Available on CRAN/E
+
{/if}