feat: cm table next tree match + lock scores

This commit is contained in:
Thibaut Valentin 2025-12-07 19:45:09 +01:00
parent 489bfeb354
commit ef5b707697
2 changed files with 12 additions and 3 deletions

View File

@ -8,6 +8,7 @@ import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import {faCircleQuestion} from "@fortawesome/free-regular-svg-icons"; import {faCircleQuestion} from "@fortawesome/free-regular-svg-icons";
import {DrawGraph} from "../../result/DrawGraph.jsx"; import {DrawGraph} from "../../result/DrawGraph.jsx";
import {scorePrint, win} from "../../../utils/Tools.js"; import {scorePrint, win} from "../../../utils/Tools.js";
import {toast} from "react-toastify";
function CupImg() { function CupImg() {
return <img decoding="async" loading="lazy" width={"16"} height={"16"} className="wp-image-1635" return <img decoding="async" loading="lazy" width={"16"} height={"16"} className="wp-image-1635"
@ -278,7 +279,7 @@ function BuildTree({treeData, matches}) {
const trees = initTree(treeData); const trees = initTree(treeData);
const onMatchClick = (rect, matchId, __) => { const onMatchClick = (rect, matchId, __) => {
setCurrentMatch({matchSelect: matchId, matchNext: new TreeNode(matchId).nextMatchTree(trees)}); setCurrentMatch({matchSelect: matchId, matchNext: new TreeNode(matchId).nextMatchTree(trees.reverse())});
} }
const onClickVoid = () => { const onClickVoid = () => {
@ -288,7 +289,7 @@ function BuildTree({treeData, matches}) {
return <div> return <div>
<div ref={scrollRef} className="overflow-x-auto" style={{position: "relative"}}> <div ref={scrollRef} className="overflow-x-auto" style={{position: "relative"}}>
<DrawGraph root={trees} scrollRef={scrollRef} onMatchClick={onMatchClick} onClickVoid={onClickVoid} <DrawGraph root={trees} scrollRef={scrollRef} onMatchClick={onMatchClick} onClickVoid={onClickVoid}
matchSelect={currentMatch?.matchSelect} matchNext={currentMatch?.matchNext}/> matchSelect={currentMatch?.matchSelect} matchNext={currentMatch?.matchNext} size={23}/>
</div> </div>
{currentMatch?.matchSelect && <LoadingProvider><ScorePanel matchId={currentMatch?.matchSelect} matches={matches}/></LoadingProvider>} {currentMatch?.matchSelect && <LoadingProvider><ScorePanel matchId={currentMatch?.matchSelect} matches={matches}/></LoadingProvider>}
@ -381,6 +382,14 @@ function ScorePanel({matchId, matches}) {
if (!match || match?.end === end) if (!match || match?.end === end)
return; return;
if (end){
if (win(match?.scores) === 0 && match.categorie_ord === -42){
toast.error("Impossible de terminer un match nul en tournois.");
setEnd(false);
return;
}
}
setLoading(1) setLoading(1)
sendRequest('updateMatchEnd', {matchId: matchId, end}) sendRequest('updateMatchEnd', {matchId: matchId, end})
.finally(() => { .finally(() => {

View File

@ -2,7 +2,6 @@ import {useEffect, useRef} from "react";
import {scorePrint, win} from "../../utils/Tools.js"; import {scorePrint, win} from "../../utils/Tools.js";
const max_x = 500; const max_x = 500;
const size = 24;
function getMousePos(canvas, evt) { function getMousePos(canvas, evt) {
const rect = canvas.getBoundingClientRect(); const rect = canvas.getBoundingClientRect();
@ -21,6 +20,7 @@ export function DrawGraph({
}, },
matchSelect = null, matchSelect = null,
matchNext = null, matchNext = null,
size = 24
}) { }) {
const canvasRef = useRef(null); const canvasRef = useRef(null);
const actionCanvasRef = useRef(null); const actionCanvasRef = useRef(null);