remade sports.js + rewrited duplicate code in functions

This commit is contained in:
Allan Cueff
2023-11-03 12:53:12 +01:00
parent b6f1cb5ef1
commit 5fb8b00352
2 changed files with 80 additions and 87 deletions

View File

@@ -4,22 +4,27 @@ import pb from './login.js'
const SportList = await pb.collection('sport').getFullList({});
const classBasketballList = await pb.collection('class_basketball').getFullList({
sort: '+classement',
expand: 'team',
});
const classVoleyballList = await pb.collection('class_voleyball').getFullList({
sort: '+classement',
expand: 'team',
});
const classFootballList = await pb.collection('class_football').getFullList({
sort: '+classement',
expand: 'team',
});
const classHandballList = await pb.collection('class_handball').getFullList({
sort: '+classement',
expand: 'team',
});
const classDefiList = await pb.collection('class_defi').getFullList({
sort: '+classement',
expand: 'team',
});
@@ -28,60 +33,40 @@ const matchList = await pb.collection('match').getFullList({
expand: 'sport,team1,team2',
});
const sportCardContainer = document.getElementById("sportContainer");
SportList.forEach(sport => {
//Création de la carte
const card = document.createElement('div');
card.classList.add('card', 'my-3');
const cardHeader = document.createElement('div');
cardHeader.classList.add('card-header', 'text-center', 'bg-light-subtle', 'text-emphasis-light');
//Affichage du nom du sport en majuscule
cardHeader.innerHTML = sport.name.toUpperCase();
card.appendChild(cardHeader);
const cardBody = document.createElement('div');
cardBody.classList.add('card-body', 'bg-light-subtle', 'text-emphasis-light');
//Affichage de l'équipe en tête
const cardTitle = document.createElement('h5');
cardTitle.classList.add('card-title');
let equipe = "";
if(sport.name === "basketball") {
classBasketballList.forEach(classe => {
if(classe.classement === 1){
equipe = classe.expand.team.name;
}
});
} else if(sport.name === "volleyball") {
classVoleyballList.forEach(classe => {
if(classe.classement === 1){
equipe = classe.expand.team.name;
}
});
} else if(sport.name === "football") {
classFootballList.forEach(classe => {
if(classe.classement === 1){
equipe = classe.expand.team.name;
}
});
} else if(sport.name === "handball") {
classHandballList.forEach(classe => {
if(classe.classement === 1){
equipe = classe.expand.team.name;
}
});
} else if(sport.name === "defi") {
classDefiList.forEach(classe => {
if(classe.classement === 1){
equipe = classe.expand.team.name;
}
});
function selectWinner(orderedClassementList){
if(orderedClassementList.length != 0){
let firtClasse = orderedClassementList[0]
if(firtClasse.classement === 1){
return firtClasse.expand.team.name;
} else {
orderedClassementList.forEach(classe => {
if(classe.classement === 1){
return classe.expand.team.name;
}
});
}
}
cardTitle.innerHTML = "Equipe en tête : " + equipe;
cardBody.appendChild(cardTitle);
card.appendChild(cardBody);
//Affichage du prochain match
const cardFooter = document.createElement('div');
cardFooter.classList.add('card-footer', 'bg-light-subtle', 'text-emphasis-light');
//Affichage du prochain match du sport
return "";
}
function getSportWinningTeam(sport){
switch(sport.name){
case "basketball":
return selectWinner(classBasketballList)
case "volleyball":
return selectWinner(classVoleyballList)
case "football":
return selectWinner(classFootballList)
case "handball":
return selectWinner(classHandballList)
case "defi enduro":
return selectWinner(classDefiList) //TODO
case "badminton":
return "" //TODO
}
}
function getSportNextMatchText(sport){
let match = "";
matchList.forEach(matche => {
if(matche.expand.sport.name === sport.name){
@@ -89,15 +74,28 @@ SportList.forEach(sport => {
}
});
if(match === ""){
cardFooter.innerHTML = "Pas de match prévu";
card.appendChild(cardFooter);
sportCardContainer.appendChild(card);
return;
return "Pas de match prévu";
}
const time_start = new Date(match.heure_debut);
cardFooter.innerHTML = "Prochain match : " + match.expand.team1.name + " vs " + match.expand.team2.name + " à " + time_start.getHours() + "h" + time_start.getMinutes();
card.appendChild(cardFooter);
sportCardContainer.appendChild(card);
return "Prochain match : " + match.expand.team1.name + " vs " + match.expand.team2.name + " à " + time_start.getHours() + "h" + time_start.getMinutes();
}
function getSportCard(sport){
let winner = getSportWinningTeam(sport)
let title = winner === "" ? "La compétition n'a pas commencé" : ("Equipe en tête : " + winner)
return `
<div class="card my-3">
<div class="card-header text-center bg-light-subtle text-emphasis-light">${sport.name.toUpperCase()}</div>
<div class="card-body bg-light-subtle text-emphasis-light">
<h5 class="card-title">${title}</h5>
</div>
<div class="card-footer bg-light-subtle text-emphasis-light">${getSportNextMatchText(sport)}</div>
</div>`
}
const sportCardContainer = document.getElementById("sportContainer");
SportList.forEach(sport => {
sportCardContainer.insertAdjacentHTML("beforeend", getSportCard(sport))
});

View File

@@ -6,22 +6,27 @@ const EquipeList = await pb.collection('equipes').getFullList({
});
const classBasketballList = await pb.collection('class_basketball').getFullList({
sort: '+classement',
expand: 'team',
});
const classVoleyballList = await pb.collection('class_voleyball').getFullList({
sort: '+classement',
expand: 'team',
});
const classFootballList = await pb.collection('class_football').getFullList({
sort: '+classement',
expand: 'team',
});
const classHandballList = await pb.collection('class_handball').getFullList({
sort: '+classement',
expand: 'team',
});
const classDefiList = await pb.collection('class_defi').getFullList({
sort: '+classement',
expand: 'team',
});
@@ -33,42 +38,32 @@ const matchList = await pb.collection('match').getFullList({
expand: 'team1,team2,sport',
});
function findClassementInClassementList(classementList, equipe){
if(classementList.length != 0){
classementList.forEach(classe => {
if (classe.expand.team.name === equipe.name) {
return classe.classement;
}
});
}
return 0;
}
function getTeamClassement(equipe){
switch(equipe.expand.sport.name){
case "football":
classFootballList.forEach(classe => {
if (classe.expand.team.name === equipe.name) {
return classe.classement;
}
});
return findClassementInClassementList(classFootballList, equipe);
case "handball":
classHandballList.forEach(classe => {
if (classe.expand.team.name === equipe.name) {
return classe.classement;
}
});
return findClassementInClassementList(classHandballList, equipe);
case "volleyball":
classVoleyballList.forEach(classe => {
if (classe.expand.team.name === equipe.name) {
return classe.classement;
}
});
return findClassementInClassementList(classVoleyballList, equipe);
case "basketball":
classBasketballList.forEach(classe => {
if (classe.expand.team.name === equipe.name) {
return classe.classement;
}
});
return findClassementInClassementList(classBasketballList, equipe);
case "badminton":
//return ``
return 0;
case "defi enduro":
classDefiList.forEach(classe => {
if (classe.expand.team.name === equipe.name) {
return classe.classement;
}
});
return findClassementInClassementList(classDefiList, equipe);
}
return 0;
}
function getTeamRow(equipe){