/* =========================================================
FOOTBALL STATS API - LOGIQUE PRINCIPALE (FRONT/BACK MIX)
---------------------------------------------------------
Ici on gère toute la logique de l'application :
- joueurs
- équipes
- tournois
- statistiques
- stockage local (localStorage)
========================================================= */
/* =========================
STOCKAGE LOCAL (MEMOIRE)
-------------------------
On récupère les données si elles existent déjà dans le navigateur.
Sinon on initialise des tableaux vides.
========================= */
let players = JSON.parse(localStorage.getItem("players")) || [];
let teams = JSON.parse(localStorage.getItem("teams")) || [];
let tournaments = JSON.parse(localStorage.getItem("tournaments")) || [];
/* =========================
SAUVEGARDE AUTOMATIQUE
-------------------------
Permet de sauvegarder toutes les données à chaque modification.
Ici on utilise localStorage pour simuler une base de données locale.
========================= */
function save(){
localStorage.setItem("players", JSON.stringify(players));
localStorage.setItem("teams", JSON.stringify(teams));
localStorage.setItem("tournaments", JSON.stringify(tournaments));
}
/* =========================
NAVIGATION ENTRE ONGLETS
-------------------------
Fonction simple pour afficher un onglet et cacher les autres.
========================= */
function showTab(id){
document.querySelectorAll(".tab").forEach(t => t.style.display = "none");
document.getElementById(id).style.display = "block";
}
/* =========================
MODULE JOUEURS
-------------------------
Gestion complète des joueurs :
- ajout
- affichage
- suppression
========================= */
function addPlayer(){
const name = document.getElementById("playerName").value;
// Création d’un objet joueur avec stats par défaut
players.push({
id: Date.now(), // ID unique basé sur le timestamp
name,
goals: 0,
assists: 0,
fouls: 0
});
save();
renderPlayers();
renderStats();
}
/* Affichage des joueurs dans l'interface */
function renderPlayers(){
const div = document.getElementById("playersList");
div.innerHTML = "";
players.forEach(p => {
div.innerHTML += `
${p.name}
⚽ ${p.goals} | 🎯 ${p.assists} | ❌ ${p.fouls}
`;
});
}
/* Suppression d’un joueur + nettoyage dans les équipes */
function deletePlayer(id){
// suppression du joueur
players = players.filter(p => p.id != id);
// suppression du joueur dans toutes les équipes
teams.forEach(t => {
t.players = t.players.filter(pid => pid != id);
});
save();
renderPlayers();
renderTeams();
renderStats();
}
/* =========================
MODULE EQUIPES
-------------------------
Création et gestion des équipes + assignation des joueurs
========================= */
function addTeam(){
const name = document.getElementById("teamName").value;
teams.push({
id: Date.now(),
name,
players: [] // liste des IDs joueurs
});
save();
renderTeams();
}
/* Ajouter un joueur dans une équipe */
function addPlayerToTeam(playerId, teamId){
const team = teams.find(t => t.id == teamId);
if(!team.players.includes(playerId)){
team.players.push(playerId);
}
save();
renderTeams();
}
/* Retirer un joueur d’une équipe */
function removePlayerFromTeam(playerId, teamId){
const team = teams.find(t => t.id == teamId);
team.players = team.players.filter(p => p != playerId);
save();
renderTeams();
}
/* Affichage des équipes */
function renderTeams(){
const div = document.getElementById("teamsList");
div.innerHTML = "";
teams.forEach(t => {
div.innerHTML += `