import React, {useState, useEffect} from 'react'; import Carousel from 'nuka-carousel'; /* Style */ import '../Pages/Play.css'; import '../Style/Global.css' import './ScoreBoard.css'; import { useTheme } from '../Style/ThemeContext'; /* Ressources */ import trophy from '../res/icon/trophy.png' import share from '../res/icon/share.png'; /* Boostrap */ import Tab from 'react-bootstrap/Tab'; import Tabs from 'react-bootstrap/Tabs'; import Container from 'react-bootstrap/Container'; import Row from 'react-bootstrap/Row'; import Col from 'react-bootstrap/Col'; /* Component */ import User from '../model/User'; /* Services */ import ScoreboardService from '../services/ScoreboardService'; import { BiLineChart, BiLineChartDown } from 'react-icons/bi'; import { CarouselCaption } from 'react-bootstrap'; import { BsLine } from 'react-icons/bs'; //@ts-ignore const ScoreBoard: React.FC<{ Player: User }> = ({ Player }) => { const theme=useTheme(); const [carouselKey, setCarouselKey] = useState(0); const [activeTab, setActiveTab] = useState("perso"); // DAILY STATS const [dailyMastermindStats, setDailyMastermindStats] = useState(null); const [dailyEasyEnigmaStats, setDailyEasyEnigmaStats] = useState(null); const [dailyMediumEnigmaStats, setDailyMediumEnigmaStats] = useState(null); const [dailyHardEnigmaStats, setDailyHardEnigmaStats] = useState(null); const [dailyOnlineStats, setDailyOnlineStats] = useState(null); // WEEKLY STATS const [weeklyMastermindStats, setWeeklyMastermindStats] = useState(null); const [weeklyEasyEnigmaStats, setWeeklyEasyEnigmaStats] = useState(null); const [weeklyMediumEnigmaStats, setWeeklyMediumEnigmaStats] = useState(null); const [weeklyHardEnigmaStats, setWeeklyHardEnigmaStats] = useState(null); const [weeklyOnlineStats, setWeeklyOnlineStats] = useState(null); // Récupérer les records daily useEffect(() => { async function fetchDailyStats() { try { const resultMM = await ScoreboardService.getDailyMastermindStats(); const resultEF = await ScoreboardService.getDailyEasyEnigmaStats(); const resultEM = await ScoreboardService.getDailyMediumEnigmaStats(); const resultED = await ScoreboardService.getDailyHardEnigmaStats(); const resultOL = await ScoreboardService.getDailyOnlineStats(); setDailyMastermindStats(resultMM); setDailyEasyEnigmaStats(resultEF); setDailyMediumEnigmaStats(resultEM); setDailyHardEnigmaStats(resultED); setDailyOnlineStats(resultOL); } catch (error) { console.error(error); } } async function fetchWeeklyStats() { try{ const resultMM = await ScoreboardService.getWeeklyMastermindStats(); const resultEF = await ScoreboardService.getWeeklyEasyEnigmaStats(); const resultEM = await ScoreboardService.getWeeklyMediumEnigmaStats(); const resultED = await ScoreboardService.getWeeklyHardEnigmaStats(); const resultOL = await ScoreboardService.getWeeklyOnlineStats(); setWeeklyMastermindStats(resultMM); setWeeklyEasyEnigmaStats(resultEF); setWeeklyMediumEnigmaStats(resultEM); setWeeklyHardEnigmaStats(resultED); setWeeklyOnlineStats(resultOL); } catch (error) { console.error(error); } } fetchDailyStats(); fetchWeeklyStats(); }, []); return ( { setActiveTab(key); // Forcer une mise à jour du carousel setCarouselKey((prevKey) => prevKey + 1); }} id="ScoreBoard" className="tabsStats justify-content-around">
Mastermind

Parties Jouées: {Player.mastermindStats.nbGames}

Best-Score: {Player.mastermindStats.bestScore}

Moyenne d'essai: {Player.mastermindStats.avgNbTry.toFixed(2)}

Enigme facile

Parties Jouées: {Player.easyEnigmaStats.nbGames}

Nombre de victoires: {Player.easyEnigmaStats.nbWins}

Ratio V/D: {Player.easyEnigmaStats.ratio.toFixed(2) + "%"}

Meilleur temps: {Player.easyEnigmaStats.bestTime + "s"}

Moyenne de temps: {Player.easyEnigmaStats.avgTime.toFixed(2) + "s"}

Enigme moyenne

Parties Jouées: {Player.mediumEnigmaStats.nbGames}

Best-Score: {Player.mediumEnigmaStats.bestScore}

Moyenne d'essai: {Player.mediumEnigmaStats.avgNbTry.toFixed(2)}

Enigme difficile

Parties Jouées: {Player.hardEnigmaStats.nbGames}

Nombre de victoires: {Player.hardEnigmaStats.nbWins}

Ratio V/D: {Player.hardEnigmaStats.ratio.toFixed(2) + "%"}

Meilleur temps: {Player.hardEnigmaStats.bestTime + "s"}

Moyenne de temps: {Player.hardEnigmaStats.avgTime.toFixed(2) + "s"}

En ligne

Parties Jouées: {Player.onlineStats.nbGames}

Nombre de victoires: {Player.onlineStats.nbWins}

Ratio V/D: {Player.onlineStats.ratio.toFixed(2) + "s"}

Mastermind

{(dailyMastermindStats && dailyMastermindStats.tab) ? (dailyMastermindStats.tab.length !== 0 ? dailyMastermindStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.score + " essai(s)"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
Enigme facile

{(dailyEasyEnigmaStats && dailyEasyEnigmaStats.tab) ? (dailyEasyEnigmaStats.tab.length !== 0 ? dailyEasyEnigmaStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.time + "s"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
Enigme moyenne

{(dailyMediumEnigmaStats && dailyMediumEnigmaStats.tab) ? (dailyMediumEnigmaStats.tab.length !== 0 ? dailyMediumEnigmaStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.time + "s"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
Enigme difficile

{(dailyHardEnigmaStats && dailyHardEnigmaStats.tab) ? (dailyHardEnigmaStats.tab.length !== 0 ? dailyHardEnigmaStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.time + "s"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
En ligne

{(dailyOnlineStats && dailyOnlineStats.tab) ? (dailyOnlineStats.tab.length !== 0 ? dailyOnlineStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.wins + " victoires"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
Mastermind

{(weeklyMastermindStats && weeklyMastermindStats.tab) ? (weeklyMastermindStats.tab.length !== 0 ? weeklyMastermindStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.score + " essai(s)"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
Enigme facile

{(weeklyEasyEnigmaStats && weeklyEasyEnigmaStats.tab) ? (weeklyEasyEnigmaStats.tab.length !== 0 ? weeklyEasyEnigmaStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.time + "s"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
Enigme moyenne

{(weeklyMediumEnigmaStats && weeklyMediumEnigmaStats.tab) ? (weeklyMediumEnigmaStats.tab.length !== 0 ? weeklyMediumEnigmaStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.time + "s"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
Enigme difficile

{(weeklyHardEnigmaStats && weeklyHardEnigmaStats.tab) ? (weeklyHardEnigmaStats.tab.length !== 0 ? weeklyHardEnigmaStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.time + "s"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
En ligne

{(weeklyOnlineStats && weeklyOnlineStats.tab) ? (weeklyOnlineStats.tab.length !== 0 ? weeklyOnlineStats.tab.map((stats: any, index: number) => ( <>

{index+1}.{stats.pseudo}

{stats.wins + " victoires"}

)) : (

Nothing for the moment

)) : (

Nothing for the moment

)}
); } export default ScoreBoard;