From e8115808e5de325182c286600ed62948cdd8632e Mon Sep 17 00:00:00 2001 From: Fabien Zucchet <fabien.zucchet@student-cs.fr> Date: Sat, 21 Mar 2020 23:53:20 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20add=20classements=20par=20=C3=A9quipe?= =?UTF-8?q?=20et=20individuel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/index.js | 14 +++++++-- front/src/app/accueil/Accueil.js | 8 ----- .../app/classementEquipe/ClassementEquipe.js | 6 +++- .../TableauClassementEquipes.js | 30 +++++++++++++++++++ .../ClassementIndividuel.js | 6 +++- .../TableauClassementIndividuel.js | 30 +++++++++++++++++++ front/src/index.js | 2 +- 7 files changed, 82 insertions(+), 14 deletions(-) create mode 100644 front/src/app/classementEquipe/TableauClassementEquipes.js create mode 100644 front/src/app/classementIndividuel/TableauClassementIndividuel.js diff --git a/back/index.js b/back/index.js index b51f99fe..1c5b2f6a 100644 --- a/back/index.js +++ b/back/index.js @@ -19,10 +19,18 @@ app.listen(process.env.REACT_APP_SERVER_PORT, () => { console.log(`App server now listening on port ${process.env.REACT_APP_SERVER_PORT}`); }); -app.get('/test', (req, res) => { - const { table } = 'Equipe'; +app.get('/classement_par_equipes', (req, res) => { + pool.query(`SELECT Equipe.name,SUM(score) AS score,COUNT(participantId) AS nbParticipant,COUNT(score) AS nbScores FROM Score JOIN Equipe ON Equipe.id=Score.equipeId GROUP BY equipeId;`, (err, results) => { + if (err) { + return res.send(err); + } else { + return res.send(results); + } + }); +}); - pool.query(`select * from ${table}`, (err, results) => { +app.get('/classement_individuel', (req, res) => { + pool.query(`SELECT Participant.name,SUM(score) AS score,COUNT(equipeId) AS nbEquipes,COUNT(score) AS nbScores FROM Score JOIN Participant ON Participant.id=Score.participantId GROUP BY participantId;`, (err, results) => { if (err) { return res.send(err); } else { diff --git a/front/src/app/accueil/Accueil.js b/front/src/app/accueil/Accueil.js index 6343d9fc..8840a6f6 100644 --- a/front/src/app/accueil/Accueil.js +++ b/front/src/app/accueil/Accueil.js @@ -1,16 +1,8 @@ import React from 'react'; //import { Link } from 'react-router-dom'; -import axios from 'axios'; - -function callServer() { - axios.get('http://localhost:8000/test').then((response) => { - console.log(response.data); - }); -} export default () => ( <div> Accueil - {callServer()} </div> ); diff --git a/front/src/app/classementEquipe/ClassementEquipe.js b/front/src/app/classementEquipe/ClassementEquipe.js index 5bb99d3f..fdbd5bdb 100644 --- a/front/src/app/classementEquipe/ClassementEquipe.js +++ b/front/src/app/classementEquipe/ClassementEquipe.js @@ -1,6 +1,10 @@ import React from 'react'; //import { Link } from 'react-router-dom'; +import { TableauClassementEquipes } from './TableauClassementEquipes'; export default () => ( - <div>Classement par équipe</div> + <div> + <h1>Classement par équipe</h1> + <TableauClassementEquipes/> + </div> ); diff --git a/front/src/app/classementEquipe/TableauClassementEquipes.js b/front/src/app/classementEquipe/TableauClassementEquipes.js new file mode 100644 index 00000000..ca8f6a49 --- /dev/null +++ b/front/src/app/classementEquipe/TableauClassementEquipes.js @@ -0,0 +1,30 @@ +import React, { useState } from 'react'; +import axios from 'axios'; + + +export function TableauClassementEquipes(){ + var [equipes,setEquipes] = useState([]); + axios.get('http://localhost:8000/classement_par_equipes').then((response) => setEquipes(response.data)) + return( + <table class="table"> + <thead class="thead-light"> + <tr> + <th scope="col">Equipe</th> + <th scope="col">Score total</th> + <th scope="col">Nombre de participants</th> + <th scope="col">Nombre de scores saisis</th> + </tr> + </thead> + <tbody> + {equipes.map((item) => + <tr> + <th scope="row">{item.name}</th> + <td>{item.score}</td> + <td>{item.nbParticipant}</td> + <td>{item.nbScores}</td> + </tr> + )} + </tbody> + </table> + ) +}; diff --git a/front/src/app/classementIndividuel/ClassementIndividuel.js b/front/src/app/classementIndividuel/ClassementIndividuel.js index 8b8fc682..a8f56557 100644 --- a/front/src/app/classementIndividuel/ClassementIndividuel.js +++ b/front/src/app/classementIndividuel/ClassementIndividuel.js @@ -1,6 +1,10 @@ import React from 'react'; //import { Link } from 'react-router-dom'; +import { TableauClassementIndividuel } from './TableauClassementIndividuel'; export default () => ( - <div>Classement individuel</div> + <div> + <h1>Classement individuel</h1> + <TableauClassementIndividuel/> + </div> ); diff --git a/front/src/app/classementIndividuel/TableauClassementIndividuel.js b/front/src/app/classementIndividuel/TableauClassementIndividuel.js new file mode 100644 index 00000000..14f7898e --- /dev/null +++ b/front/src/app/classementIndividuel/TableauClassementIndividuel.js @@ -0,0 +1,30 @@ +import React, { useState } from 'react'; +import axios from 'axios'; + + +export function TableauClassementIndividuel(){ + var [equipes,setEquipes] = useState([]); + axios.get('http://localhost:8000/classement_individuel').then((response) => setEquipes(response.data)) + return( + <table class="table"> + <thead class="thead-light"> + <tr> + <th scope="col">Equipe</th> + <th scope="col">Score total</th> + <th scope="col">Nombre équipes</th> + <th scope="col">Nombre de scores saisis</th> + </tr> + </thead> + <tbody> + {equipes.map((item) => + <tr> + <th scope="row">{item.name}</th> + <td>{item.score}</td> + <td>{item.nbEquipes}</td> + <td>{item.nbScores}</td> + </tr> + )} + </tbody> + </table> + ) +}; diff --git a/front/src/index.js b/front/src/index.js index e29815ee..d7e3bbfd 100644 --- a/front/src/index.js +++ b/front/src/index.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import ReactDOM from 'react-dom'; import { BrowserRouter as Router, Route } from 'react-router-dom'; import Navbar from './app/navbar/Navbar'; -- GitLab