{"id":4031,"date":"2026-04-28T21:23:17","date_gmt":"2026-04-28T19:23:17","guid":{"rendered":"https:\/\/www.tt-nogent.fr\/?page_id=4031"},"modified":"2026-04-28T21:37:55","modified_gmt":"2026-04-28T19:37:55","slug":"classement-actuel","status":"publish","type":"page","link":"https:\/\/www.tt-nogent.fr\/index.php\/classement-actuel\/","title":{"rendered":"Classement actuel"},"content":{"rendered":"<div style=\"max-width: 1200px; margin: 2rem auto; padding: 2rem; background: white; border-radius: 12px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); font-family: 'Open Sans', sans-serif;\">\n  <!-- En-t\u00eate --><\/p>\n<div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; border-bottom: 1px solid #e9ecef; padding-bottom: 1rem;\">\n<div>\n<h1 style=\"color: #1E88E5; margin-bottom: 0.5rem; display: flex; align-items: center; gap: 10px;\">\n        <i class=\"fas fa-chart-line\" style=\"color: #FF6B35;\"><\/i><br \/>\n        Classement Intra-Mois &#8211; Juin 2026<br \/>\n      <\/h1>\n<p style=\"color: #666; margin: 0;\">Suivi des \u00e9volutions entre le 1er et le 15 juin 2026<\/p>\n<\/p><\/div>\n<div style=\"background: #f0f0f0; padding: 0.5rem 1rem; border-radius: 20px; font-size: 0.8rem; color: #666;\">\n      Derni\u00e8re mise \u00e0 jour: 15\/06\/2026\n    <\/div>\n<\/p><\/div>\n<p>  <!-- Instructions --><\/p>\n<div style=\"background: #f8f9fa; padding: 1.5rem; border-radius: 8px; margin-bottom: 2rem;\">\n<h3 style=\"color: #1E88E5; margin-bottom: 1rem;\">\u2699\ufe0f Comment utiliser ce tableau ?<\/h3>\n<div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;\">\n<div>\n<h4 style=\"color: #1E88E5; margin-bottom: 0.5rem;\">\ud83d\udcca Donn\u00e9es affich\u00e9es :<\/h4>\n<ul style=\"padding-left: 1.2rem; margin-bottom: 0; font-size: 0.9rem; color: #666;\">\n<li>Classement officiel de fin mai 2026<\/li>\n<li>Points gagn\u00e9s\/perdus en juin (matchs jou\u00e9s)<\/li>\n<li>Nouveau classement calcul\u00e9<\/li>\n<li>\u00c9volution de position estim\u00e9e<\/li>\n<\/ul><\/div>\n<div>\n<h4 style=\"color: #1E88E5; margin-bottom: 0.5rem;\">\ud83d\udcc5 Source des donn\u00e9es :<\/h4>\n<ul style=\"padding-left: 1.2rem; margin-bottom: 0; font-size: 0.9rem; color: #666;\">\n<li>Classements initiaux : PingPocket (fin mai)<\/li>\n<li>Points mensuels : Onglet \u00ab\u00a0Points mensuels\u00a0\u00bb<\/li>\n<li>D\u00e9tails par match : Onglet \u00ab\u00a0Journ\u00e9e\u00a0\u00bb<\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>  <!-- Filtres --><\/p>\n<div style=\"display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 2rem; align-items: center;\">\n<div style=\"display: flex; align-items: center; gap: 0.5rem;\">\n      <i class=\"fas fa-filter\" style=\"color: #1E88E5;\"><\/i><br \/>\n      <span style=\"font-weight: 600;\">Filtres :<\/span>\n    <\/div>\n<p>    <select id=\"category-filter\" style=\"padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;\"><option value=\"all\">Toutes cat\u00e9gories<\/option><option value=\"senior\">Seniors<\/option><option value=\"jeune\">Jeunes<\/option><option value=\"veteran\">V\u00e9t\u00e9rans<\/option><\/select><br \/>\n    <select id=\"sort-filter\" style=\"padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;\"><option value=\"default\">Tri par d\u00e9faut<\/option><option value=\"progress\">Meilleures progressions<\/option><option value=\"regress\">Plus fortes r\u00e9gressions<\/option><option value=\"new-ranking\">Nouveau classement<\/option><\/select><br \/>\n    <button onclick=\"filterTable()\" style=\"padding: 0.5rem 1rem; background: #1E88E5; color: white; border: none; border-radius: 4px; cursor: pointer;\"><br \/>\n      <i class=\"fas fa-sync-alt\" style=\"margin-right: 5px;\"><\/i> Appliquer<br \/>\n    <\/button>\n  <\/div>\n<p>  <!-- Tableau de classement --><\/p>\n<div class=\"table-responsive\">\n<table id=\"classement-table\">\n<thead>\n<tr style=\"background: #f8f9fa;\">\n<th style=\"padding: 12px; text-align: center; width: 50px;\">#<\/th>\n<th style=\"padding: 12px; text-align: left; min-width: 200px;\">Licenci\u00e9<\/th>\n<th style=\"padding: 12px; text-align: center; width: 100px;\">Classement initial<\/th>\n<th style=\"padding: 12px; text-align: center; width: 100px;\">Matchs jou\u00e9s<\/th>\n<th style=\"padding: 12px; text-align: center; width: 120px;\">Points gagn\u00e9s\/perdus<\/th>\n<th style=\"padding: 12px; text-align: center; width: 100px;\">Nouveau classement<\/th>\n<th style=\"padding: 12px; text-align: center; width: 100px;\">\u00c9volution position<\/th>\n<th style=\"padding: 12px; text-align: center; width: 100px;\">Cat\u00e9gorie<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n        <!-- Les donn\u00e9es seront ajout\u00e9es ici par JavaScript --><br \/>\n      <\/tbody>\n<\/table><\/div>\n<p>  <!-- L\u00e9gende --><\/p>\n<div style=\"display: flex; justify-content: center; gap: 2rem; margin: 2rem 0; flex-wrap: wrap;\">\n<div style=\"display: flex; align-items: center; gap: 0.5rem;\">\n      <i class=\"fas fa-table-tennis\" style=\"color: #FF6B35;\"><\/i><br \/>\n      <span style=\"font-size: 0.9rem;\">Licenci\u00e9 actif<\/span>\n    <\/div>\n<div style=\"display: flex; align-items: center; gap: 0.5rem;\">\n      <span style=\"color: #4CAF50; font-weight: bold;\">+XX<\/span><br \/>\n      <span style=\"font-size: 0.9rem;\">Progression<\/span>\n    <\/div>\n<div style=\"display: flex; align-items: center; gap: 0.5rem;\">\n      <span style=\"color: #dc3545; font-weight: bold;\">-XX<\/span><br \/>\n      <span style=\"font-size: 0.9rem;\">R\u00e9gression<\/span>\n    <\/div>\n<div style=\"display: flex; align-items: center; gap: 0.5rem;\">\n      <span style=\"color: #1E88E5;\">\u2191 XX<\/span><br \/>\n      <span style=\"font-size: 0.9rem;\">Am\u00e9lioration de position<\/span>\n    <\/div>\n<div style=\"display: flex; align-items: center; gap: 0.5rem;\">\n      <span style=\"color: #FF6B35;\">\u2193 XX<\/span><br \/>\n      <span style=\"font-size: 0.9rem;\">Baisse de position<\/span>\n    <\/div>\n<\/p><\/div>\n<p>  <!-- Graphique de progression globale --><\/p>\n<div style=\"margin-top: 3rem; background: #f8f9fa; padding: 1.5rem; border-radius: 8px;\">\n<h3 style=\"color: #1E88E5; margin-bottom: 1rem;\">\ud83d\udcc8 \u00c9volution globale du club<\/h3>\n<div style=\"height: 200px; background: linear-gradient(to right, rgba(30, 136, 229, 0.2), rgba(255, 107, 53, 0.2)); border-radius: 8px; position: relative; margin-bottom: 1rem;\">\n<div id=\"global-progress-bar\" style=\"position: absolute; bottom: 0; left: 0; height: 20px; width: 0%; background: linear-gradient(to right, #1E88E5, #FF6B35); border-radius: 0 0 8px 8px;\"><\/div>\n<div id=\"global-progress-text\" style=\"position: absolute; bottom: -25px; left: 0; right: 0; text-align: center; font-size: 0.9rem; color: #1E88E5;\">\n        +0 points cumul\u00e9s ce mois\n      <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<p><!-- Font Awesome pour les ic\u00f4nes -->\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.0.0\/css\/all.min.css\">\n<p><!-- JavaScript pour la gestion du tableau --><br \/>\n<script>\n\/\/ Donn\u00e9es initiales avec les joueurs que tu m'as mentionn\u00e9s + valeurs r\u00e9alistes\nlet licenci\u00e9s = [\n  {\n    nom: \"Mathis BITEAU\",\n    classementInitial: 1500,\n    matchsJoues: 4,\n    points: 64,  \/\/ +64 points en 4 matchs \u2192 +16 par match (tr\u00e8s bonne performance)\n    categorie: \"senior\",\n    details: [\n      {date: \"02\/06\", adversaire: \"US Ivry\", resultat: \"Victoire 3-0\", points: +20},\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"Victoire 3-1\", points: +24},\n      {date: \"12\/06\", adversaire: \"TT Choisy\", resultat: \"D\u00e9faite 2-3\", points: +12},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Victoire 3-0\", points: +8}\n    ]\n  },\n  {\n    nom: \"Christophe GAILLARDO\",\n    classementInitial: 1550,\n    matchsJoues: 3,\n    points: 33,  \/\/ +33 en 3 matchs \u2192 +11 par match (bonne performance)\n    categorie: \"senior\",\n    details: [\n      {date: \"02\/06\", adversaire: \"US Ivry\", resultat: \"Victoire 3-2\", points: +12},\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"Nul 2-2\", points: +8},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Victoire 3-1\", points: +13}\n    ]\n  },\n  {\n    nom: \"Daniel MARQUES\",\n    classementInitial: 1600,\n    matchsJoues: 3,\n    points: 27,  \/\/ +27 en 3 matchs \u2192 +9 par match\n    categorie: \"senior\",\n    details: [\n      {date: \"02\/06\", adversaire: \"US Ivry\", resultat: \"D\u00e9faite 1-3\", points: +5},\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"Victoire 3-0\", points: +12},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Victoire 3-2\", points: +10}\n    ]\n  },\n  {\n    nom: \"Benjamin DORE\",\n    classementInitial: 1620,\n    matchsJoues: 2,\n    points: 24,  \/\/ +24 en 2 matchs \u2192 +12 par match\n    categorie: \"jeune\",\n    details: [\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"Victoire 3-0\", points: +15},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"D\u00e9faite 1-3\", points: +9}\n    ]\n  },\n  {\n    nom: \"Steve BERNARDIN\",\n    classementInitial: 1650,\n    matchsJoues: 2,\n    points: 19,  \/\/ +19 en 2 matchs \u2192 +9.5 par match\n    categorie: \"jeune\",\n    details: [\n      {date: \"02\/06\", adversaire: \"US Ivry\", resultat: \"Victoire 3-1\", points: +10},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Victoire 3-2\", points: +9}\n    ]\n  },\n  {\n    nom: \"Jean DUPONT\",\n    classementInitial: 1480,\n    matchsJoues: 3,\n    points: -15, \/\/ -15 en 3 matchs \u2192 -5 par match\n    categorie: \"veteran\",\n    details: [\n      {date: \"02\/06\", adversaire: \"US Ivry\", resultat: \"D\u00e9faite 0-3\", points: -8},\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"D\u00e9faite 1-3\", points: -5},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Nul 2-2\", points: -2}\n    ]\n  },\n  {\n    nom: \"Marie MARTIN\",\n    classementInitial: 1520,\n    matchsJoues: 2,\n    points: 10,  \/\/ +10 en 2 matchs \u2192 +5 par match\n    categorie: \"senior\",\n    details: [\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"Victoire 3-2\", points: +6},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Victoire 3-1\", points: +4}\n    ]\n  },\n  {\n    nom: \"Pierre DURAND\",\n    classementInitial: 1580,\n    matchsJoues: 2,\n    points: -5,  \/\/ -5 en 2 matchs \u2192 -2.5 par match\n    categorie: \"veteran\",\n    details: [\n      {date: \"02\/06\", adversaire: \"US Ivry\", resultat: \"D\u00e9faite 1-3\", points: -3},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"D\u00e9faite 0-3\", points: -2}\n    ]\n  },\n  {\n    nom: \"Sophie LEROY\",\n    classementInitial: 1610,\n    matchsJoues: 3,\n    points: 45,  \/\/ +45 en 3 matchs \u2192 +15 par match (excellente performance)\n    categorie: \"jeune\",\n    details: [\n      {date: \"02\/06\", adversaire: \"US Ivry\", resultat: \"Victoire 3-0\", points: +18},\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"Victoire 3-1\", points: +12},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Victoire 3-0\", points: +15}\n    ]\n  },\n  {\n    nom: \"Thomas MOREAU\",\n    classementInitial: 1590,\n    matchsJoues: 2,\n    points: 30,  \/\/ +30 en 2 matchs \u2192 +15 par match\n    categorie: \"senior\",\n    details: [\n      {date: \"09\/06\", adversaire: \"AS Bondy\", resultat: \"Victoire 3-0\", points: +18},\n      {date: \"15\/06\", adversaire: \"AC Bobigny\", resultat: \"Victoire 3-1\", points: +12}\n    ]\n  }\n];<\/p>\n<p>\/\/ Fonction pour afficher le tableau\nfunction afficherClassement() {\n  \/\/ Tri par d\u00e9faut (par nouveau classement)\n  licenci\u00e9s.sort((a, b) => {\n    const aNouveau = a.classementInitial - a.points;\n    const bNouveau = b.classementInitial - b.points;\n    return aNouveau - bNouveau;\n  });<\/p>\n<p>  \/\/ Calcul des positions et \u00e9volutions\n  let html = '';\n  let previousTotal = null;\n  let previousPosition = 0;\n  let totalGlobal = 0;<\/p>\n<p>  \/\/ Calcul du total global\n  licenci\u00e9s.forEach(licencie => {\n    totalGlobal += licencie.points;\n  });<\/p>\n<p>  \/\/ Mise \u00e0 jour de la barre de progression globale\n  const progressPercentage = totalGlobal > 0 ?\n    Math.min(100, (totalGlobal \/ 100) * 10) :  \/\/ \u00c9chelle ajust\u00e9e pour 100 points max\n    Math.max(0, (totalGlobal \/ -100) * 10);\n  document.getElementById('global-progress-bar').style.width = `${progressPercentage}%`;\n  document.getElementById('global-progress-text').textContent =\n    `${totalGlobal > 0 ? '+' : ''}${totalGlobal} points cumul\u00e9s ce mois`;<\/p>\n<p>  licenci\u00e9s.forEach((licencie, index) => {\n    const nouveauClassement = licencie.classementInitial - licencie.points;\n    let position = index + 1;<\/p>\n<p>    \/\/ Gestion des ex-aequo\n    if (previousTotal === nouveauClassement) {\n      position = previousPosition;\n    } else {\n      previousPosition = position;\n    }\n    previousTotal = nouveauClassement;<\/p>\n<p>    \/\/ Calcul de l'\u00e9volution de position (simul\u00e9e ici)\n    \/\/ Dans un vrai sc\u00e9nario, il faudrait comparer avec le classement r\u00e9el du mois pr\u00e9c\u00e9dent\n    \/\/ Ici on simule une \u00e9volution bas\u00e9e sur la performance\n    let evolutionPosition = 0;\n    if (licencie.points > 30) evolutionPosition = -Math.floor(licencie.points \/ 20); \/\/ Forte progression\n    else if (licencie.points > 10) evolutionPosition = -Math.floor(licencie.points \/ 30);\n    else if (licencie.points < -10) evolutionPosition = Math.floor(Math.abs(licencie.points) \/ 20);\n    else if (licencie.points < 0) evolutionPosition = Math.floor(Math.abs(licencie.points) \/ 30);\n\n    \/\/ Couleur en fonction de l'\u00e9volution\n    const evolutionColor = licencie.points >= 0 ? '#4CAF50' : '#dc3545';\n    const evolutionSign = licencie.points >= 0 ? '+' : '';\n    const positionColor = evolutionPosition <= 0 ? '#1E88E5' : '#FF6B35';\n    const positionSign = evolutionPosition <= 0 ? '\u2191' : '\u2193';\n\n    \/\/ D\u00e9tails des matchs (pour tooltip)\n    const detailsHtml = licencie.details.map(d =>\n      `<\/p>\n<div style=\"margin-bottom: 0.5rem; font-size: 0.9rem;\">\n        <strong>${d.date}<\/strong> vs ${d.adversaire}: ${d.resultat} (${d.points > 0 ? '+' : ''}${d.points} pts)\n      <\/div>\n<p>`\n    ).join('');<\/p>\n<p>    html += `<\/p>\n<tr style=\"border-bottom: 1px solid #e9ecef;\" onmouseover=\"this.style.background='rgba(30,136,229,0.03)'\" onmouseout=\"this.style.background=''\">\n<td style=\"padding: 12px; text-align: center; font-weight: bold; color: #1E88E5;\">${position}<\/td>\n<td style=\"padding: 12px; text-align: left; display: flex; align-items: center; gap: 0.5rem;\">\n          <i class=\"fas fa-table-tennis\" style=\"color: #FF6B35;\"><\/i><\/p>\n<div>\n            ${licencie.nom}<\/p>\n<div class=\"match-details\" style=\"display: none; position: absolute; background: white; border: 1px solid #ddd; border-radius: 8px; padding: 1rem; box-shadow: 0 4px 15px rgba(0,0,0,0.1); z-index: 100; width: 300px; left: 0; top: 100%;\">\n<h4 style=\"color: #1E88E5; margin-bottom: 0.5rem;\">D\u00e9tails des matchs<\/h4>\n<p>              ${detailsHtml}<\/p>\n<div style=\"margin-top: 0.5rem; font-weight: bold; color: ${evolutionColor};\">\n                Total: ${evolutionSign}${licencie.points} pts sur ${licencie.matchsJoues} matchs\n              <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/td>\n<td style=\"padding: 12px; text-align: center;\">${licencie.classementInitial}<\/td>\n<td style=\"padding: 12px; text-align: center;\">${licencie.matchsJoues}<\/td>\n<td style=\"padding: 12px; text-align: center; color: ${evolutionColor}; font-weight: bold;\">\n          ${evolutionSign}${licencie.points}\n        <\/td>\n<td style=\"padding: 12px; text-align: center; font-weight: bold;\">${nouveauClassement}<\/td>\n<td style=\"padding: 12px; text-align: center; color: ${positionColor};\">\n          ${evolutionPosition !== 0 ? `${positionSign} ${Math.abs(evolutionPosition)}` : '\u2192'}\n        <\/td>\n<td style=\"padding: 12px; text-align: center;\">\n          <span style=\"background: ${licencie.categorie === 'senior' ? '#e3f2fd' :\n                                        licencie.categorie === 'jeune' ? '#e8f5e9' :\n                                        '#f5f5f5'};\n                padding: 0.25rem 0.5rem;\n                border-radius: 12px;\n                font-size: 0.8rem;\n                color: ${licencie.categorie === 'senior' ? '#1976d2' :\n                                      licencie.categorie === 'jeune' ? '#4caf50' :\n                                      '#666'};\">\n            ${licencie.categorie === 'senior' ? 'Senior' :\n              licencie.categorie === 'jeune' ? 'Jeune' : 'V\u00e9t\u00e9ran'}\n          <\/span>\n        <\/td>\n<\/tr>\n<p>    `;\n  });<\/p>\n<p>  document.querySelector('#classement-table tbody').innerHTML = html;<\/p>\n<p>  \/\/ Ajout des tooltips pour les d\u00e9tails des matchs\n  document.querySelectorAll('#classement-table tbody tr').forEach((row, index) => {\n    const nomCell = row.querySelector('td:nth-child(2)');\n    nomCell.addEventListener('mouseenter', function() {\n      const details = this.querySelector('.match-details');\n      if (details) {\n        details.style.display = 'block';\n      }\n    });\n    nomCell.addEventListener('mouseleave', function() {\n      const details = this.querySelector('.match-details');\n      if (details) {\n        details.style.display = 'none';\n      }\n    });\n  });\n}<\/p>\n<p>\/\/ Fonction pour filtrer le tableau\nfunction filterTable() {\n  const category = document.getElementById('category-filter').value;\n  const sort = document.getElementById('sort-filter').value;<\/p>\n<p>  \/\/ Filtre par cat\u00e9gorie\n  let filtered = [...licenci\u00e9s];\n  if (category !== 'all') {\n    filtered = licenci\u00e9s.filter(l => l.categorie === category);\n  }<\/p>\n<p>  \/\/ Tri\n  switch(sort) {\n    case 'progress':\n      filtered.sort((a, b) => b.points - a.points);\n      break;\n    case 'regress':\n      filtered.sort((a, b) => a.points - b.points);\n      break;\n    case 'new-ranking':\n      filtered.sort((a, b) => (a.classementInitial - a.points) - (b.classementInitial - b.points));\n      break;\n    default:\n      \/\/ Tri par nom\n      filtered.sort((a, b) => a.nom.localeCompare(b.nom));\n  }<\/p>\n<p>  \/\/ Recalcul des positions pour l'affichage\n  let html = '';\n  let previousTotal = null;\n  let previousPosition = 0;<\/p>\n<p>  filtered.forEach((licencie, index) => {\n    const nouveauClassement = licencie.classementInitial - licencie.points;\n    let position = index + 1;<\/p>\n<p>    if (previousTotal === nouveauClassement) {\n      position = previousPosition;\n    } else {\n      previousPosition = position;\n    }\n    previousTotal = nouveauClassement;<\/p>\n<p>    \/\/ Calcul de l'\u00e9volution de position\n    let evolutionPosition = 0;\n    if (licencie.points > 30) evolutionPosition = -Math.floor(licencie.points \/ 20);\n    else if (licencie.points > 10) evolutionPosition = -Math.floor(licencie.points \/ 30);\n    else if (licencie.points < -10) evolutionPosition = Math.floor(Math.abs(licencie.points) \/ 20);\n    else if (licencie.points < 0) evolutionPosition = Math.floor(Math.abs(licencie.points) \/ 30);\n\n    const evolutionColor = licencie.points >= 0 ? '#4CAF50' : '#dc3545';\n    const evolutionSign = licencie.points >= 0 ? '+' : '';\n    const positionColor = evolutionPosition <= 0 ? '#1E88E5' : '#FF6B35';\n    const positionSign = evolutionPosition <= 0 ? '\u2191' : '\u2193';\n\n    const detailsHtml = licencie.details.map(d =>\n      `<\/p>\n<div style=\"margin-bottom: 0.5rem; font-size: 0.9rem;\">\n        <strong>${d.date}<\/strong> vs ${d.adversaire}: ${d.resultat} (${d.points > 0 ? '+' : ''}${d.points} pts)\n      <\/div>\n<p>`\n    ).join('');<\/p>\n<p>    html += `<\/p>\n<tr style=\"border-bottom: 1px solid #e9ecef;\" onmouseover=\"this.style.background='rgba(30,136,229,0.03)'\" onmouseout=\"this.style.background=''\">\n<td style=\"padding: 12px; text-align: center; font-weight: bold; color: #1E88E5;\">${position}<\/td>\n<td style=\"padding: 12px; text-align: left; display: flex; align-items: center; gap: 0.5rem;\">\n          <i class=\"fas fa-table-tennis\" style=\"color: #FF6B35;\"><\/i><\/p>\n<div>\n            ${licencie.nom}<\/p>\n<div class=\"match-details\" style=\"display: none; position: absolute; background: white; border: 1px solid #ddd; border-radius: 8px; padding: 1rem; box-shadow: 0 4px 15px rgba(0,0,0,0.1); z-index: 100; width: 300px; left: 0; top: 100%;\">\n<h4 style=\"color: #1E88E5; margin-bottom: 0.5rem;\">D\u00e9tails des matchs<\/h4>\n<p>              ${detailsHtml}<\/p>\n<div style=\"margin-top: 0.5rem; font-weight: bold; color: ${evolutionColor};\">\n                Total: ${evolutionSign}${licencie.points} pts sur ${licencie.matchsJoues} matchs\n              <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/td>\n<td style=\"padding: 12px; text-align: center;\">${licencie.classementInitial}<\/td>\n<td style=\"padding: 12px; text-align: center;\">${licencie.matchsJoues}<\/td>\n<td style=\"padding: 12px; text-align: center; color: ${evolutionColor}; font-weight: bold;\">\n          ${evolutionSign}${licencie.points}\n        <\/td>\n<td style=\"padding: 12px; text-align: center; font-weight: bold;\">${nouveauClassement}<\/td>\n<td style=\"padding: 12px; text-align: center; color: ${positionColor};\">\n          ${evolutionPosition !== 0 ? `${positionSign} ${Math.abs(evolutionPosition)}` : '\u2192'}\n        <\/td>\n<td style=\"padding: 12px; text-align: center;\">\n          <span style=\"background: ${licencie.categorie === 'senior' ? '#e3f2fd' :\n                                        licencie.categorie === 'jeune' ? '#e8f5e9' :\n                                        '#f5f5f5'};\n                padding: 0.25rem 0.5rem;\n                border-radius: 12px;\n                font-size: 0.8rem;\n                color: ${licencie.categorie === 'senior' ? '#1976d2' :\n                                      licencie.categorie === 'jeune' ? '#4caf50' :\n                                      '#666'};\">\n            ${licencie.categorie === 'senior' ? 'Senior' :\n              licencie.categorie === 'jeune' ? 'Jeune' : 'V\u00e9t\u00e9ran'}\n          <\/span>\n        <\/td>\n<\/tr>\n<p>    `;\n  });<\/p>\n<p>  document.querySelector('#classement-table tbody').innerHTML =\n    filtered.length > 0 ? html : `<\/p>\n<tr>\n<td colspan=\"8\" style=\"text-align: center; padding: 2rem; color: #666;\">\n          Aucun licenci\u00e9 ne correspond aux filtres appliqu\u00e9s\n        <\/td>\n<\/tr>\n<p>    `;<\/p>\n<p>  \/\/ Ajout des tooltips pour les d\u00e9tails des matchs\n  document.querySelectorAll('#classement-table tbody tr').forEach((row, index) => {\n    const nomCell = row.querySelector('td:nth-child(2)');\n    nomCell.addEventListener('mouseenter', function() {\n      const details = this.querySelector('.match-details');\n      if (details) {\n        details.style.display = 'block';\n      }\n    });\n    nomCell.addEventListener('mouseleave', function() {\n      const details = this.querySelector('.match-details');\n      if (details) {\n        details.style.display = 'none';\n      }\n    });\n  });\n}<\/p>\n<p>\/\/ Initialisation\ndocument.addEventListener('DOMContentLoaded', function() {\n  afficherClassement();\n});\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Classement Intra-Mois &#8211; Juin 2026 Suivi des \u00e9volutions entre le 1er et le 15 juin 2026 Derni\u00e8re mise \u00e0 jour: 15\/06\/2026 \u2699\ufe0f Comment utiliser ce tableau ? \ud83d\udcca Donn\u00e9es affich\u00e9es : Classement officiel de fin mai 2026 Points gagn\u00e9s\/perdus en juin (matchs jou\u00e9s) Nouveau classement calcul\u00e9 \u00c9volution de position estim\u00e9e \ud83d\udcc5 Source des donn\u00e9es : [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4031","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/pages\/4031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/comments?post=4031"}],"version-history":[{"count":3,"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/pages\/4031\/revisions"}],"predecessor-version":[{"id":4035,"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/pages\/4031\/revisions\/4035"}],"wp:attachment":[{"href":"https:\/\/www.tt-nogent.fr\/index.php\/wp-json\/wp\/v2\/media?parent=4031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}