From 86f0c722bca4895756a2257c205224298ec5e46d Mon Sep 17 00:00:00 2001 From: JSR Date: Fri, 27 Mar 2026 20:51:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9C=8B=E6=9D=BF=E5=8A=A0=E6=89=A3?= =?UTF-8?q?=E5=88=86=E6=A8=A1=E5=BC=8F=E5=85=BC=E5=AE=B9delta=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=B9=B6=E4=BC=98=E5=8C=96=E4=B8=BB=E6=8C=87=E6=A0=87?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/BoardManager.tsx | 50 ++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/src/components/BoardManager.tsx b/src/components/BoardManager.tsx index bad19ff..c826f7b 100644 --- a/src/components/BoardManager.tsx +++ b/src/components/BoardManager.tsx @@ -308,9 +308,9 @@ const toStudentCards = (rows: any[]): BoardStudentCardData[] => { if (!name) return const data = row as Record - const hasAddScoreField = + let hasAddScoreField = "add_score" in data || "addScore" in data || "plus_score" in data || "plusScore" in data - const hasDeductScoreField = + let hasDeductScoreField = "deduct_score" in data || "deductScore" in data || "minus_score" in data || @@ -319,23 +319,37 @@ const toStudentCards = (rows: any[]): BoardStudentCardData[] => { const addScoreRaw = data.add_score ?? data.addScore ?? data.plus_score ?? data.plusScore const deductScoreRaw = data.deduct_score ?? data.deductScore ?? data.minus_score ?? data.minusScore + const delta = parseNumber(data.delta ?? data.score_delta ?? data.scoreDelta) + + let addScore = + addScoreRaw === null || addScoreRaw === undefined + ? hasAddScoreField + ? 0 + : undefined + : parseNumber(addScoreRaw) + let deductScore = + deductScoreRaw === null || deductScoreRaw === undefined + ? hasDeductScoreField + ? 0 + : undefined + : parseNumber(deductScoreRaw) + + if (!hasAddScoreField && !hasDeductScoreField && delta !== undefined) { + if (delta >= 0) { + hasAddScoreField = true + addScore = delta + } else { + hasDeductScoreField = true + deductScore = Math.abs(delta) + } + } cards.push({ key: `${name}-${index}`, name, score: parseNumber(data.score), - addScore: - addScoreRaw === null || addScoreRaw === undefined - ? hasAddScoreField - ? 0 - : undefined - : parseNumber(addScoreRaw), - deductScore: - deductScoreRaw === null || deductScoreRaw === undefined - ? hasDeductScoreField - ? 0 - : undefined - : parseNumber(deductScoreRaw), + addScore, + deductScore, hasAddScoreField, hasDeductScoreField, rewardPoints: parseNumber(data.reward_points ?? data.rewardPoints), @@ -850,10 +864,14 @@ ORDER BY reward_points DESC, score DESC`, const useSplitScore = list.scoreDisplayMode === "split" const hasSplitScore = Boolean(item.hasAddScoreField || item.hasDeductScoreField) const primaryMetric = useSplitScore - ? item.addScore !== undefined + ? item.addScore !== undefined && item.addScore !== 0 ? { label: t("board.metrics.addScore"), value: item.addScore } - : item.deductScore !== undefined + : item.deductScore !== undefined && item.deductScore !== 0 ? { label: t("board.metrics.deductScore"), value: item.deductScore } + : item.addScore !== undefined + ? { label: t("board.metrics.addScore"), value: item.addScore } + : item.deductScore !== undefined + ? { label: t("board.metrics.deductScore"), value: item.deductScore } : item.score !== undefined ? { label: t("board.metrics.totalScore"), value: item.score } : item.rewardPoints !== undefined