功能:選隊面板新增「同步今日場次」,從 history 表撈今天資料覆蓋本機場次
摘要: - 選隊伍面板新增「同步今日場次」按鈕,按下後把每個人的今日場次更新成 DB 的數字 - 後端新增 GET /api/history/play-counts?from=&to=,回傳區間內每人上場場數與比賽數 - 按鈕上方顯示同步結果或錯誤訊息;手機版同步按鈕獨占一列 根本原因: - 今日場次只存在本機 localStorage,跨裝置記分時其他裝置上傳的場次本機看不到, 自動選擇與「今日 N 場」提示就不準 影響: - 任一裝置按同步後,今日場次會與 DB history 表一致(以 DB 為準,覆蓋本機) - 輪空/那個等佔位字不計場次 修法: - server.mjs 新增 play-counts 端點,依 time 區間查 history.players 累計 - api.ts 新增 loadHistoryPlayCounts;App.tsx 以本機時區當天 00:00 起算 24 小時區間並 setPlayCounts - ScoreboardPage 加入同步狀態與按鈕,App.css 調整按鈕列為三欄、≤720px 改兩列 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+16
@@ -3,6 +3,7 @@ import { NavLink, Route, Routes, useLocation, useNavigate } from 'react-router-d
|
||||
import './App.css'
|
||||
import {
|
||||
createLiveRoom,
|
||||
loadHistoryPlayCounts,
|
||||
loadMatchResults,
|
||||
releaseLiveRoom,
|
||||
rememberCertNotAfter,
|
||||
@@ -939,6 +940,20 @@ function App() {
|
||||
})
|
||||
}
|
||||
|
||||
// 從 DB 的 history 表撈今天(本機時區)的比賽,把每個人的今日場次覆蓋成 DB 的數字。
|
||||
// 跨裝置記分時,其他裝置上傳的場次本機沒有紀錄,靠這個補齊。
|
||||
const syncPlayCountsFromHistory = async () => {
|
||||
const dayStart = new Date()
|
||||
dayStart.setHours(0, 0, 0, 0)
|
||||
const from = Math.floor(dayStart.getTime() / 1000)
|
||||
const to = from + 24 * 60 * 60
|
||||
|
||||
const result = await loadHistoryPlayCounts(from, to)
|
||||
setPlayCounts(result.counts)
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
const skipUpload = () => {
|
||||
void finalizeLiveRoom().finally(() => {
|
||||
recordPlayedMatch()
|
||||
@@ -1140,6 +1155,7 @@ function App() {
|
||||
voiceAnnouncement={voiceAnnouncement}
|
||||
targetDate={targetDate}
|
||||
onApplyMatchup={applyMatchup}
|
||||
onSyncPlayCounts={syncPlayCountsFromHistory}
|
||||
onCloseFinishDialog={closeSettlementDialog}
|
||||
onConfirmUpload={uploadSettledMatch}
|
||||
onOpenFinishDialog={openSettlementDialog}
|
||||
|
||||
Reference in New Issue
Block a user