import {useNavigate, useParams} from "react-router-dom"; import {useLoadingSwitcher} from "../../hooks/useLoading.jsx"; import {useFetch} from "../../hooks/useFetch.js"; import {AxiosError} from "../../components/AxiosError.jsx"; import {ThreeDots} from "react-loader-spinner"; import React, {useEffect, useState} from "react"; import {DrawGraph} from "./DrawGraph.jsx"; import {TreeNode} from "../../utils/TreeUtils.js"; import {scoreToString} from "../../utils/CompetitionTools.js"; import {useTranslation} from "react-i18next"; function CupImg() { return } function CupImg2() { return } export function ResultView() { const {uuid} = useParams() const navigate = useNavigate(); const [resultShow, setResultShow] = useState("cat") const {t} = useTranslation('result'); return <>
{resultShow && resultShow === "cat" && || resultShow && resultShow === "club" && || resultShow && resultShow === "comb" && || resultShow && resultShow === "combs" && }
} // || resultShow && resultShow === "club_all" && function MenuBar({resultShow, setResultShow}) { const {t} = useTranslation('result'); return /*
  • setResultShow("club_all")}>Clubs
  • */ } function BuildMatchArray({matchs}) { const {t} = useTranslation('result'); return <> {matchs.map((match, idx) => )}
    {t('rouge')} {t('scores')} {t('bleu')}
    {match.red} {match.red_w ? : (match.eq ? : "")} {scoreToString(match.score)} {match.blue_w ? : (match.eq ? : "")} {match.blue}
    } function BuildRankArray({rankArray}) { const {t} = useTranslation('result'); return <> {rankArray.map((row, idx) => )}
    {t('place')} {t('nom')} {t('score')} {t('victoire')} {t('ratio')} {t('pointsMarqués')} {t('pointsReçus')}
    {row.rank} {row.name} {row.score} {row.win} {row.pointRate.toFixed(3)} {row.pointMake} {row.pointTake}
    } function BuildTree({treeData}) { function parseTree(data_in) { if (data_in?.data == null) return null; let node = new TreeNode(data_in.data); node.left = parseTree(data_in?.left); node.right = parseTree(data_in?.right); return node; } function initTree(data_in) { let out = []; for (const din of data_in) { out.push(parseTree(din)); } return out; } return } function CategoryList({uuid}) { const [catId, setCatId] = useState(null) const setLoading = useLoadingSwitcher() const {data, error} = useFetch(`/result/${uuid}/category/list`, setLoading, 1) const {t} = useTranslation('result'); useEffect(() => { if (data && Object.keys(data).length > 0) setCatId(data[Object.keys(data).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()))[0]]) }, [data]); return <> {data ?
    {t('catégorie')}
    : error ? : } {catId && } } function CategoryResult({uuid, catId}) { const [type, setType] = useState(1) const {t} = useTranslation('result'); const setLoading = useLoadingSwitcher() const {data, refresh, error} = useFetch(`/result/${uuid}/category/${catId}`, setLoading, 1) useEffect(() => { refresh(`/result/${uuid}/category/${catId}`) }, [catId]); useEffect(() => { if (data) setType(data.type === 3 ? 1 : data.type) }, [data]); if (!data) { return error ? : } return <> {data.type === 3 && <> } {type === 1 && <> {Object.keys(data.matchs).map(p =>
    {Object.keys(data.matchs).length > 1 &&

    {t('poule')} {p}

    }
    )} } {type === 2 && <> } } function ClubList({uuid}) { const [clubId, setClubId] = useState(null) const setLoading = useLoadingSwitcher() const {data, error} = useFetch(`/result/${uuid}/club/list`, setLoading, 1) const {t} = useTranslation('result'); useEffect(() => { if (data && Object.keys(data).length > 0) setClubId(data[Object.keys(data).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()))[0]]) }, [data]); return <> {data ?
    {t('club')}
    : error ? : } {clubId && } } function ClubResult({uuid, clubId}) { const setLoading = useLoadingSwitcher() const {data, refresh, error} = useFetch(`/result/${uuid}/club/${clubId}`, setLoading, 1) const {t} = useTranslation('result'); useEffect(() => { refresh(`/result/${uuid}/club/${clubId}`) }, [clubId]); return <> {data ? <>

    {t('info')} :

    • {t('nom')} : {data.name}
    • {t('nombreDinscris')} : {data.nb_insc}

    {t('statistique')} :

    • {t('nombreDeMatchDisputé2', {nb: data.nb_match})}
    • {t('nombreDeVictoires2', {nb: data.match_w})}
    • {t('ratioDeVictoiresMoyen2', {nb: data.ratioVictoire.toFixed(3)})}
    • {t('pointsMarqués2', {nb: data.pointMake})}
    • {t('pointsReçus2', {nb: data.pointTake})}
    • {t('ratioDePointsMoyen2', {nb: data.ratioPoint.toFixed(3)})}

    {t('listeDesMembres')} :

    {data.combs.map((comb, idx) => )}
    {t('catégorie')} {t('nom')} {t('victoires')} {t('défaites')} {t('ratioVictoires')} {t('pointsMarqués')} {t('pointsReçus')} {t('ratioPoints')}
    {comb.cat} {comb.name} {comb.w} {comb.l} {comb.ratioVictoire.toFixed(3)} {comb.pointMake} {comb.pointTake} {comb.ratioPoint.toFixed(3)}
    : error ? : } } function CombList({uuid}) { const [combId, setCombId] = useState(null) const setLoading = useLoadingSwitcher() const {data, error} = useFetch(`/result/${uuid}/comb/list`, setLoading, 1) const {t} = useTranslation('result'); useEffect(() => { if (data && Object.keys(data).length > 0) setCombId(data[Object.keys(data).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()))[0]]) }, [data]); return <> {data ?
    {t('combattant')}
    : error ? : } {combId && } } function CombResult({uuid, combId}) { const setLoading = useLoadingSwitcher() const {data, refresh, error} = useFetch(`/result/${uuid}/comb/${combId}`, setLoading, 1) const {t} = useTranslation('result'); useEffect(() => { refresh(`/result/${uuid}/comb/${combId}`) }, [combId]); if (!data) { return error ? : } return

    {t('info')} :

    • {t('nomPrénom')} : {data.name}
    • {t('club')} : {data.club}
    • {t('catégorie')} : {data.cat}

    {t('statistique')} :

    • {t('tauxDeVictoire2', { nb: data.matchs.length === 0 ? "---" : (data.totalWin / data.matchs.length * 100).toFixed(0), victoires: data.totalWin, matchs: data.matchs.length })}
    • {t('pointsMarqués2', {nb: data.pointMake})}
    • {t('pointsReçus2', {nb: data.pointTake})}
    • {t('ratioDuScore2', {nb: data.pointRatio.toFixed(3)})}

    {t('listeDesMatchs')}:

    {data.matchs.map((match, idx) => )}
    {t('catégorie')} {t('adversaire')} {t("scores")} {t('ratio')}
    {match.poule} {match.adv} {scoreToString(match.score)} {match.ratio.toFixed(3)} {match.win ? : (match.eq ? : "")}
    } function CombsResult({uuid}) { const setLoading = useLoadingSwitcher() const {data, error} = useFetch(`/result/${uuid}/comb`, setLoading, 1) const {t} = useTranslation('result'); return <> {data ? <>

    {t('statistique')} :

    • {t('nombreDinscris2', {nb: data.nb_insc})}
    • {t('nombreDeMatchDisputé2', {nb: data.tt_match})}
    • {t('pointsMarqués2', {nb: data.point})}

    {t('listeDesCombattants')} :

    {data.combs.map((comb, idx) => )}
    {t('catégorie')} {t('club')} {t('nom')} {t('victoires')} {t('défaites')} {t('ratioVictoires')} {t('pointsMarqués')} {t('pointsReçus')} {t('ratiosPoints')}
    {comb.cat} {comb.club} {comb.name} {comb.w} {comb.l} {comb.ratioVictoire.toFixed(3)} {comb.pointMake} {comb.pointTake} {comb.ratioPoint.toFixed(3)}
    : error ? : } } function Def() { return
  • }