{"id":5004,"date":"2025-04-02T20:50:47","date_gmt":"2025-04-03T01:50:47","guid":{"rendered":"https:\/\/federacioncolombianadeajedrez.com\/?page_id=5004"},"modified":"2026-03-06T20:50:41","modified_gmt":"2026-03-07T01:50:41","slug":"infoligas","status":"publish","type":"page","link":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/infoligas\/","title":{"rendered":"Infoligas"},"content":{"rendered":"<div style=\"max-width:1200px;margin:0 auto;padding:10px;\">\n<div style=\"display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center;margin:10px 0 18px;text-align:center;\">\n    <img decoding=\"async\"\n      src=\"https:\/\/federacioncolombianadeajedrez.com\/wp-content\/uploads\/cropped-Logo-FECODAZ-en-ALTA.png\"\n      alt=\"FECODAZ\"\n      width=\"90\"\n      style=\"border-radius:10px;box-shadow:0 6px 16px rgba(0,0,0,.12);\" \/><\/p>\n<div style=\"flex:1;min-width:260px;\">\n<h2 style=\"font-size:2em;margin:0;color:#0f172a;\">\n        <strong>LIGAS AFILIADAS A FECODAZ<\/strong><br \/>\n      <\/h2>\n<p style=\"font-size:1em;color:#64748b;margin:.35rem 0 0;\">\n        Consulte la informaci\u00f3n de las Ligas y sus estad\u00edsticas.\n      <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div style=\"max-width:900px;margin:0 auto;background:#fff;border:1px solid rgba(15,23,42,.12);border-radius:16px;padding:14px;box-shadow:0 10px 28px rgba(2,6,23,.08);margin-bottom:14px;\">\n<p>        <div class=\"ligasfca-container\" style=\"max-width:1200px; margin:0 auto; background:#fff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.1); padding:30px;\">\n\n<!-- Selector de ligas -->\n<div style=\"margin-bottom:30px; background:#f8faf8; padding:20px; border-radius:12px; border:2px solid #d0e6d0; text-align:center;\">\n\n<label for=\"ligasfca-select\" style=\"font-weight:600; color:#1e4a2c; display:block; margin-bottom:12px; font-size:18px;\">\n\ud83d\udccb Selecciona una liga\n<\/label>\n\n<select id=\"ligasfca-select\" style=\"width:100%; max-width:500px; padding:12px; border:2px solid #d0e6d0; border-radius:8px; font-size:16px;\">\n<option value=\"\">-- Seleccionar liga --<\/option>\n                                        <option value=\"33\">CCA<\/option>\n                                        <option value=\"31\">FECODAZ<\/option>\n                                        <option value=\"34\">FIDE<\/option>\n                                        <option value=\"32\">FUNDACI\u00d3N A LA RUEDA RUEDA<\/option>\n                                        <option value=\"7\">Liga Caldense de Ajedrez<\/option>\n                                        <option value=\"30\">Liga Caucana de Ajedrez<\/option>\n                                        <option value=\"23\">Liga Santandereana de Ajedrez<\/option>\n                                        <option value=\"1\">Liga de Ajedrez de Antioquia<\/option>\n                                        <option value=\"29\">Liga de Ajedrez de Atl\u00e1ntico<\/option>\n                                        <option value=\"4\">Liga de Ajedrez de Bogot\u00e1<\/option>\n                                        <option value=\"5\">Liga de Ajedrez de Bol\u00edvar<\/option>\n                                        <option value=\"6\">Liga de Ajedrez de Boyac\u00e1<\/option>\n                                        <option value=\"8\">Liga de Ajedrez de Caquet\u00e1<\/option>\n                                        <option value=\"9\">Liga de Ajedrez de Casanare<\/option>\n                                        <option value=\"13\">Liga de Ajedrez de Cundinamarca<\/option>\n                                        <option value=\"12\">Liga de Ajedrez de C\u00f3rdoba<\/option>\n                                        <option value=\"14\">Liga de Ajedrez de La Guajira<\/option>\n                                        <option value=\"16\">Liga de Ajedrez de Magdalena<\/option>\n                                        <option value=\"17\">Liga de Ajedrez de Meta<\/option>\n                                        <option value=\"19\">Liga de Ajedrez de Norte de Santander<\/option>\n                                        <option value=\"20\">Liga de Ajedrez de Quind\u00edo<\/option>\n                                        <option value=\"21\">Liga de Ajedrez de Risaralda<\/option>\n                                        <option value=\"22\">Liga de Ajedrez de San Andr\u00e9s y Providencia<\/option>\n                                        <option value=\"24\">Liga de Ajedrez de Sucre<\/option>\n                                        <option value=\"25\">Liga de Ajedrez de Tolima<\/option>\n                                        <option value=\"10\">Liga de Ajedrez del Cesar<\/option>\n                                        <option value=\"11\">Liga de Ajedrez del Choc\u00f3<\/option>\n                                        <option value=\"15\">Liga de Ajedrez del Huila<\/option>\n                                        <option value=\"26\">Liga de Ajedrez del Valle del Cauca<\/option>\n                                    <\/select>\n            <\/div>\n            \n            <!-- Informaci\u00f3n de la liga seleccionada -->\n            <div id=\"ligasfca-info\" style=\"display:none; margin-bottom:30px;\">\n                <div style=\"background:#f8faf8; border-radius:12px; padding:20px; border:2px solid #d0e6d0;\">\n                    <div id=\"ligasfca-liga-detalle\"><\/div>\n                <\/div>\n            <\/div>\n            \n            <!-- Filtros mejorados -->\n            <div id=\"ligasfca-filtros\" style=\"display:none; margin-bottom:20px; background:#f8faf8; padding:20px; border-radius:12px; border:2px solid #d0e6d0;\">\n                <div style=\"display:flex; gap:20px; flex-wrap:wrap; align-items:center;\">\n                    <div style=\"flex:1; min-width:200px;\">\n                        <label for=\"liga-club-select\" style=\"font-weight:600; color:#1e4a2c; display:block; margin-bottom:5px;\">\n                            \ud83c\udfdf\ufe0f Filtrar por Club:\n                        <\/label>\n                        <select id=\"liga-club-select\" style=\"width:100%; padding:10px; border:2px solid #d0e6d0; border-radius:8px;\">\n                            <option value=\"\">Todos los clubes<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div style=\"flex:1; min-width:200px;\">\n                        <label for=\"liga-vigencia-select\" style=\"font-weight:600; color:#1e4a2c; display:block; margin-bottom:5px;\">\n                            \ud83d\udcc5 Filtrar por Vigencia:\n                        <\/label>\n                        <select id=\"liga-vigencia-select\" style=\"width:100%; padding:10px; border:2px solid #d0e6d0; border-radius:8px;\">\n                            <option value=\"\">Todos<\/option>\n                            <option value=\"activa\">Vigencia activa<\/option>\n                            <option value=\"vencida\">Vigencia vencida<\/option>\n                            <option value=\"sin\">Sin vigencia<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div style=\"flex:1; min-width:200px;\">\n                        <label for=\"liga-buscar\" style=\"font-weight:600; color:#1e4a2c; display:block; margin-bottom:5px;\">\n                            \ud83d\udd0d Buscar jugador:\n                        <\/label>\n                        <input type=\"text\" id=\"liga-buscar\" placeholder=\"Nombre del jugador...\" style=\"width:100%; padding:10px; border:2px solid #d0e6d0; border-radius:8px;\">\n                    <\/div>\n                <\/div>\n                \n                <div style=\"display:flex; gap:10px; margin-top:15px; justify-content:flex-end;\">\n                    <button id=\"liga-filtros-aplicar\" class=\"button button-primary\" style=\"background:#1e4a2c; border-color:#1e4a2c; padding:8px 20px;\">\n                        Aplicar filtros\n                    <\/button>\n                    <button id=\"liga-filtros-limpiar\" class=\"button\" style=\"padding:8px 20px;\">\n                        Limpiar filtros\n                    <\/button>\n                <\/div>\n            <\/div>\n            \n            <!-- Estad\u00edsticas r\u00e1pidas MEJORADAS -->\n            <div id=\"ligasfca-stats\" style=\"display:none; margin-bottom:20px;\">\n                <div style=\"display:flex; gap:15px; flex-wrap:wrap;\">\n                    <div style=\"background:#e8f5e8; padding:10px 15px; border-radius:30px;\">\n                        <span style=\"font-weight:700; color:#1e4a2c;\" id=\"stats-jugadores\">0<\/span> jugadores\n                    <\/div>\n                    <div style=\"background:#e8f5e8; padding:10px 15px; border-radius:30px;\">\n                        <span style=\"font-weight:700; color:#1e4a2c;\" id=\"stats-clubes\">0<\/span> clubes\n                    <\/div>\n                    <div style=\"background:#e8f5e8; padding:10px 15px; border-radius:30px;\">\n                        <span style=\"font-weight:700; color:#1e4a2c;\" id=\"stats-vigentes\">0<\/span> vigentes\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <!-- Clubes de la liga -->\n            <div id=\"ligasfca-clubes\" style=\"display:none; margin-bottom:30px;\">\n                <h3 style=\"color:#1e4a2c; border-bottom:2px solid #c6a43f; padding-bottom:10px; margin-bottom:20px;\">\n                    <span style=\"font-size:24px;\">\ud83c\udfdf\ufe0f<\/span> Clubes de la Liga\n                    <span style=\"background:#c6a43f; color:#1e4a2c; padding:2px 10px; border-radius:30px; font-size:14px; margin-left:10px;\" id=\"clubes-count\"><\/span>\n                <\/h3>\n                <div id=\"ligasfca-clubes-content\" style=\"display:grid; grid-template-columns:repeat(auto-fill, minmax(250px,1fr)); gap:15px;\"><\/div>\n            <\/div>\n            \n            <!-- Jugadores de la liga -->\n            <div id=\"ligasfca-jugadores\" style=\"display:none;\">\n                <h3 style=\"color:#1e4a2c; border-bottom:2px solid #c6a43f; padding-bottom:10px; margin-bottom:20px;\">\n                    <span style=\"font-size:24px;\">\ud83d\udc65<\/span> Jugadores de la Liga\n                    <span style=\"background:#c6a43f; color:#1e4a2c; padding:2px 10px; border-radius:30px; font-size:14px; margin-left:10px;\" id=\"jugadores-count\"><\/span>\n                <\/h3>\n                <div id=\"ligasfca-jugadores-content\"><\/div>\n            <\/div>\n            \n            <!-- Loading -->\n            <div id=\"ligasfca-loading\" style=\"display:none; text-align:center; padding:40px;\">\n                <span class=\"spinner is-active\" style=\"float:none;\"><\/span>\n                <p style=\"color:#5f7d4e;\">Cargando datos de la liga...<\/p>\n            <\/div>\n            \n        <\/div>\n        \n        <style>\n        .ligasfca-detalle-item {\n            display:flex;\n            align-items:center;\n            gap:12px;\n            padding:12px;\n            background:white;\n            border-radius:8px;\n            margin-bottom:10px;\n        }\n        .ligasfca-club-card {\n            background:white;\n            border:2px solid #d0e6d0;\n            border-radius:8px;\n            padding:15px;\n            transition:all 0.3s;\n            cursor:pointer;\n        }\n        .ligasfca-club-card:hover {\n            transform:translateY(-3px);\n            box-shadow:0 5px 15px rgba(30,74,44,0.1);\n            border-color:#c6a43f;\n        }\n        .ligasfca-club-card.seleccionado {\n            border-color:#c6a43f;\n            background:#f8f0e0;\n        }\n        .ligasfca-jugador-row {\n            display:grid;\n            grid-template-columns:2fr 1.5fr 1fr 1fr 1fr 0.5fr;\n            gap:10px;\n            padding:10px;\n            border-bottom:1px solid #e0f0e0;\n            align-items:center;\n        }\n        .ligasfca-jugador-row:hover {\n            background:#f0f8f0;\n        }\n        .ligasfca-jugador-header {\n            display:grid;\n            grid-template-columns:2fr 1.5fr 1fr 1fr 1fr 0.5fr;\n            gap:10px;\n            padding:10px;\n            background:#d0e6d0;\n            color:#1e4a2c;\n            font-weight:700;\n            border-radius:5px;\n            margin-bottom:5px;\n        }\n        .vigencia-activa {\n            color:#00a32a;\n            font-weight:600;\n        }\n        .vigencia-vencida {\n            color:#d63638;\n            font-weight:600;\n        }\n        <\/style>\n        \n        <script>\n        (function($) {\n            console.log('\u2705 ligasfca: Inicializado con ' + 29 + ' ligas');\n            \n            \/\/ Variables globales\n            var ajaxurl = 'https:\/\/federacioncolombianadeajedrez.com\/wp-admin\/admin-ajax.php';\n            var publicNonce = 'ae99466550';\n            var jugadoresData = [];\n            var clubesData = [];\n            var ligaActual = '';\n            var clubSeleccionado = '';\n            \n            \/\/ Bind eventos\n            $('#ligasfca-select').on('change', function() {\n                var ligaId = $(this).val();\n                ligaActual = ligaId;\n                \n                if (!ligaId) {\n                    $('#ligasfca-info, #ligasfca-filtros, #ligasfca-stats, #ligasfca-clubes, #ligasfca-jugadores').hide();\n                    return;\n                }\n                \n                $('#ligasfca-loading').show();\n                $('#ligasfca-info, #ligasfca-filtros, #ligasfca-stats, #ligasfca-clubes, #ligasfca-jugadores').hide();\n                \n                console.log('\ud83d\udd04 Cargando datos de liga ID:', ligaId);\n                \n                \/\/ Cargar detalles de la liga\n                $.ajax({\n                    url: ajaxurl,\n                    type: 'POST',\n                    dataType: 'json',\n                    data: {\n                        action: 'get_liga_details',\n                        liga_id: ligaId,\n                        nonce: publicNonce\n                    },\n                    success: function(res) {\n                        if (res.success) {\n                            renderLigaDetalle(res.data);\n                        }\n                    },\n                    error: function(xhr, status, error) {\n                        console.error('\u274c Error cargando detalles:', error);\n                    }\n                });\n                \n                \/\/ Cargar roster (jugadores y clubes)\n                $.ajax({\n                    url: ajaxurl,\n                    type: 'POST',\n                    dataType: 'json',\n                    data: {\n                        action: 'get_liga_roster',\n                        liga_id: ligaId,\n                        nonce: publicNonce\n                    },\n                    success: function(res) {\n                        $('#ligasfca-loading').hide();\n                        \n                        if (res.success) {\n                            console.log('\u2705 Roster recibido:', res.data);\n                            \n                            jugadoresData = res.data.players || [];\n                            clubesData = res.data.clubs || [];\n                            \n                            renderClubes(clubesData);\n                            renderJugadores(jugadoresData);\n                            actualizarSelectClubes(clubesData);\n                            actualizarEstadisticas(jugadoresData, clubesData);\n                            \n                            $('#ligasfca-info').show();\n                            $('#ligasfca-filtros').show();\n                            $('#ligasfca-stats').show();\n                            $('#ligasfca-clubes').show();\n                            $('#ligasfca-jugadores').show();\n                            \n                            clubSeleccionado = '';\n                            $('#liga-club-select').val('');\n                            $('#liga-vigencia-select').val('');\n                            $('#liga-buscar').val('');\n                        } else {\n                            alert('Error al cargar los datos');\n                        }\n                    },\n                    error: function(xhr, status, error) {\n                        $('#ligasfca-loading').hide();\n                        console.error('\u274c Error cargando roster:', error);\n                        alert('Error de conexi\u00f3n');\n                    }\n                });\n            });\n            \n            function renderLigaDetalle(data) {\n                var html = '<div style=\"display:flex; gap:20px; align-items:center; margin-bottom:20px;\">';\n                \n                if (data.logo) {\n                    html += '<img decoding=\"async\" src=\"' + data.logo + '\" style=\"max-width:100px; max-height:100px; border-radius:8px; border:2px solid #c6a43f;\">';\n                }\n                \n                html += '<div><h3 style=\"margin:0; color:#1e4a2c; font-size:24px;\">' + data.nombre + '<\/h3><\/div>';\n                html += '<\/div>';\n                html += '<div style=\"display:grid; grid-template-columns:repeat(2,1fr); gap:15px;\">';\n                html += data.data;\n                html += '<\/div>';\n                \n                $('#ligasfca-liga-detalle').html(html);\n            }\n            \n            function actualizarSelectClubes(clubes) {\n                var options = '<option value=\"\">Todos los clubes<\/option>';\n                \n                clubes.sort(function(a, b) {\n                    return (a.nombre || '').localeCompare(b.nombre || '');\n                }).forEach(function(club) {\n                    options += '<option value=\"' + (club.nombre || '') + '\">' + (club.nombre || '') + ' (' + (club.jugadores || 0) + ' jug.)<\/option>';\n                });\n                \n                $('#liga-club-select').html(options);\n            }\n            \n            function renderClubes(clubes) {\n                if (!clubes || clubes.length === 0) {\n                    $('#ligasfca-clubes').hide();\n                    $('#clubes-count').text('0');\n                    return;\n                }\n                \n                $('#clubes-count').text(clubes.length);\n                \n                var html = '';\n                clubes.forEach(function(club) {\n                    var selectedClass = (clubSeleccionado === club.nombre) ? 'seleccionado' : '';\n                    html += '<div class=\"ligasfca-club-card ' + selectedClass + '\" data-club=\"' + (club.nombre || '') + '\">';\n                    html += '<div style=\"font-weight:700; color:#1e4a2c; font-size:16px; margin-bottom:5px;\">' + (club.nombre || '') + '<\/div>';\n                    html += '<div style=\"color:#5f7d4e; font-size:14px;\">\ud83d\udc65 ' + (club.jugadores || 0) + ' jugadores<\/div>';\n                    html += '<\/div>';\n                });\n                \n                $('#ligasfca-clubes-content').html(html);\n                \n                $('.ligasfca-club-card').on('click', function() {\n                    var clubNombre = $(this).data('club');\n                    \n                    if (clubSeleccionado === clubNombre) {\n                        clubSeleccionado = '';\n                        $('.ligasfca-club-card').removeClass('seleccionado');\n                        $('#liga-club-select').val('');\n                    } else {\n                        clubSeleccionado = clubNombre;\n                        $('.ligasfca-club-card').removeClass('seleccionado');\n                        $(this).addClass('seleccionado');\n                        $('#liga-club-select').val(clubNombre);\n                    }\n                    \n                    aplicarFiltros();\n                });\n            }\n            \n            \/\/ ===== Funciones de utilidad para fechas =====\n            function parseFecha(input) {\n                if (!input) return null;\n                \n                \/\/ Si ya es objeto Date\n                if (input instanceof Date) return isNaN(input) ? null : input;\n                \n                const s = String(input).trim();\n                if (!s) return null;\n                \n                \/\/ YYYY-MM-DD o YYYY\/MM\/DD\n                let m = s.match(\/^(\\d{4})[-\\\/](\\d{1,2})[-\\\/](\\d{1,2})$\/);\n                if (m) {\n                    return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));\n                }\n                \n                \/\/ DD\/MM\/YYYY o DD-MM-YYYY o DD.MM.YYYY (formato colombiano)\n                m = s.match(\/^(\\d{1,2})[\\\/\\-.](\\d{1,2})[\\\/\\-.](\\d{4})$\/);\n                if (m) {\n                    return new Date(Number(m[3]), Number(m[2]) - 1, Number(m[1]));\n                }\n                \n                \/\/ Fecha tipo \"31 de diciembre de 2025\"\n                m = s.match(\/(\\d{1,2})\\s+de\\s+([a-z]+)\\s+de\\s+(\\d{4})\/i);\n                if (m) {\n                    const meses = {\n                        'enero':0, 'febrero':1, 'marzo':2, 'abril':3, 'mayo':4, 'junio':5,\n                        'julio':6, 'agosto':7, 'septiembre':8, 'octubre':9, 'noviembre':10, 'diciembre':11\n                    };\n                    const mes = meses[m[2].toLowerCase()];\n                    if (mes !== undefined) {\n                        return new Date(Number(m[3]), mes, Number(m[1]));\n                    }\n                }\n                \n                \/\/ Solo a\u00f1o\n                if (\/^\\d{4}$\/.test(s)) {\n                    return new Date(Number(s), 0, 1);\n                }\n                \n                \/\/ Fallback al parser nativo de JavaScript\n                const d = new Date(s);\n                return isNaN(d) ? null : d;\n            }\n\n            function endOfDay(d) {\n                const x = new Date(d);\n                x.setHours(23, 59, 59, 999);\n                return x;\n            }\n\n            function todayStart() {\n                const t = new Date();\n                t.setHours(0,0,0,0);\n                return t;\n            }\n\n            function isVigente(vigenciaStr) {\n                const today = todayStart();\n                const vig = parseFecha(vigenciaStr);\n                if (!vig) return null;\n                return endOfDay(vig) >= today;\n            }\n\n            function escapeHTML(v) {\n                return String(v ?? '').replace(\/[&<>\"']\/g, (m) => ({\n                    '&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'\n                }[m]));\n            }\n\n            \/\/ ===== Render de jugadores =====\n            function renderJugadores(jugadores) {\n                const $wrap = $('#ligasfca-jugadores');\n                const $count = $('#jugadores-count');\n                const $content = $('#ligasfca-jugadores-content');\n\n                if (!Array.isArray(jugadores) || jugadores.length === 0) {\n                    $wrap.hide();\n                    $count.text('0');\n                    $content.empty();\n                    return;\n                }\n\n                $wrap.show();\n                $count.text(String(jugadores.length));\n\n                let html = `\n                    <div class=\"ligasfca-jugador-header\">\n                        <div>Nombre<\/div><div>Club<\/div><div>Documento<\/div><div>Nacimiento<\/div><div>Vigencia<\/div><div><\/div>\n                    <\/div>\n                `;\n\n                for (const j of jugadores) {\n                    const nombre = escapeHTML(j?.nombre || '');\n                    const club = escapeHTML(j?.club || '\u2014');\n                    const doc = escapeHTML(j?.doc || '\u2014');\n                    const nacimiento = escapeHTML(j?.nacimiento || '\u2014');\n\n                    const vigRaw = j?.vigencia ? String(j.vigencia).trim() : '';\n                    const vigStatus = isVigente(vigRaw);\n\n                    let vigenciaClass = '';\n                    let vigenciaText = vigRaw ? escapeHTML(vigRaw) : '\u2014';\n\n                    if (vigRaw) {\n                        if (vigStatus === true) {\n                            vigenciaClass = 'vigencia-activa';\n                            vigenciaText += ' \u2713';\n                        } else if (vigStatus === false) {\n                            vigenciaClass = 'vigencia-vencida';\n                            vigenciaText += ' \u2717';\n                        } else {\n                            vigenciaClass = 'vigencia-invalida';\n                            vigenciaText = 'Fecha inv\u00e1lida';\n                        }\n                    }\n\n                    html += `\n                        <div class=\"ligasfca-jugador-row\"\n                             data-club=\"${escapeHTML(j?.club || '')}\"\n                             data-vigencia=\"${escapeHTML(vigRaw)}\">\n                            <div><strong>${nombre}<\/strong><\/div>\n                            <div>${club}<\/div>\n                            <div>${doc}<\/div>\n                            <div>${nacimiento}<\/div>\n                            <div class=\"${vigenciaClass}\">${vigenciaText}<\/div>\n                            <div>\n                                <button type=\"button\" class=\"button button-small ver-jugador\"\n                                        data-nombre=\"${nombre}\">\ud83d\udc64<\/button>\n                            <\/div>\n                        <\/div>\n                    `;\n                }\n\n                $content.html(html);\n            }\n\n            \/\/ Delegaci\u00f3n de eventos para botones de jugador\n            $(document).off('click.ligasfca', '.ver-jugador').on('click.ligasfca', '.ver-jugador', function() {\n                const nombre = $(this).data('nombre') || '';\n                alert('Detalles de ' + nombre + '\\nFunci\u00f3n en desarrollo');\n            });\n\n            \/\/ ===== Stats =====\n            function actualizarEstadisticas(jugadores, clubes) {\n                const list = Array.isArray(jugadores) ? jugadores : [];\n                const clubs = Array.isArray(clubes) ? clubes : [];\n\n                $('#stats-jugadores').text(String(list.length));\n                $('#stats-clubes').text(String(clubs.length));\n\n                let vigentes = 0;\n                for (const j of list) {\n                    const st = isVigente(j?.vigencia);\n                    if (st === true) vigentes++;\n                }\n                $('#stats-vigentes').text(String(vigentes));\n            }\n\n            \/\/ ===== Filtros =====\n            function aplicarFiltros() {\n                const clubFiltro = $('#liga-club-select').val() || '';\n                const vigenciaFiltro = $('#liga-vigencia-select').val() || '';\n                const textoBusqueda = ($('#liga-buscar').val() || '').toLowerCase().trim();\n\n                \/\/ mantener sincron\u00eda con tarjeta seleccionada\n                if (clubFiltro !== clubSeleccionado) {\n                    clubSeleccionado = clubFiltro;\n                    $('.ligasfca-club-card').removeClass('seleccionado');\n                    if (clubFiltro) {\n                        $(`.ligasfca-club-card[data-club=\"${clubFiltro}\"]`).addClass('seleccionado');\n                    }\n                }\n\n                const jugadoresFiltrados = (jugadoresData || []).filter((j) => {\n                    const club = (j?.club || '');\n                    const nombre = (j?.nombre || '');\n\n                    if (clubFiltro && club !== clubFiltro) return false;\n\n                    if (vigenciaFiltro) {\n                        const vigRaw = j?.vigencia ? String(j.vigencia).trim() : '';\n                        const st = isVigente(vigRaw);\n\n                        if (vigenciaFiltro === 'activa' && st !== true) return false;\n                        if (vigenciaFiltro === 'vencida' && st !== false) return false;\n                        if (vigenciaFiltro === 'sin' && !!vigRaw) return false;\n                    }\n\n                    if (textoBusqueda && !String(nombre).toLowerCase().includes(textoBusqueda)) return false;\n\n                    return true;\n                });\n\n                renderJugadores(jugadoresFiltrados);\n\n                \/\/ stats din\u00e1micas sobre filtrados\n                $('#stats-jugadores').text(String(jugadoresFiltrados.length));\n                let vigentes = 0;\n                for (const j of jugadoresFiltrados) {\n                    if (isVigente(j?.vigencia) === true) vigentes++;\n                }\n                $('#stats-vigentes').text(String(vigentes));\n            }\n            \n            function limpiarFiltros() {\n                $('#liga-club-select').val('');\n                $('#liga-vigencia-select').val('');\n                $('#liga-buscar').val('');\n                \n                clubSeleccionado = '';\n                $('.ligasfca-club-card').removeClass('seleccionado');\n                \n                renderJugadores(jugadoresData);\n                actualizarEstadisticas(jugadoresData, clubesData);\n            }\n            \n            $('#liga-filtros-aplicar').on('click', aplicarFiltros);\n            $('#liga-filtros-limpiar').on('click', limpiarFiltros);\n            $('#liga-buscar').on('keyup', function(e) {\n                if (e.key === 'Enter') {\n                    aplicarFiltros();\n                }\n            });\n        })(jQuery);\n        <\/script>\n        <br \/>\n        <div class=\"efca-r-wrap\" data-efcar='{&quot;meta&quot;:{&quot;liga&quot;:&quot;ALL&quot;,&quot;modo&quot;:&quot;STD&quot;,&quot;count&quot;:4642,&quot;avg&quot;:1776.09999999999990905052982270717620849609375,&quot;max&quot;:2543,&quot;sexo&quot;:&quot;ALL&quot;,&quot;categoria&quot;:&quot;ALL&quot;},&quot;charts&quot;:{&quot;titulos&quot;:{&quot;labels&quot;:[&quot;SIN T\\u00cdTULO&quot;,&quot;FM&quot;,&quot;CM&quot;,&quot;IM&quot;,&quot;WCM&quot;,&quot;AFM&quot;,&quot;WFM&quot;,&quot;WIM&quot;,&quot;AIM&quot;,&quot;ACM&quot;,&quot;GM&quot;,&quot;NM&quot;,&quot;WGM&quot;],&quot;values&quot;:[4248,118,86,38,28,27,24,20,17,16,11,7,2]},&quot;rangos&quot;:{&quot;labels&quot;:[&quot;0-1599&quot;,&quot;1600-1799&quot;,&quot;1800-1999&quot;,&quot;2000-2199&quot;,&quot;2200-2600&quot;],&quot;values&quot;:[940,1637,1518,441,106]}},&quot;top&quot;:[{&quot;id&quot;:&quot;4430492&quot;,&quot;nombre&quot;:&quot;Cardoso Cardoso, Jose Gabriel&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;VAL&quot;,&quot;club&quot;:&quot;Carlos Cuartas Cali&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:21,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2543},{&quot;id&quot;:&quot;4437128&quot;,&quot;nombre&quot;:&quot;Avila Pavas, Santiago&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;VAL&quot;,&quot;club&quot;:&quot;Botvinnik Palmira&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:21,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2504},{&quot;id&quot;:&quot;4401190&quot;,&quot;nombre&quot;:&quot;Cuartas, Jaime Alexander&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;ANT&quot;,&quot;club&quot;:&quot;Paul Keres&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:50,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2498},{&quot;id&quot;:&quot;3509265&quot;,&quot;nombre&quot;:&quot;Garcia Pantoja, Roberto&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;ANT&quot;,&quot;club&quot;:&quot;&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:33,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2497},{&quot;id&quot;:&quot;4402669&quot;,&quot;nombre&quot;:&quot;Gallego Alcaraz, Andres Felipe&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;VAL&quot;,&quot;club&quot;:&quot;Botvinnik Palmira&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:36,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2486},{&quot;id&quot;:&quot;4401824&quot;,&quot;nombre&quot;:&quot;Barrientos, Sergio E&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;CUN&quot;,&quot;club&quot;:&quot;Club Ajedrez Sopo&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:39,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2474},{&quot;id&quot;:&quot;4400704&quot;,&quot;nombre&quot;:&quot;Ruiz Castillo, Joshua Daniel&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;BOL&quot;,&quot;club&quot;:&quot;Talentos&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:28,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2472},{&quot;id&quot;:&quot;4400801&quot;,&quot;nombre&quot;:&quot;Escobar Forero, Alder&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;RIS&quot;,&quot;club&quot;:&quot;GM Alder Escobar&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:49,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2414},{&quot;id&quot;:&quot;4455665&quot;,&quot;nombre&quot;:&quot;Lopez Rayo, Santiago&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;VAL&quot;,&quot;club&quot;:&quot;Carlos Cuartas Cali&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:16,&quot;categoria&quot;:&quot;U16&quot;,&quot;rating&quot;:2414},{&quot;id&quot;:&quot;4403304&quot;,&quot;nombre&quot;:&quot;Sanchez, Sebastian Felipe&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;BOL&quot;,&quot;club&quot;:&quot;Talentos&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:37,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2412},{&quot;id&quot;:&quot;4404025&quot;,&quot;nombre&quot;:&quot;Martinez Romero, Martin&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;BOL&quot;,&quot;club&quot;:&quot;Magistral&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:31,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2395},{&quot;id&quot;:&quot;4418557&quot;,&quot;nombre&quot;:&quot;Sanabria Rangel, Sergio Andres&quot;,&quot;titulo&quot;:&quot;FM&quot;,&quot;liga&quot;:&quot;SAN&quot;,&quot;club&quot;:&quot;&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:39,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2389},{&quot;id&quot;:&quot;4400054&quot;,&quot;nombre&quot;:&quot;Henao, Raul Fernando&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;ANT&quot;,&quot;club&quot;:&quot;Paul Keres&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:70,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2386},{&quot;id&quot;:&quot;4403940&quot;,&quot;nombre&quot;:&quot;Rios Gomez, Cristhian Camilo&quot;,&quot;titulo&quot;:&quot;GM&quot;,&quot;liga&quot;:&quot;VAL&quot;,&quot;club&quot;:&quot;Club Carlos Cuartas&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:32,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2385},{&quot;id&quot;:&quot;3957624&quot;,&quot;nombre&quot;:&quot;Cordoba Roa, Angel Gabriel&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;ANT&quot;,&quot;club&quot;:&quot;&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:19,&quot;categoria&quot;:&quot;U20&quot;,&quot;rating&quot;:2383},{&quot;id&quot;:&quot;4401450&quot;,&quot;nombre&quot;:&quot;Morales, Jhon Alexander&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;VAL&quot;,&quot;club&quot;:&quot;Victor Hugo Gamboa&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:46,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2378},{&quot;id&quot;:&quot;4442024&quot;,&quot;nombre&quot;:&quot;Valderrama Quiceno, Esteban Alberto&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;ANT&quot;,&quot;club&quot;:&quot;Pro Antioquia Ajedrez&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:32,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2376},{&quot;id&quot;:&quot;4401107&quot;,&quot;nombre&quot;:&quot;Uribe, Mauricio&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;RIS&quot;,&quot;club&quot;:&quot;GM Alder Escobar&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:45,&quot;categoria&quot;:&quot;MAYORES&quot;,&quot;rating&quot;:2370},{&quot;id&quot;:&quot;4444710&quot;,&quot;nombre&quot;:&quot;Campos Gomez, Manuel&quot;,&quot;titulo&quot;:&quot;IM&quot;,&quot;liga&quot;:&quot;VAL&quot;,&quot;club&quot;:&quot;Botvinnik Palmira&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:18,&quot;categoria&quot;:&quot;U18&quot;,&quot;rating&quot;:2368},{&quot;id&quot;:&quot;4496370&quot;,&quot;nombre&quot;:&quot;Garzon Camelo, Andres Santiago&quot;,&quot;titulo&quot;:&quot;FM&quot;,&quot;liga&quot;:&quot;ANT&quot;,&quot;club&quot;:&quot;Capablanca Sabaneta&quot;,&quot;sexo&quot;:&quot;M&quot;,&quot;edad&quot;:14,&quot;categoria&quot;:&quot;U14&quot;,&quot;rating&quot;:2367}],&quot;ligas_disponibles&quot;:[&quot;ALL&quot;,&quot;ANT&quot;,&quot;GUA&quot;,&quot;COR&quot;,&quot;RIS&quot;,&quot;VAL&quot;,&quot;CAL&quot;,&quot;BOG&quot;,&quot;CUN&quot;,&quot;TOL&quot;,&quot;QUI&quot;,&quot;BOY&quot;,&quot;SAN&quot;,&quot;CAS&quot;,&quot;NS&quot;,&quot;GUI&quot;,&quot;MAG&quot;,&quot;SUC&quot;,&quot;CAU&quot;,&quot;FEC&quot;,&quot;CAQ&quot;,&quot;NAR&quot;,&quot;ATL&quot;,&quot;MET&quot;,&quot;VAU&quot;,&quot;CES&quot;,&quot;BOL&quot;,&quot;HUI&quot;,&quot;FA&quot;,&quot;ARA&quot;,&quot;VIC&quot;,&quot;CHO&quot;,&quot;GUV&quot;,&quot;PUT&quot;,&quot;AMA&quot;,&quot;SAI&quot;,&quot;FID&quot;,&quot;PAN&quot;]}'>\n            <div class=\"efca-r-head\">\n                <div class=\"efca-r-left\">\n                    <div class=\"efca-r-title\">Estad\u00edsticas de Ratings FCA<\/div>\n                    <div class=\"efca-r-sub\" id=\"efca-r-sub\"><\/div>\n                    <div class=\"efca-r-badge\" id=\"efca-badge\"><\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Controles -->\n            <div class=\"efca-r-controls\">\n                <!-- Grupo Vista -->\n                <div class=\"efca-r-group\" data-group=\"vista\">\n                    <div class=\"efca-r-gtitle\">\ud83d\udc41\ufe0f Vista<\/div>\n                    \n                    <div class=\"efca-r-field\">\n                        <span>Vista<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-view\">\n                            <option value=\"single\" selected>Una liga<\/option>\n                            <option value=\"compare\">Comparar 2 ligas<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field\" id=\"efca-wrap-liga-single\">\n                        <span>Liga<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-liga\"><\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field\" id=\"efca-wrap-liga-a\" style=\"display:none;\">\n                        <span>Liga A<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-ligaA\"><\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field\" id=\"efca-wrap-liga-b\" style=\"display:none;\">\n                        <span>Liga B<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-ligaB\"><\/select>\n                    <\/div>\n                <\/div>\n\n                <!-- Grupo Datos -->\n                <div class=\"efca-r-group\" data-group=\"datos\">\n                    <div class=\"efca-r-gtitle\">\ud83d\udcca Datos<\/div>\n                    \n                    <div class=\"efca-r-field\">\n                        <span>Modalidad<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-mode\">\n                            <option value=\"STD\"  selected='selected'>Cl\u00e1sico (STD)<\/option>\n                            <option value=\"RAP\" >R\u00e1pidas (RAP)<\/option>\n                            <option value=\"BLTZ\" >Blitz (BLTZ)<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field\">\n                        <span>Sexo<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-sex\">\n                            <option value=\"ALL\">Todos<\/option>\n                            <option value=\"M\">Masculino<\/option>\n                            <option value=\"F\">Femenino<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field\">\n                        <span>Categor\u00eda<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-cat\">\n                            <option value=\"ALL\">Todas<\/option>\n                            <option value=\"U08\">U08<\/option>\n                            <option value=\"U10\">U10<\/option>\n                            <option value=\"U12\">U12<\/option>\n                            <option value=\"U14\">U14<\/option>\n                            <option value=\"U16\">U16<\/option>\n                            <option value=\"U18\">U18<\/option>\n                            <option value=\"U20\">U20<\/option>\n                            <option value=\"MAYORES\">Mayores<\/option>\n                            <option value=\"SIN DATOS\">Sin datos<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field wide\">\n                        <span>Rangos Elo<\/span>\n                        <textarea class=\"efca-r-input\" id=\"efca-ranges\" rows=\"4\" placeholder=\"0-1399&#10;1400-1799|Intermedio&#10;2500+|\u00c9lite\">0-1599,1600-1799, 1800-1999,2000-2199,2200-2600<\/textarea>\n                    <\/div>\n                <\/div>\n\n                <!-- Grupo Ranking -->\n                <div class=\"efca-r-group\" data-group=\"ranking\">\n                    <div class=\"efca-r-gtitle\">\ud83c\udfc6 Ranking<\/div>\n\n                    <div class=\"efca-r-field\">\n                        <span>Top N<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-topn\">\n                                                            <option value=\"10\" >10<\/option>\n                                                            <option value=\"20\"  selected='selected'>20<\/option>\n                                                            <option value=\"30\" >30<\/option>\n                                                            <option value=\"40\" >40<\/option>\n                                                            <option value=\"50\" >50<\/option>\n                                                            <option value=\"60\" >60<\/option>\n                                                            <option value=\"70\" >70<\/option>\n                                                            <option value=\"80\" >80<\/option>\n                                                            <option value=\"90\" >90<\/option>\n                                                            <option value=\"100\" >100<\/option>\n                                                    <\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field\">\n                        <span>Gr\u00e1fico T\u00edtulos<\/span>\n                        <select class=\"efca-r-select\" id=\"efca-titles-style\">\n                            <option value=\"donut\" selected>Dona<\/option>\n                            <option value=\"bars\">Barras<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"efca-r-field\">\n                        <label class=\"efca-r-check\">\n                            <input type=\"checkbox\" id=\"efca-pct\" checked>\n                            <span>Mostrar %<\/span>\n                        <\/label>\n                    <\/div>\n\n                    <div class=\"efca-r-field\">\n                        <label class=\"efca-r-check\">\n                            <input type=\"checkbox\" id=\"efca-only-titled\">\n                            <span>Solo titulados<\/span>\n                        <\/label>\n                    <\/div>\n\n                    <div class=\"efca-r-field\">\n                        <label class=\"efca-r-check\">\n                            <input type=\"checkbox\" id=\"efca-compact\">\n                            <span>Modo compacto<\/span>\n                        <\/label>\n                    <\/div>\n\n                    <div class=\"efca-r-field wide\">\n                        <span>Buscar jugador<\/span>\n                        <input class=\"efca-r-input\" id=\"efca-topq\" placeholder=\"Nombre, ID, club...\">\n                    <\/div>\n\n                    <div class=\"efca-r-row2\">\n                        <button class=\"efca-r-btn efca-r-btn-ghost\" type=\"button\" id=\"efca-reset\">Restablecer<\/button>\n                        <button class=\"efca-r-btn\" type=\"button\" id=\"efca-apply\">Aplicar<\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- KPIs -->\n            <div class=\"efca-r-cards\">\n                <div class=\"efca-r-card\">\n                    <div class=\"k\">Jugadores<\/div>\n                    <div class=\"v\" id=\"efca-count\">0<\/div>\n                <\/div>\n                <div class=\"efca-r-card\">\n                    <div class=\"k\">Promedio Elo<\/div>\n                    <div class=\"v\" id=\"efca-avg\">0<\/div>\n                <\/div>\n                <div class=\"efca-r-card\">\n                    <div class=\"k\">M\u00e1ximo Elo<\/div>\n                    <div class=\"v\" id=\"efca-max\">0<\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Gr\u00e1ficos -->\n            <div class=\"efca-r-grid\">\n                <div class=\"efca-r-panel\">\n                    <div class=\"h\">\n                        <span>Distribuci\u00f3n por T\u00edtulos<\/span>\n                        <div class=\"efca-r-actions\">\n                            <button class=\"efca-r-btn efca-r-btn-ghost\" type=\"button\" id=\"efca-dl-titles\">\ud83d\udce5 PNG<\/button>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"cv efca-only-single\">\n                        <canvas id=\"efca-chart-titles\"><\/canvas>\n                    <\/div>\n                    \n                    <div class=\"efca-donut2 efca-only-compare\">\n                        <div class=\"efca-donut\">\n                            <div class=\"efca-donut-label\" id=\"efca-donut-label-a\">Liga A<\/div>\n                            <canvas id=\"efca-chart-titles-a\"><\/canvas>\n                        <\/div>\n                        <div class=\"efca-donut\">\n                            <div class=\"efca-donut-label\" id=\"efca-donut-label-b\">Liga B<\/div>\n                            <canvas id=\"efca-chart-titles-b\"><\/canvas>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"efca-r-panel\">\n                    <div class=\"h\">\n                        <span>Distribuci\u00f3n por Rangos Elo<\/span>\n                        <div class=\"efca-r-actions\">\n                            <button class=\"efca-r-btn efca-r-btn-ghost\" type=\"button\" id=\"efca-dl-ranges\">\ud83d\udce5 PNG<\/button>\n                        <\/div>\n                    <\/div>\n                    <div class=\"cv\">\n                        <canvas id=\"efca-chart-ranges\"><\/canvas>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Tabla Top Jugadores -->\n            <div class=\"efca-r-panel\" style=\"margin-top:12px;\">\n                <div class=\"h\">\n                    <span>Top Jugadores<\/span>\n                    <div class=\"efca-r-actions\">\n                        <button class=\"efca-r-btn efca-r-btn-ghost\" type=\"button\" id=\"efca-export-top\">\ud83d\udce5 CSV<\/button>\n                        <button class=\"efca-r-btn efca-r-btn-ghost\" type=\"button\" id=\"efca-dl-charts\">\ud83d\udce5 Todas las gr\u00e1ficas<\/button>\n                    <\/div>\n                <\/div>\n\n                <div class=\"efca-r-tablewrap\">\n                    <table class=\"efca-r-table\">\n                        <thead>\n                            <tr>\n                                <th>Elo<\/th>\n                                <th>T\u00edt<\/th>\n                                <th>Nombre<\/th>\n                                <th>Liga<\/th>\n                                <th>Club<\/th>\n                                <th>Sex<\/th>\n                                <th>Cat<\/th>\n                                <th>ID<\/th>\n                            <\/tr>\n                        <\/thead>\n                        <tbody id=\"efca-top-body\"><\/tbody>\n                    <\/table>\n                <\/div>\n            <\/div>\n\n            <div class=\"efca-r-toast\" id=\"efca-toast\"><\/div>\n        <\/div>\n        <\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>LIGAS AFILIADAS A FECODAZ Consulte la informaci\u00f3n de las Ligas y sus estad\u00edsticas.<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"left-sidebar","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5004","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/pages\/5004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/comments?post=5004"}],"version-history":[{"count":19,"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/pages\/5004\/revisions"}],"predecessor-version":[{"id":12585,"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/pages\/5004\/revisions\/12585"}],"wp:attachment":[{"href":"https:\/\/federacioncolombianadeajedrez.com\/noticias\/wp-json\/wp\/v2\/media?parent=5004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}