Statistiques Premiership, la plus haute division de rugby en France, incluant les matchs joués, les pourcentages de victoires à domicile et à l’extérieur, les points marqués, les essais, les cartons, et bien plus encore.

Statistiques Premiership * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: ‘Poppins’, -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; background-color: #f8fafc; } .rugby-stats-widget { max-width: 1200px; margin: 20px auto; padding: 20px; background-color: #f8fafc; } /* Header style inspiré de competition.html */ .widget-header { background: linear-gradient(135deg, #374151 0%, #1f2937 100%); color: white; padding: 20px; border-radius: 8px; margin-bottom: 20px; text-align: center; box-shadow: 0 4px 16px rgba(31, 41, 55, 0.3); } .widget-header h1 { font-size: 1.8rem; margin-bottom: 5px; font-weight: 600; } .widget-header p { opacity: 0.9; font-size: 0.9rem; } /* Statistiques générales en cartes */ .stats-grid { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 30px; justify-content: center; } .stat-card { background: white; border: 2px solid #e5e7eb; border-radius: 10px; padding: 20px; text-align: center; transition: all 0.3s ease; box-shadow: 0 1px 3px rgba(0,0,0,0.1); width: 300px; flex-shrink: 0; } .stat-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.15); border-color: #374151; } .stat-card h3 { font-size: 0.8rem; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.5px; color: #6b7280; font-weight: 500; } .stat-card .stat-value { font-size: 2rem; font-weight: bold; margin-bottom: 5px; color: #374151; } .stat-card .stat-unit { font-size: 0.8rem; color: #6b7280; } /* Cartes enrichies */ .stat-card-large { padding: 25px; } .multi-stats { display: flex; flex-direction: column; gap: 15px; } .main-stat { text-align: center; } .main-stat .stat-value { font-size: 2.2rem; font-weight: bold; color: #374151; margin-bottom: 5px; } .main-stat .stat-unit { font-size: 0.9rem; color: #6b7280; text-transform: uppercase; letter-spacing: 0.5px; } .sub-stats { display: flex; justify-content: space-around; gap: 10px; } .sub-stat { display: flex; flex-direction: column; align-items: center; flex: 1; padding: 10px 8px; background: #f9fafb; border-radius: 6px; border: 1px solid #e5e7eb; min-height: 60px; justify-content: center; } .sub-stat.yellow { background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%); border-color: #d97706; color: white; } .sub-stat.red { background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%); border-color: #991b1b; color: white; } .sub-stat.kicking { background: linear-gradient(135deg, #0288d1 0%, #0277bd 100%); border-color: #01579b; color: white; } .sub-stat.tries { background: linear-gradient(135deg, #388e3c 0%, #2e7d32 100%); border-color: #1b5e20; color: white; } .sub-stat.tactical-offense { background: linear-gradient(135deg, #fff3e0 0%, #ffe0b2 100%); border-color: #f57c00; } .sub-stat.tactical-defense { background: linear-gradient(135deg, #f3e5f5 0%, #e1bee7 100%); border-color: #7b1fa2; } /* Barres de progression et indicateurs visuels */ .progress-bar-container { width: 100%; height: 6px; background: #e5e7eb; border-radius: 3px; margin-top: 5px; overflow: hidden; } .sub-stat.kicking .progress-bar-container, .sub-stat.tries .progress-bar-container { background: rgba(255, 255, 255, 0.3); } .progress-bar { height: 100%; border-radius: 3px; transition: width 1s ease-in-out; } .progress-bar.offense { background: linear-gradient(90deg, #f59e0b 0%, #f97316 100%); } .progress-bar.defense { background: linear-gradient(90deg, #7b1fa2 0%, #9c27b0 100%); } .progress-bar.kicking { background: linear-gradient(90deg, #ffffff 0%, #e3f2fd 100%); } .progress-bar.tries { background: linear-gradient(90deg, #ffffff 0%, #e8f5e8 100%); } .performance-indicator { display: inline-flex; align-items: center; gap: 5px; font-size: 0.7rem; color: #6b7280; margin-top: 3px; } .indicator-dot { width: 6px; height: 6px; border-radius: 50%; } .indicator-dot.excellent { background: #10b981; } .indicator-dot.good { background: #f59e0b; } .indicator-dot.average { background: #ef4444; } .sub-value { font-size: 1.1rem; font-weight: bold; color: #374151; margin-bottom: 2px; } .sub-label { font-size: 0.7rem; color: #6b7280; text-transform: uppercase; letter-spacing: 0.3px; } .sub-stat.yellow .sub-value, .sub-stat.red .sub-value, .sub-stat.kicking .sub-value, .sub-stat.tries .sub-value { color: white; } .sub-stat.yellow .sub-label, .sub-stat.red .sub-label, .sub-stat.kicking .sub-label, .sub-stat.tries .sub-label { color: rgba(255, 255, 255, 0.8); } .card-footer { text-align: center; font-size: 0.8rem; color: #6b7280; font-style: italic; padding-top: 5px; border-top: 1px solid #e5e7eb; } /* Sections de classements unifiés */ .rankings-unified { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; justify-items: center; } /* Conteneur de classement style phase */ .ranking-container { background: white; border: 2px solid #e5e7eb; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); margin-bottom: 20px; width: 100%; max-width: 500px; } .ranking-header { background: linear-gradient(135deg, #004382 0%, #003770 100%); color: white; padding: 15px 20px; font-weight: bold; display: flex; justify-content: space-between; align-items: center; } .ranking-title { display: flex; align-items: center; gap: 10px; } .expand-btn { background: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.3); color: white; padding: 6px 12px; border-radius: 4px; cursor: pointer; font-size: 12px; font-weight: 500; transition: all 0.3s ease; } .expand-btn:hover { background: rgba(255,255,255,0.3); transform: translateY(-1px); } .expand-btn.expanded { background: rgba(255,255,255,0.25); } .ranking-content { padding: 0; } /* Items de classement */ .ranking-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 20px; border-bottom: 1px solid #e5e7eb; transition: all 0.2s ease; position: relative; } .ranking-item:last-child { border-bottom: none; } .ranking-item:hover { background: #f9fafb; } /* Couleurs pour le podium */ .ranking-item:nth-child(1) { border-left: 4px solid #fbbf24; background: linear-gradient(to right, #fef3c7 0%, transparent 100%); } .ranking-item:nth-child(2) { border-left: 4px solid #9ca3af; background: linear-gradient(to right, #e5e7eb 0%, transparent 100%); } .ranking-item:nth-child(3) { border-left: 4px solid #cd7c2f; background: linear-gradient(to right, #fed7aa 0%, transparent 100%); } .item-info { display: flex; align-items: center; gap: 12px; flex: 1; } .item-info .team-logo { width: 24px; height: 24px; border-radius: 4px; background: #f3f4f6; display: flex; align-items: center; justify-content: center; font-weight: bold; color: #6b7280; font-size: 0.8rem; min-width: 24px; } .item-rank { background: #374151; color: white; width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 0.8rem; min-width: 24px; } /* Rangs spéciaux pour le podium */ .ranking-item:nth-child(1) .item-rank { background: #fbbf24; } .ranking-item:nth-child(2) .item-rank { background: #9ca3af; color: white; } .ranking-item:nth-child(3) .item-rank { background: #cd7c2f; } .item-details { flex: 1; } .item-name { font-weight: 600; font-size: 0.95rem; color: #111827; margin-bottom: 2px; } .item-team { font-size: 0.75rem; color: #6b7280; } .item-stats { text-align: right; } .item-primary { font-size: 1.1rem; font-weight: bold; color: #374151; } .item-secondary { font-size: 0.75rem; color: #6b7280; } /* Animation pour l’expansion */ .ranking-content { max-height: 240px; /* Affiche environ 5 items */ overflow: hidden; transition: max-height 0.4s ease-in-out; } .ranking-content.expanded { max-height: 1000px; /* Assez grand pour 20+ items */ } /* Loading et error states */ .loading { text-align: center; padding: 50px; font-size: 1.1rem; color: #6b7280; background: white; border-radius: 8px; border: 2px solid #e5e7eb; } .error { text-align: center; padding: 50px; color: #dc2626; font-size: 1.1rem; background: white; border-radius: 8px; border: 2px solid #e5e7eb; } /* Styles pour les matchs en direct */ .live-matches { background: white; border: 2px solid #e5e7eb; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .live-header { background: linear-gradient(135deg, #004382 0%, #003770 100%); color: white; padding: 15px 20px; font-weight: bold; display: flex; justify-content: space-between; align-items: center; } .live-indicator { display: flex; align-items: center; gap: 8px; } .live-dot { width: 8px; height: 8px; background: white; border-radius: 50%; animation: pulse 2s infinite; } @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } .match-item { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; border-bottom: 1px solid #e5e7eb; transition: background 0.2s ease; } .match-item:last-child { border-bottom: none; } .match-item:hover { background: #f9fafb; } .match-teams { display: flex; align-items: center; gap: 15px; flex: 1; } .team { display: flex; align-items: center; gap: 8px; min-width: 120px; } .team-logo-small { width: 20px; height: 20px; border-radius: 3px; background: #f3f4f6; } .vs { font-weight: bold; color: #6b7280; font-size: 0.8rem; } .match-score { font-size: 1.2rem; font-weight: bold; color: #dc2626; min-width: 60px; text-align: center; } .match-status { padding: 4px 8px; border-radius: 4px; font-size: 0.7rem; font-weight: 500; text-transform: uppercase; min-width: 80px; text-align: center; } .status-live { background: #dc2626; color: white; } .status-halftime { background: #f59e0b; color: white; } .status-finished { background: #10b981; color: white; } .status-scheduled { background: #6b7280; color: white; } .no-live-matches { padding: 30px 20px; text-align: center; color: #6b7280; font-style: italic; } .team-item { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; border-bottom: 1px solid #e5e7eb; transition: background 0.2s ease; } .team-item:last-child { border-bottom: none; } .team-item:hover { background: #f9fafb; } .team-info { display: flex; align-items: center; gap: 12px; flex: 1; } .team-logo { width: 32px; height: 32px; border-radius: 4px; background: #f3f4f6; display: flex; align-items: center; justify-content: center; font-weight: bold; color: #6b7280; font-size: 0.8rem; } .team-name { font-weight: 600; color: #111827; } .team-stat { font-size: 1.1rem; font-weight: bold; color: #374151; } /* Responsive design */ @media (max-width: 768px) { .rugby-stats-widget { margin: 10px; padding: 15px; } .widget-header h1 { font-size: 1.5rem; } .stats-grid { gap: 10px; } .stat-card { width: 280px; } .rankings-unified { grid-template-columns: 1fr; gap: 15px; } .ranking-item { padding: 10px 15px; } .item-name { font-size: 0.85rem; } .item-team { font-size: 0.7rem; } } @media (max-width: 480px) { .rugby-stats-widget { margin: 5px; padding: 10px; } .stats-grid { gap: 12px; } .stat-card { width: 100%; max-width: 280px; padding: 12px 8px; min-width: 0; } .stat-card-large { padding: 20px 15px; } .stat-card h3 { font-size: 0.8rem; margin-bottom: 8px; } .stat-card .stat-value { font-size: 1.3rem; margin-bottom: 3px; } .main-stat .stat-value { font-size: 1.8rem; } .sub-stats { gap: 8px; } .sub-stat { padding: 8px 6px; } .sub-value { font-size: 1rem; } .sub-label { font-size: 0.65rem; } }

