feat(frontend): add submission performance distribution previews

This commit is contained in:
2026-10-09 14:45:53 +08:00
parent f108e88c47
commit 62132324da
6 changed files with 607 additions and 2 deletions
+104
View File
@@ -0,0 +1,104 @@
import type { DistributionPoint } from '../lib/performance'
import type { Submission } from './preview'
interface PerformancePreview {
problemId: string
language: string
time: DistributionPoint[]
memory: DistributionPoint[]
}
// Fixed display fixtures, independent of real judge results. Memory values use KiB.
const previews: PerformancePreview[] = [
{
problemId: '1001',
language: 'Rust',
time: [
{ value: 0, count: 8 },
{ value: 4, count: 12 },
{ value: 8, count: 25 },
{ value: 12, count: 16 },
{ value: 16, count: 34 },
{ value: 20, count: 46 },
{ value: 24, count: 29 },
{ value: 28, count: 18 },
{ value: 32, count: 13 },
{ value: 40, count: 9 },
{ value: 48, count: 6 },
{ value: 64, count: 4 },
],
memory: [
{ value: 1024, count: 7 },
{ value: 1536, count: 19 },
{ value: 2048, count: 58 },
{ value: 2560, count: 41 },
{ value: 3072, count: 34 },
{ value: 3584, count: 22 },
{ value: 4096, count: 15 },
{ value: 5120, count: 13 },
{ value: 6144, count: 7 },
{ value: 8192, count: 4 },
],
},
{
problemId: '1002',
language: 'Python',
time: [
{ value: 24, count: 3 },
{ value: 32, count: 8 },
{ value: 40, count: 16 },
{ value: 48, count: 28 },
{ value: 56, count: 39 },
{ value: 64, count: 31 },
{ value: 72, count: 24 },
{ value: 80, count: 18 },
{ value: 96, count: 11 },
{ value: 112, count: 6 },
{ value: 128, count: 4 },
],
memory: [
{ value: 5120, count: 6 },
{ value: 6144, count: 18 },
{ value: 7168, count: 46 },
{ value: 8192, count: 53 },
{ value: 9216, count: 31 },
{ value: 10240, count: 19 },
{ value: 12288, count: 9 },
{ value: 14336, count: 6 },
],
},
{
problemId: '1003',
language: 'C++',
time: [
{ value: 16, count: 8 },
{ value: 24, count: 16 },
{ value: 34, count: 21 },
{ value: 40, count: 32 },
{ value: 48, count: 41 },
{ value: 56, count: 28 },
{ value: 64, count: 19 },
{ value: 80, count: 12 },
{ value: 96, count: 7 },
{ value: 120, count: 4 },
],
memory: [
{ value: 2048, count: 9 },
{ value: 3072, count: 24 },
{ value: 4096, count: 51 },
{ value: 5120, count: 47 },
{ value: 6144, count: 29 },
{ value: 8192, count: 17 },
{ value: 10240, count: 8 },
{ value: 12288, count: 3 },
],
},
]
export function findPerformancePreview(submission: Submission) {
if (submission.verdict !== 'AC') return undefined
return previews.find(
(preview) =>
preview.problemId === submission.problemId && preview.language === submission.language,
)
}
+3 -2
View File
@@ -264,7 +264,7 @@ export const verdictLabels: Record<Verdict, string> = {
CE: 'Compile Error',
Pending: '等待评测',
}
export const submissions: {
export interface Submission {
id: string
problemId: string
username: string
@@ -273,7 +273,8 @@ export const submissions: {
time: number | null
memory: number | null
created: string
}[] = [
}
export const submissions: Submission[] = [
{
id: '10248',
problemId: '1001',