From 5dbff4c3e00a89a91e261b738406a78b2f3b9423 Mon Sep 17 00:00:00 2001 From: Supra4E8C Date: Fri, 13 Feb 2026 16:11:28 +0800 Subject: [PATCH] fix(usage): make model stats card scrollable --- src/components/usage/ModelStatsCard.tsx | 158 ++++++++++++------------ src/pages/UsagePage.module.scss | 20 +++ 2 files changed, 100 insertions(+), 78 deletions(-) diff --git a/src/components/usage/ModelStatsCard.tsx b/src/components/usage/ModelStatsCard.tsx index f35d070..71ad330 100644 --- a/src/components/usage/ModelStatsCard.tsx +++ b/src/components/usage/ModelStatsCard.tsx @@ -59,95 +59,97 @@ export function ModelStatsCard({ modelStats, loading, hasPrices }: ModelStatsCar sortKey === key ? (sortDir === 'asc' ? 'ascending' : 'descending') : 'none'; return ( - + {loading ? (
{t('common.loading')}
) : sorted.length > 0 ? ( -
- - - - - - - - {hasPrices && ( - + + {sorted.map((stat) => ( + + + + + + {hasPrices && } + + ))} + +
- - - - - - - - +
+
+ + + + - )} - - - - {sorted.map((stat) => ( - - - - - } + {t('usage_stats.requests_count')}{arrow('requests')} + + + + + {hasPrices && ( + + )} - ))} - -
{stat.model} - - {stat.requests.toLocaleString()} - - ({stat.successCount.toLocaleString()}{' '} - {stat.failureCount.toLocaleString()}) - - - {formatCompactNumber(stat.tokens)} - = 95 - ? styles.statSuccess - : stat.successRate >= 80 - ? styles.statNeutral - : styles.statFailure - } + + {stat.cost > 0 ? formatUsd(stat.cost) : '--'} + + + + + +
+
{stat.model} + + {stat.requests.toLocaleString()} + + ({stat.successCount.toLocaleString()}{' '} + {stat.failureCount.toLocaleString()}) + + + {formatCompactNumber(stat.tokens)} + = 95 + ? styles.statSuccess + : stat.successRate >= 80 + ? styles.statNeutral + : styles.statFailure + } + > + {stat.successRate.toFixed(1)}% + + {stat.cost > 0 ? formatUsd(stat.cost) : '--'}
+
) : (
{t('usage_stats.no_data')}
diff --git a/src/pages/UsagePage.module.scss b/src/pages/UsagePage.module.scss index 854c943..64cc992 100644 --- a/src/pages/UsagePage.module.scss +++ b/src/pages/UsagePage.module.scss @@ -580,6 +580,26 @@ } } +// Fixed-height cards with internal scrolling (API details / model stats) +.detailsFixedCard { + display: flex; + flex-direction: column; + height: 520px; + overflow: hidden; + + @include mobile { + height: 420px; + } +} + +.detailsScroll { + flex: 1 1 auto; + min-height: 0; + overflow: auto; + -webkit-overflow-scrolling: touch; + overscroll-behavior: contain; +} + // Table (80%比例) .tableWrapper { overflow-x: auto;