$(document).ready(function () { cargarSalas(); function cargarSalas() { $.ajax({ url: 'controladores/controladorPartida.php', type: 'POST', dataType: 'json', data: { orden: 'listar' }, success: function (partidas) { const contenedor = $('#contenedorSalas'); contenedor.empty(); if (!Array.isArray(partidas) || partidas.length === 0) { contenedor.html(`

No hay salas disponibles.

`); return; } partidas.forEach(function (partida) { cargarInformacionSala(partida); }); }, error: function (xhr, status, error) { console.error( 'Error al obtener las partidas:', error ); } }); } function cargarInformacionSala(partida) { $.ajax({ url: 'controladores/controladorPartida.php', type: 'POST', dataType: 'json', data: { orden: 'getEquipos', idPartida: partida.idPartida }, success: function (equipos) { $.ajax({ url: 'controladores/controladorPartida.php', type: 'POST', dataType: 'json', data: { orden: 'getJugadores', idPartida: partida.idPartida }, success: function (jugadores) { crearSala( partida, equipos, jugadores ); }, error: function (xhr, status, error) { console.error( 'Error al obtener jugadores:', error ); } }); }, error: function (xhr, status, error) { console.error( 'Error al obtener equipos:', error ); } }); } function crearSala( partida, equipos, jugadores ) { const contenedor = $('#contenedorSalas'); let equiposHTML = ''; equipos.forEach(function (equipo) { const jugadoresEquipo = jugadores.filter(function (jugador) { return jugador.idEquipo == equipo.idEquipo; }); let jugadoresHTML = ''; if (jugadoresEquipo.length > 0) { jugadoresEquipo.forEach( function (jugador) { jugadoresHTML += `
đŸ‘¤ ${escapeHTML( jugador.nombreUsuario )}
`; } ); } else { jugadoresHTML = `
Sin jugadores
`; } equiposHTML += `
${escapeHTML( equipo.nombreEquipo )}
${jugadoresHTML}
`; }); const salaHTML = `
${escapeHTML( partida.nombrePartida )}
${equiposHTML}
`; contenedor.append(salaHTML); } $(document).on( 'click', '.btn-unirse-equipo', function () { const boton = $(this); const idPartida = boton.data('id-partida'); const idEquipo = boton.data('id-equipo'); boton.prop('disabled', true); boton.text('Uniéndose...'); $.ajax({ url: 'controladores/controladorPartida.php', type: 'POST', dataType: 'json', data: { orden: 'registrarEquipo', idPartida: idPartida, idEquipo: idEquipo }, success: function (respuesta) { if (respuesta.error) { alert(respuesta.error); boton.prop( 'disabled', false ); boton.text('Unirse'); return; } cargarSalas(); }, error: function ( xhr, status, error ) { console.error( 'Error al unirse al equipo:', error ); alert( 'No se ha podido unir al equipo.' ); boton.prop( 'disabled', false ); boton.text('Unirse'); } }); } ); function escapeHTML(texto) { return $('
') .text(texto ?? '') .html(); } $('#btnCrearSala').on('click', function () { const nombreSala = $('#nombreSala').val().trim(); const nombreEquipo1 = $('#nombreEquipo1').val().trim(); const nombreEquipo2 = $('#nombreEquipo2').val().trim(); let valido = true; $('.mensaje-error-sala').remove(); $('.input-kahoot') .removeClass('is-invalid'); if (nombreSala === '') { mostrarError( '#nombreSala', 'El nombre de la sala es obligatorio.' ); valido = false; } else if (nombreSala.length < 3) { mostrarError( '#nombreSala', 'El nombre de la sala debe tener al menos 3 caracteres.' ); valido = false; } if (nombreEquipo1 === '') { mostrarError( '#nombreEquipo1', 'El nombre del equipo 1 es obligatorio.' ); valido = false; } else if (nombreEquipo1.length < 2) { mostrarError( '#nombreEquipo1', 'El nombre del equipo debe tener al menos 2 caracteres.' ); valido = false; } if (nombreEquipo2 === '') { mostrarError( '#nombreEquipo2', 'El nombre del equipo 2 es obligatorio.' ); valido = false; } else if (nombreEquipo2.length < 2) { mostrarError( '#nombreEquipo2', 'El nombre del equipo debe tener al menos 2 caracteres.' ); valido = false; } if ( nombreEquipo1 !== '' && nombreEquipo2 !== '' && nombreEquipo1.toLowerCase() === nombreEquipo2.toLowerCase() ) { mostrarError( '#nombreEquipo2', 'Los dos equipos deben tener nombres diferentes.' ); valido = false; } if (!valido) { return; } console.log('Datos vĂ¡lidos:'); console.log({ nombreSala: nombreSala, nombreEquipo1: nombreEquipo1, nombreEquipo2: nombreEquipo2 }); }); function mostrarError(selector, mensaje) { const input = $(selector); input.addClass('is-invalid'); input.after(`
${mensaje}
`); } $('.input-kahoot').on('input', function () { $(this).removeClass('is-invalid'); $(this) .next('.mensaje-error-sala') .remove(); }); });