From c7b3439fac4e76461e769889740fd4c23574ecf6 Mon Sep 17 00:00:00 2001 From: pleb Date: Tue, 4 Nov 2025 07:13:49 -0800 Subject: [PATCH] Add scorebar to mapCard on compare histories tool --- src/lib/components/MapActionButtons.svelte | 2 +- src/lib/components/MapCard.svelte | 43 +++++++++++++------ src/lib/utils/plebsaber-utils.ts | 4 +- .../tools/compare-histories/+page.svelte | 1 + 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/lib/components/MapActionButtons.svelte b/src/lib/components/MapActionButtons.svelte index ba4d69e..b6e5b27 100644 --- a/src/lib/components/MapActionButtons.svelte +++ b/src/lib/components/MapActionButtons.svelte @@ -62,7 +62,7 @@ : `https://beatsaver.com/search/hash/${hash}`; -
+ @@ -73,6 +79,9 @@ export let showPublished = true; {modeName} {beatsaverKey} /> +
+ +
{/if} @@ -197,6 +206,8 @@ export let showPublished = true; .meta-leading :global(.score-meter) { width: 100%; + max-width: 45%; + margin-left: auto; } .meta.compact-row { @@ -204,18 +215,30 @@ export let showPublished = true; gap: 0.35rem; } - .player { - flex: 1; - } - .actions { - margin-top: auto; + margin-top: 0.6rem; + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; } .body.compact-body .actions { margin-top: 0.3rem; } + .player { + flex: 1; + max-width: 45%; + margin-left: auto; + } + + .actions :global(.map-action-buttons) { + display: inline-flex; + flex-wrap: wrap; + gap: 0.5rem; + } + @media (max-width: 959px) { .card-wrapper.compact-wrapper { grid-template-columns: 1fr; @@ -240,10 +263,6 @@ export let showPublished = true; .meta.compact-row .meta-leading { width: 100%; } - - .meta.compact-row .player { - width: 100%; - } } :global(.difficulty-label) { diff --git a/src/lib/utils/plebsaber-utils.ts b/src/lib/utils/plebsaber-utils.ts index a4349ba..90b3892 100644 --- a/src/lib/utils/plebsaber-utils.ts +++ b/src/lib/utils/plebsaber-utils.ts @@ -11,6 +11,7 @@ export type MapMeta = { key?: string; coverURL?: string; mapper?: string; + score?: number; }; export type StarInfo = { @@ -180,7 +181,8 @@ export async function fetchBeatSaverMeta(hash: string): Promise songName: data?.metadata?.songName ?? data?.name ?? undefined, key: data?.id ?? undefined, coverURL: cover, - mapper: data?.uploader?.name ?? undefined + mapper: data?.uploader?.name ?? undefined, + score: typeof data?.stats?.score === 'number' ? data.stats.score : undefined }; } catch { // Fallback to CDN cover only diff --git a/src/routes/tools/compare-histories/+page.svelte b/src/routes/tools/compare-histories/+page.svelte index 462e5e5..ec412a6 100644 --- a/src/routes/tools/compare-histories/+page.svelte +++ b/src/routes/tools/compare-histories/+page.svelte @@ -241,6 +241,7 @@ modeName={item.difficulties[0]?.characteristic ?? 'Standard'} leaderboardId={item.leaderboardId} beatsaverKey={metaByHash[item.hash]?.key} + score={metaByHash[item.hash]?.score} /> {/each}