{"id":23,"date":"2026-01-12T12:51:43","date_gmt":"2026-01-12T11:51:43","guid":{"rendered":"http:\/\/l2datafoot.fr\/?page_id=23"},"modified":"2026-01-12T12:53:19","modified_gmt":"2026-01-12T11:53:19","slug":"dashdoard","status":"publish","type":"page","link":"https:\/\/l2datafoot.fr\/index.php\/dashdoard\/","title":{"rendered":"Dashdoard"},"content":{"rendered":"\n<div class=\"container py-4\">\n  <div class=\"d-flex align-items-center justify-content-between mb-3\">\n    <div>\n      <h1 class=\"h3 mb-0\">Dashboard<\/h1>\n      <div class=\"l2-muted\">Acc\u00e8s r\u00e9serv\u00e9<\/div>\n    <\/div>\n    <a class=\"btn btn-outline-secondary\" href=\"\/wp-login.php?action=logout\">D\u00e9connexion<\/a>\n  <\/div>\n\n  <div id=\"kpis\" class=\"row g-3 mb-3\"><\/div>\n\n  <div class=\"row g-3\">\n    <div class=\"col-lg-7\">\n      <div class=\"l2-table-wrap\">\n        <table id=\"oddsTable\" class=\"table table-striped\" style=\"width:100%\">\n          <thead>\n            <tr>\n              <th>Fixture<\/th>\n              <th>Bookmaker<\/th>\n              <th>Snapshot<\/th>\n              <th>Odds<\/th>\n            <\/tr>\n          <\/thead>\n          <tbody><\/tbody>\n        <\/table>\n      <\/div>\n    <\/div>\n\n    <div class=\"col-lg-5\">\n      <div class=\"l2-table-wrap\">\n        <h2 class=\"h6 mb-3\">R\u00e9partition par bookmaker<\/h2>\n        <canvas id=\"bmChart\" height=\"220\"><\/canvas>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(async function() {\n  const res = await fetch(window.L2_DASH.restUrl, { credentials: 'same-origin' });\n  if (!res.ok) return;\n  const data = await res.json();\n\n  \/\/ KPIs\n  const kpisEl = document.getElementById('kpis');\n  kpisEl.innerHTML = data.kpis.map(k => `\n    <div class=\"col-md-4\">\n      <div class=\"card l2-card p-3\">\n        <div class=\"l2-muted\">${k.label}<\/div>\n        <div class=\"l2-kpi\">${k.value}<\/div>\n      <\/div>\n    <\/div>\n  `).join('');\n\n  \/\/ Table\n  const tbody = document.querySelector('#oddsTable tbody');\n  tbody.innerHTML = data.table.map(r => `\n    <tr>\n      <td>${r.fixture_id}<\/td>\n      <td>${r.bookmaker_id}<\/td>\n      <td>${r.snapshot_tag}<\/td>\n      <td>${r.odds}<\/td>\n    <\/tr>\n  `).join('');\n\n  \/\/ DataTables (tri\/recherche\/pagination)\n  jQuery(function($){\n    $('#oddsTable').DataTable({\n      pageLength: 25\n    });\n  });\n\n  \/\/ Chart\n  const ctx = document.getElementById('bmChart');\n  new Chart(ctx, {\n    type: 'bar',\n    data: {\n      labels: data.chart.labels,\n      datasets: [{ label: 'Count', data: data.chart.values }]\n    }\n  });\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Dashboard Acc\u00e8s r\u00e9serv\u00e9 D\u00e9connexion Fixture Bookmaker Snapshot Odds R\u00e9partition par bookmaker<\/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-23","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/pages\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":3,"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/pages\/23\/revisions"}],"predecessor-version":[{"id":26,"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/pages\/23\/revisions\/26"}],"wp:attachment":[{"href":"https:\/\/l2datafoot.fr\/index.php\/wp-json\/wp\/v2\/media?parent=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}