feat(结果): 判完之后测试点一格一格亮起来,错的那格写着第几组
Deploy / deploy (push) Canceled after 0s

借小丑牌结算时一张张牌亮起来:结果里每组测试点一个方块,从左往右依次亮,
对的绿、错的红并写组号,不到 1 秒亮完,提示和按钮亮完才出来,全对时亮完再放烟花。
大字和「通过几个」判完马上就有;只播刚交的那条,刷新、看旧提交、系统减少动画都直接全亮。
提交详情多给每组对没对(只有对错,不带数据),比赛照旧不给。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-26 09:56:32 +08:00
1 parent 1a173f75d7
commit 36b3cd6b21
8 files changed
+375 -144

No files matched your search

+21
View File
@@ -65,6 +65,25 @@ export const useSubmissionStore = defineStore("submission", () => {
revealResult("custom")
trial.runCustom({ ...codeStore.code }, { problemId: problem.id, contestId: problem.contestId })
}
/**
* 测试点一格一格亮(结果页签里的 CaseBlocks)只播一次,而且只播这一页上刚交、刚判完的那条:
* 刷新、切页签回来、看以前的提交都直接全亮。系统设了「减少动画」的不播。
* 烟花(SubmissionEffects)按同一个判断决定要不要等方块亮完
*/
const reducedMotion = usePreferredReducedMotion()
const revealedCases = new Set<string>()
function shouldRevealCases(id: string | undefined) {
return (
!!id &&
reducedMotion.value !== "reduce" &&
id === monitor.submissionId.value &&
!revealedCases.has(id)
)
}
function markCasesRevealed(id: string) {
revealedCases.add(id)
}
const isFormatting = ref(false)
const isSubmittingRequest = ref(false)
@@ -206,6 +225,8 @@ export const useSubmissionStore = defineStore("submission", () => {
resultSeq,
resultSegment,
revealResult,
shouldRevealCases,
markCasesRevealed,
runSamples,
runCustom,
isFormatting,