update default sneckMode

This commit is contained in:
kyuuseiryuu 2026-01-24 12:19:48 +09:00
parent 6b4c98b380
commit 053bfc3c2b
2 changed files with 7 additions and 2 deletions

View File

@ -4,6 +4,7 @@ import { useRequest } from "ahooks";
import { Spin, Tabs } from "antd"; import { Spin, Tabs } from "antd";
import { PlayerList } from "./PlayerList"; import { PlayerList } from "./PlayerList";
import { GroupingPrediction } from "./GroupingPrediction"; import { GroupingPrediction } from "./GroupingPrediction";
import { useMemo } from "react";
interface Props { interface Props {
game?: IEventInfo; game?: IEventInfo;
@ -15,6 +16,9 @@ export const GamePanel: React.FC<Props> = props => {
const info: MatchInfo = await (await fetch(`/api/match/${props.game.matchId}`)).json(); const info: MatchInfo = await (await fetch(`/api/match/${props.game.matchId}`)).json();
return info; return info;
}, { refreshDeps: [props] }); }, { refreshDeps: [props] });
const sneckMode = useMemo(() => {
return !!props.game?.title?.includes('争霸赛');
}, [props.game]);
return ( return (
<Spin spinning={fetchPlayers.loading}> <Spin spinning={fetchPlayers.loading}>
<Tabs <Tabs
@ -22,7 +26,7 @@ export const GamePanel: React.FC<Props> = props => {
{ {
key: 'groups', key: 'groups',
label: '分组预测', label: '分组预测',
children: <GroupingPrediction players={fetchPlayers.data?.players} /> children: <GroupingPrediction sneckMode={sneckMode} players={fetchPlayers.data?.players} />
}, },
{ {
key: 'players', key: 'players',

View File

@ -7,6 +7,7 @@ import { sneckGroup } from "../utils";
interface Props { interface Props {
players?: Player[]; players?: Player[];
sneckMode: boolean;
} }
type CustomPlayer = (Player & { index: number; id: string; }); type CustomPlayer = (Player & { index: number; id: string; });
@ -16,7 +17,7 @@ export const GroupingPrediction: React.FC<Props> = props => {
return props.players?.slice(0, maxPlayerSize)?.map((e, i) => ({ ...e, index: i + 1, id: `${i}-${e.name}-${e.score}` })) ?? []; return props.players?.slice(0, maxPlayerSize)?.map((e, i) => ({ ...e, index: i + 1, id: `${i}-${e.name}-${e.score}` })) ?? [];
}, [props.players, maxPlayerSize]); }, [props.players, maxPlayerSize]);
const [groupLen, setGroupLen] = useState(6); const [groupLen, setGroupLen] = useState(6);
const [sneckMode, setSneckMode] = useState(false); const [sneckMode, setSneckMode] = useState(props.sneckMode);
const chunkSize = useMemo(() => Math.floor((players.length ?? 0) / groupLen) || 1, [players, groupLen]); const chunkSize = useMemo(() => Math.floor((players.length ?? 0) / groupLen) || 1, [players, groupLen]);
const grouped = useMemo(() => { const grouped = useMemo(() => {
return chunk(players, chunkSize); return chunk(players, chunkSize);