From 562639f75f6ce4477e17bb1b76033f0d3d847f14 Mon Sep 17 00:00:00 2001 From: JSR Date: Fri, 20 Mar 2026 18:51:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E6=94=AF=E6=8C=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8/=E5=8D=A1=E7=89=87/=E7=BD=91=E6=A0=BC=E4=B8=89?= =?UTF-8?q?=E7=A7=8D=E5=AD=A6=E7=94=9F=E8=A7=86=E5=9B=BE=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/BoardManager.tsx | 76 +++++++++++++++++++++++++++------ src/i18n/locales/en-US.json | 12 ++++++ src/i18n/locales/zh-CN.json | 12 ++++++ 3 files changed, 86 insertions(+), 14 deletions(-) diff --git a/src/components/BoardManager.tsx b/src/components/BoardManager.tsx index 96aefcb..f505822 100644 --- a/src/components/BoardManager.tsx +++ b/src/components/BoardManager.tsx @@ -21,6 +21,7 @@ interface StudentListConfig { id: string name: string sql: string + viewMode: BoardStudentViewMode } interface BoardConfig { @@ -40,6 +41,8 @@ interface BoardManagerProps { canManage: boolean } +type BoardStudentViewMode = "list" | "card" | "grid" + interface BoardStudentCardData { key: string name: string @@ -66,6 +69,7 @@ const createDefaultList = (): StudentListConfig => ({ id: makeId(), name: "学生积分榜", sql: getDefaultSql(), + viewMode: "card", }) const createDefaultBoard = (): BoardConfig => ({ @@ -86,6 +90,10 @@ const normalizeBoards = (input: unknown): BoardConfig[] => { name: typeof list?.name === "string" && list.name.trim() ? list.name.trim() : "学生列表", sql: typeof list?.sql === "string" && list.sql.trim() ? list.sql : getDefaultSql(), + viewMode: + list?.viewMode === "list" || list?.viewMode === "card" || list?.viewMode === "grid" + ? list.viewMode + : "card", })) .filter((list: StudentListConfig) => list.sql.trim()) : [] @@ -421,7 +429,8 @@ ORDER BY reward_points DESC, score DESC`, { id: makeId(), name: t("board.newList"), - sql: getDefaultSql(), + sql: getDefaultSql(), + viewMode: "card", }, ], } @@ -594,6 +603,19 @@ ORDER BY reward_points DESC, score DESC`, onChange={(presetId) => applyPreset(activeBoard.id, list.id, presetId)} disabled={!canManage} /> +