Fix: Orden de camas en Mapa de Camas

This commit is contained in:
Santiago Lavaise
2026-04-14 14:29:29 -03:00
parent bb73c6d8fb
commit 1e3b3713fc
+23 -40
View File
@@ -114,51 +114,34 @@ export function MapaCamas({
const pa = parseBedNumber(a.numero);
const pb = parseBedNumber(b.numero);
if (pa.sala >= 200 && pa.sala < 300) {
const salaImpar = [221, 217, 215, 213, 209, 205, 203, 201];
const salaPar = [204, 214];
const getOrden = (sala: number) => {
const grupo = Math.floor(sala / 100);
const esPar = sala % 2 === 0;
if (salaImpar.includes(pa.sala)) {
if (salaImpar.includes(pb.sala)) {
if (pa.sala === pb.sala) {
return pa.cama - pb.cama;
}
return salaImpar.indexOf(pa.sala) - salaImpar.indexOf(pb.sala);
}
return -1;
if (grupo === 2) {
if (esPar) return { grupo: 2, suborden: 0, sala }; // 2XX pares, menor a mayor
return { grupo: 1, suborden: 1, sala }; // 2XX impares, mayor a menor
}
if (salaImpar.includes(pb.sala)) return 1;
if (salaPar.includes(pa.sala)) {
if (salaPar.includes(pb.sala)) {
if (pa.sala === pb.sala) {
return pa.cama - pb.cama;
}
return pa.sala - pb.sala;
}
return -1;
if (grupo === 3) {
if (esPar) return { grupo: 3, suborden: 0, sala }; // 3XX pares, menor a mayor
return { grupo: 4, suborden: 1, sala }; // 3XX impares, mayor a menor
}
if (salaPar.includes(pb.sala)) return 1;
if (grupo === 4) {
if (esPar) return { grupo: 6, suborden: 0, sala }; // 4XX pares, menor a mayor
return { grupo: 5, suborden: 1, sala }; // 4XX impares, mayor a menor
}
return { grupo: 10, suborden: 1, sala };
};
return pa.cama - pb.cama;
const oa = getOrden(pa.sala);
const ob = getOrden(pb.sala);
if (oa.grupo !== ob.grupo) return oa.grupo - ob.grupo;
if (oa.suborden === ob.suborden) {
if (oa.suborden === 0) return (oa.sala || pa.sala) - (ob.sala || pb.sala);
return (ob.sala || 0) - (oa.sala || 0);
}
if (pa.sala >= 300 && pa.sala < 400) {
const salaPiso3 = [308, 310, 312];
if (salaPiso3.includes(pa.sala)) {
if (salaPiso3.includes(pb.sala)) {
if (pa.sala === pb.sala) {
return pa.cama - pb.cama;
}
return salaPiso3.indexOf(pa.sala) - salaPiso3.indexOf(pb.sala);
}
return -1;
}
if (salaPiso3.includes(pb.sala)) return 1;
return pa.cama - pb.cama;
}
return a.numero.localeCompare(b.numero);
return oa.suborden - ob.suborden;
});
const handleOcuparCama = () => {