let intervaloBuscadorSalas = null;
let cargandoSalas = false;
function iniciarActualizacionSalas() {
if (intervaloBuscadorSalas) {
clearInterval(intervaloBuscadorSalas);
}
cargarSalas();
intervaloBuscadorSalas = setInterval(function () {
if (!usuarioYaEstaEnEquipo) {
cargarSalas();
}
}, 5000);
}
function cargarSalas() {
if (cargandoSalas) {
return;
}
cargandoSalas = true;
$.ajax({
url: "controladores/controladorPartida.php",
type: "POST",
dataType: "json",
data: {
orden: "listar",
},
success: function (partidas) {
const contenedor = $("#contenedorSalas");
if (!Array.isArray(partidas) || partidas.length === 0) {
$(".sala-item").remove();
if ($("#mensajeSinSalas").length === 0) {
contenedor.append(`
No hay salas disponibles actualmente.
`);
}
return;
}
$("#mensajeSinSalas").remove();
const idsPartidas = partidas.map(function (partida) {
return String(partida.idPartida);
});
$(".sala-item").each(function () {
const idPartida = String($(this).data("id-partida"));
if (!idsPartidas.includes(idPartida)) {
$(this).remove();
}
});
partidas.forEach(function (partida) {
cargarSalaBuscador(partida);
});
},
error: function (xhr, status, error) {
console.error(
"Error al obtener las partidas:",
error
);
},
complete: function () {
cargandoSalas = false;
},
});
}
function cargarSalaBuscador(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) {
if (
!Array.isArray(jugadores) ||
jugadores.length === 0
) {
$(
`.sala-item[data-id-partida="${partida.idPartida}"]`
).remove();
comprobarSiNoHaySalas();
return;
}
actualizarSalaBuscador(
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 comprobarSiNoHaySalas() {
if ($(".sala-item").length === 0) {
if ($("#mensajeSinSalas").length === 0) {
$("#contenedorSalas").append(`
No hay salas disponibles actualmente.
`);
}
}
}
function actualizarSalaBuscador(
partida,
equipos,
jugadores
) {
$("#mensajeSinSalas").remove();
const selectorSala =
`.sala-item[data-id-partida="${partida.idPartida}"]`;
const salaExistente = $(selectorSala);
if (salaExistente.length === 0) {
crearSalaBuscador(
partida,
equipos,
jugadores
);
return;
}
const equiposHTML =
generarEquiposHTML(
partida,
equipos,
jugadores
);
salaExistente
.find(".equipos")
.html(equiposHTML);
}
function crearSalaBuscador(
partida,
equipos,
jugadores
) {
$("#mensajeSinSalas").remove();
const equiposHTML =
generarEquiposHTML(
partida,
equipos,
jugadores
);
const salaHTML = `
${
esHost
? ''
: ''
}
${escapeHTML(
jugador.nombreUsuario
)}
${
esHost
? `
HOST
`
: ""
}
`;
});
} else {
jugadoresHTML = `