From a694f196679f387cee98cf10a1dff3d4f903fb31 Mon Sep 17 00:00:00 2001 From: Isaac Date: Mon, 28 Sep 2026 14:17:54 +0200 Subject: [PATCH] Funcionalidades del host --- css/buscadorSala.css | 8 +++++ img/avatars/avatar_11.jpg | Bin 0 -> 7112 bytes js/buscadorSala.js | 67 ++++++++++++++++++++++++++++---------- js/cabecera.js | 3 ++ 4 files changed, 60 insertions(+), 18 deletions(-) create mode 100644 img/avatars/avatar_11.jpg diff --git a/css/buscadorSala.css b/css/buscadorSala.css index 8b7d207..6faae8c 100644 --- a/css/buscadorSala.css +++ b/css/buscadorSala.css @@ -105,3 +105,11 @@ border-color: var(--kahoot-purple); box-shadow: 0 0 0 3px rgba(70, 23, 143, 0.15); } + +.jugador-host { + background-color: #fff3cd; + border: 1px solid #ffc107; + border-radius: 8px; + padding: 6px 10px; + font-weight: 600; +} diff --git a/img/avatars/avatar_11.jpg b/img/avatars/avatar_11.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0107ecf229a9873caba6d565abaadc4c2f97c86 GIT binary patch literal 7112 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 LOA`QKx*Yj0?klm+ literal 0 HcmV?d00001 diff --git a/js/buscadorSala.js b/js/buscadorSala.js index 1cb5ee8..f55349f 100644 --- a/js/buscadorSala.js +++ b/js/buscadorSala.js @@ -123,12 +123,24 @@ function mostrarSala(partida, equipos, jugadores) { let jugadoresHTML = ""; if (jugadoresEquipo.length > 0) { jugadoresEquipo.forEach(function (jugador) { + const esHost = jugador.idUsuario == partida.idUsuario; + jugadoresHTML += ` -
- 👤 - ${escapeHTML(jugador.nombreUsuario)} -
- `; +
+
+ ${esHost ? "👑" : "👤"} + ${escapeHTML(jugador.nombreUsuario)} +
+ + ${ + esHost + ? `HOST` + : "" + } +
+ `; }); } else { jugadoresHTML = `
Sin jugadores
`; @@ -157,19 +169,36 @@ function mostrarSala(partida, equipos, jugadores) { `; }); + // Acciones disponibles si el usuario YA ESTÁ dentro de esta sala // Acciones disponibles si el usuario YA ESTÁ dentro de esta sala let accionesSalaHTML = ""; + if (usuarioYaEstaEnEquipo) { - accionesSalaHTML = ` -
- - - 🎮 ¡Iniciar Partida! - -
+ let botonIniciarHTML = ""; + + // Solo el host puede iniciar la partida + if (partida.idUsuario == idUsuarioSesion) { + botonIniciarHTML = ` + + 🎮 ¡Iniciar Partida! + `; + } + + accionesSalaHTML = ` +
+ + + + ${botonIniciarHTML} + +
+ `; } const salaHTML = ` @@ -234,13 +263,15 @@ let botonAbandonarReferencia = null; // A. Al hacer clic en el botón "Abandonar sala" de la tarjeta, abrimos el modal $(document).on("click", ".btn-abandonar-sala", function () { botonAbandonarReferencia = $(this); - const modal = new bootstrap.Modal(document.getElementById('modalAbandonarSala')); + const modal = new bootstrap.Modal( + document.getElementById("modalAbandonarSala"), + ); modal.show(); }); // B. Al hacer clic en "Sí, salir" dentro del modal Kahoot $(document).on("click", "#btnConfirmarAbandonar", function () { - const modalEl = document.getElementById('modalAbandonarSala'); + const modalEl = document.getElementById("modalAbandonarSala"); const modalInstance = bootstrap.Modal.getInstance(modalEl); const btnConfirmar = $(this); @@ -253,7 +284,7 @@ $(document).on("click", "#btnConfirmarAbandonar", function () { data: { orden: "salirDeSala" }, success: function (respuesta) { btnConfirmar.prop("disabled", false).text("Sí, salir"); - + if (modalInstance) { modalInstance.hide(); } @@ -275,7 +306,7 @@ $(document).on("click", "#btnConfirmarAbandonar", function () { if (modalInstance) { modalInstance.hide(); } - } + }, }); }); // 8. Evento: Crear Sala diff --git a/js/cabecera.js b/js/cabecera.js index 90a35ea..2ce7f4e 100644 --- a/js/cabecera.js +++ b/js/cabecera.js @@ -1,3 +1,5 @@ +let idUsuarioSesion = null; + $(document).ready(function () { // Comprobar la sesión activa al cargar la página comprobarEstadoSesion(); @@ -36,6 +38,7 @@ function comprobarEstadoSesion() { data: { orden: 'comprobarSesion' }, success: function (respuesta) { if (respuesta.activa) { + idUsuarioSesion = respuesta.usuario.idUsuario; renderizarCabeceraConSesion(respuesta.usuario); $('#colBotonJugar').removeClass('d-none'); } else {