Premiership

Statistiques de la saison 2024-2025

Chargement des statistiques…

// Configuration de l’API const API_BASE_URL = ‘https://rugby-app-4ebacff10fda.herokuapp.com’; const COMPETITION_NAME = ‘premiership’; async function loadStats() { const widgetContent = document.getElementById(‘widgetContent’); try { widgetContent.innerHTML = ‘

Chargement des statistiques…

‘; // Charger les statistiques et les scores en parallèle const [statsResponse, liveResponse] = await Promise.all([ fetch(`${API_BASE_URL}/competitions/${COMPETITION_NAME}`), fetch(`${API_BASE_URL}/competitions/${COMPETITION_NAME}/live_scores`) ]); if (!statsResponse.ok) { throw new Error(‘Erreur lors du chargement des données’); } const stats = await statsResponse.json(); const liveData = liveResponse.ok ? await liveResponse.json() : { live_scores: [] }; displayStats(stats); displayLiveScores(liveData.live_scores || []); } catch (error) { console.error(‘Erreur:’, error); widgetContent.innerHTML = `

Impossible de charger les statistiques.

Veuillez réessayer plus tard.

Erreur: ${error.message}

`; } } function displayStats(stats) { const widgetContent = document.getElementById(‘widgetContent’); // Les données des joueurs contiennent déjà les informations des équipes // Pas besoin de mapping manuel, l’API retourne team_name et team_img_url widgetContent.innerHTML = `

Saison en Chiffres

${stats.nombre_de_matchs_joues || 0}
matchs joués
${stats.points_marques || 0} points marqués
${parseFloat(stats.moyenne_points_par_match || 0).toFixed(1)} pts/match

Performance Offensive

${stats.nombre_essais || 0}
essais marqués
${parseFloat(stats.moyenne_essais_par_match || 0).toFixed(1)} essais/match
${stats.nombre_essais > 0 ? (parseFloat(stats.points_marques || 0) / parseFloat(stats.nombre_essais || 1)).toFixed(1) : 0} pts/essai

Avantage Terrain

${Math.round(parseFloat(stats.pourcentage_victoires_domicile || 0)) – Math.round(parseFloat(stats.pourcentage_victoires_exterieur || 0))}%
écart dom./ext.
${Math.round(parseFloat(stats.pourcentage_victoires_domicile || 0))}% domicile
${Math.round(parseFloat(stats.pourcentage_victoires_exterieur || 0))}% extérieur

Discipline

${(stats.nombre_cartons_jaune || 0) + (stats.nombre_cartons_rouge || 0)}
cartons total
${stats.nombre_cartons_jaune || 0} jaunes
${stats.nombre_cartons_rouge || 0} rouges

Précision au Pied

${calculateKickingStats(stats).totalKickingPoints}
points au pied
${calculateKickingStats(stats).kickingPercentage}% points au pied
${calculateKickingStats(stats).triesPercentage}% points essais
Meilleurs Marqueurs d’Essais
${renderPlayerRanking(stats.classement_joueurs_essais, ‘essais’, ‘essai(s)’)}
Meilleurs Marqueurs de Points
${renderPlayerRanking(stats.classement_joueurs_points, ‘points’, ‘pt(s)’)}
Spécialistes Jeu au Pied
${renderKickingSpecialists(stats.classement_joueurs_points)}
Meilleures Attaques
${renderTeamRanking(stats.meilleure_attaque, ‘buts_marques’, ‘pts marqués’)}
Meilleures Défenses
${renderTeamRanking(stats.meilleure_defense, ‘buts_encaisses’, ‘pts encaissés’)}
Classement Cartons Jaunes
${renderTeamRanking(stats.classement_cartons_jaunes, ‘cartons_jaunes’, ‘jaune(s)’)}
`; } function renderPlayerRanking(players, statKey, unit) { if (!players || !Array.isArray(players)) return ‘
Aucune donnée disponible
‘; return players.slice(0, 20).map((player, index) => { const [name, stats] = player; const primaryStat = stats[statKey] || 0; const secondaryStat = statKey === ‘essais’ ? (stats.points || 0) + ‘ pts’ : (stats.essais || 0) + ‘ essais’; return `
${index + 1}
${name}
${stats.team_name || ‘Équipe inconnue’}
${primaryStat} ${unit}
${secondaryStat}
`; }).join( »); } function renderTeamRanking(teams, statKey, unit) { if (!teams || !Array.isArray(teams)) return ‘
Aucune donnée disponible
‘; // Vérifier si toutes les valeurs sont à 0 const hasNonZeroValues = teams.some(team => (team[statKey] || 0) > 0); return teams.slice(0, 15).map((team, index) => { const statValue = team[statKey] || 0; return `
${team.nom}
${statValue} ${unit} ${!hasNonZeroValues && statKey === ‘buts_marques’ ? ‘
Saison débutante
‘ :  »}
`; }).join( »); } function calculateKickingStats(stats) { if (!stats.classement_joueurs_points || !Array.isArray(stats.classement_joueurs_points)) { return { totalKickingPoints: 0, kickingPercentage: 0, triesPercentage: 0, gameStyle: ‘Données indisponibles’ }; } let totalPoints = 0; let totalKickingPoints = 0; let totalTriesPoints = 0; stats.classement_joueurs_points.forEach(([nom, playerStats]) => { const points = playerStats.points || 0; const essais = playerStats.essais || 0; const pointsEssais = essais * 5; const pointsPied = points – pointsEssais; totalPoints += points; totalKickingPoints += pointsPied; totalTriesPoints += pointsEssais; }); const kickingPercentage = totalPoints > 0 ? Math.round((totalKickingPoints / totalPoints) * 100) : 0; const triesPercentage = totalPoints > 0 ? Math.round((totalTriesPoints / totalPoints) * 100) : 0; let gameStyle =  »; if (kickingPercentage > 60) { gameStyle = ‘Jeu de position 🎯’; } else if (triesPercentage > 60) { gameStyle = ‘Jeu créatif ⚡’; } else { gameStyle = ‘Jeu équilibré ⚖️’; } return { totalKickingPoints, kickingPercentage, triesPercentage, gameStyle }; } function calculateTacticalMetrics(stats) { // Indice Offensif Dangereux (IOD) – basé sur les essais et l’efficacité const triesPerMatch = parseFloat(stats.moyenne_essais_par_match || 0); const pointsPerMatch = parseFloat(stats.moyenne_points_par_match || 0); const efficiency = stats.nombre_essais > 0 ? pointsPerMatch / triesPerMatch : 0; // IOD = (Essais/match × 10) + (Efficacité × 5) const offensiveIndex = Math.round((triesPerMatch * 10) + (efficiency * 0.5)); // Solidité Défensive – basée sur l’avantage domicile et la discipline const homeAdvantage = parseFloat(stats.pourcentage_victoires_domicile || 0) – parseFloat(stats.pourcentage_victoires_exterieur || 0); const disciplineLevel = stats.moyenne_cartons_par_match > 2 ? ‘Indisciplinée’ : stats.moyenne_cartons_par_match 80 && defensiveRating > 80) { tacticalProfile = ‘Équipe complète 👑’; } else if (offensiveIndex > 70) { tacticalProfile = ‘Attaque spectaculaire ⚡’; } else if (defensiveRating > 80) { tacticalProfile = ‘Muraille défensive 🛡️’; } else if (homeAdvantage > 30) { tacticalProfile = ‘Forteresse à domicile 🏟️’; } else { tacticalProfile = ‘En construction 🔧’; } return { offensiveIndex, triesPerMatch: triesPerMatch.toFixed(1), defensiveRating, tacticalProfile, homeAdvantage: Math.round(homeAdvantage), disciplineLevel }; } function getPerformanceLevel(value, type) { switch(type) { case ‘tries’: if (value >= 8) return ‘excellent’; if (value >= 5) return ‘good’; return ‘average’; case ‘defense’: if (value >= 80) return ‘excellent’; if (value >= 60) return ‘good’; return ‘average’; default: return ‘average’; } } function getPerformanceText(value, type) { switch(type) { case ‘tries’: if (value >= 8) return ‘Excellent’; if (value >= 5) return ‘Bon’; return ‘Moyen’; case ‘defense’: if (value >= 80) return ‘Solide’; if (value >= 60) return ‘Correct’; return ‘Fragile’; default: return ‘N/A’; } } function renderKickingSpecialists(playersData) { if (!playersData || !Array.isArray(playersData)) return ‘
Aucune donnée disponible
‘; // Calculer les spécialistes du jeu au pied const specialists = playersData.map(([nom, stats]) => { const totalPoints = stats.points || 0; const essais = stats.essais || 0; const pointsEssais = essais * 5; const pointsPied = totalPoints – pointsEssais; const poucentPied = totalPoints > 0 ? (pointsPied / totalPoints) * 100 : 0; return { nom, stats: { …stats, pointsPied, poucentPied }, sortValue: pointsPied }; }).filter(player => player.sortValue > 0) // Seulement ceux avec des points au pied .sort((a, b) => b.sortValue – a.sortValue) .slice(0, 15); return specialists.map((player, index) => { const { nom, stats } = player; const specialtyIcon = stats.poucentPied >= 90 ? ‘🎯’ : stats.poucentPied >= 70 ? ‘🥅’ : ‘⚽’; return `
${index + 1}
${specialtyIcon} ${nom}
${stats.team_name || ‘Équipe inconnue’}
${stats.pointsPied} pts pied
${Math.round(stats.poucentPied)}% de ses points
`; }).join( »); } function renderDisciplineRanking(stats) { if (!stats.meilleure_attaque || !Array.isArray(stats.meilleure_attaque)) return ‘
Aucune donnée disponible
‘; // Calculer le ratio cartons/match pour chaque équipe const totalMatches = stats.nombre_de_matchs_joues || 1; const disciplineData = stats.meilleure_attaque.map(team => { const yellowCards = stats.classement_cartons_jaunes?.find(t => t.nom === team.nom)?.cartons_jaunes || 0; const ratio = (yellowCards / Math.max(totalMatches / stats.meilleure_attaque.length, 1)).toFixed(2); return { …team, cartons_jaunes: yellowCards, ratio_cartons: parseFloat(ratio) }; }); // Trier par meilleure discipline (moins de cartons = meilleur) disciplineData.sort((a, b) => a.ratio_cartons – b.ratio_cartons); return disciplineData.slice(0, 10).map((team, index) => { return `
${team.nom}
${team.cartons_jaunes} jaunes
${team.ratio_cartons}/match
`; }).join( »); } function displayLiveScores(liveScores) { const liveSection = document.getElementById(‘liveScoresSection’); if (!liveScores || liveScores.length === 0) { liveSection.innerHTML =  »; return; } const statusMap = { ‘endirect’: { class: ‘status-live’, text: ‘EN DIRECT’ }, ‘mi-temps’: { class: ‘status-halftime’, text: ‘MI-TEMPS’ }, ‘termine’: { class: ‘status-finished’, text: ‘TERMINÉ’ }, ‘programme’: { class: ‘status-scheduled’, text: ‘À VENIR’ } }; const liveMatches = liveScores.map(match => { const status = statusMap[match.etat] || { class: ‘status-scheduled’, text: match.etat.toUpperCase() }; const score = match.score_locale !== null && match.score_visiteuse !== null ? `${match.score_locale} – ${match.score_visiteuse}` : ‘–:–‘; return `
${match.local_team.img_url ? `${match.local_team.name}` : match.local_team.name.charAt(0) }
${match.local_team.name}
VS
${match.visitor_team.img_url ? `${match.visitor_team.name}` : match.visitor_team.name.charAt(0) }
${match.visitor_team.name}
${score}
${status.text}
`; }).join( »); liveSection.innerHTML = `
Matchs en Direct
${liveScores.length} match${liveScores.length > 1 ? ‘s’ :  »}
${liveMatches}
`; } function toggleExpand(button, type) { const content = button.closest(‘.ranking-container’).querySelector(‘.ranking-content’); const isExpanded = content.classList.contains(‘expanded’); if (isExpanded) { content.classList.remove(‘expanded’); button.textContent = type === ‘tries’ || type === ‘points’ ? ‘Voir le top 20’ : ‘Voir plus’; button.classList.remove(‘expanded’); } else { content.classList.add(‘expanded’); button.textContent = ‘Voir moins’; button.classList.add(‘expanded’); } } // Fonction pour charger seulement les scores live async function loadLiveScoresOnly() { try { const liveResponse = await fetch(`${API_BASE_URL}/competitions/${COMPETITION_NAME}/live_scores`); if (liveResponse.ok) { const liveData = await liveResponse.json(); displayLiveScores(liveData.live_scores || []); } } catch (error) { console.error(‘Erreur lors du chargement des scores live:’, error); } } // Charger les statistiques au chargement de la page document.addEventListener(‘DOMContentLoaded’, loadStats); // Actualiser les statistiques complètes toutes les 5 minutes setInterval(loadStats, 5 * 60 * 1000); // Actualiser seulement les scores live toutes les 30 secondes setInterval(loadLiveScoresOnly, 30 * 1000);

Statistiques Premiership

Le Premiership, sommet du rugby hexagonal, est un championnat où chaque match compte. Pour mieux comprendre la dynamique des clubs, l’analyse des statistiques Premiership s’impose. Elles permettent d’évaluer les performances individuelles et collectives, tout en mettant en lumière les tendances de la saison.

Matchs joués : point de départ des Statistiques Premiership

Le nombre de rencontres disputées constitue la base de toute analyse des Statistiques Premiership. Chaque équipe suit un calendrier exigeant, avec un enchaînement de matchs à domicile et à l’extérieur. Ces données permettent de comparer les résultats à un moment précis de la saison.

Victoires, défaites et égalités : le rythme du classement

Le bilan d’une équipe se mesure d’abord par ses victoires. Le pourcentage de succès, qu’il soit obtenu à domicile ou en déplacement, reste un indicateur direct de la régularité. À l’inverse, le taux de défaites met en évidence les points faibles d’un groupe. Lorsqu’un match se termine sur un score égal, cela souligne souvent la solidité défensive ou la tension tactique. Toutes ces tendances apparaissent clairement dans les statistiques Premiership.

Points inscrits : le marqueur de la puissance offensive des Statistiques Premiership

Le nombre total de points marqués reflète la capacité d’une équipe à construire son jeu. Plus une formation inscrit de points, plus son efficacité offensive se confirme. La moyenne de points par match permet d’observer la constance d’une ligne d’attaque. En suivant cette statistique tout au long de la saison, on identifie rapidement les clubs les plus dangereux ballon en main.

Essais marqués : symbole du rugby spectacle

Chaque essai témoigne d’une construction collective réussie. Le volume d’essais inscrits dans le Premiership souligne les qualités techniques et physiques des équipes. Observer la fréquence des essais par match aide à comparer les stratégies offensives. Ces données complètent les statistiques Premiership avec des indicateurs de performance spectaculaires.

Discipline : un facteur souvent décisif

Les cartons influencent directement l’issue d’une rencontre. Une équipe sanctionnée s’expose à une infériorité numérique préjudiciable. En analysant le nombre de cartons jaunes ou rouges, on mesure le niveau de maîtrise des joueurs. Une formation disciplinée conserve sa structure plus longtemps et augmente ses chances de succès.

Forces collectives et joueurs décisifs

Les statistiques Premiership mettent aussi en lumière les meilleures attaques et défenses du championnat. Elles révèlent quelles équipes dominent dans la circulation du ballon ou dans la capacité à stopper l’adversaire. En parallèle, le suivi des meilleurs réalisateurs et marqueurs identifie les éléments-clés du jeu. Ces indicateurs guident les observateurs et nourrissent les débats.

Pour résumer

Les statistiques Premiership dévoilent les dessous du jeu et enrichissent l’analyse. Elles permettent de suivre les performances, d’anticiper les dynamiques et d’identifier les leaders de la saison. Grâce à ces données, le rugby devient plus lisible, sans rien perdre de sa passion.


Statistiques TOP 14
Statistiques TOP 14