+page.js
1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
export const ssr = false;
import { error } from '@sveltejs/kit';
import { API_HOST } from '$lib/api.js';
const API_BASE = API_HOST + '/api/organismo';
export async function load({ params }) {
const { codigo } = params;
const res = await fetch(`${API_BASE}/${codigo}`);
if (!res.ok) throw error(404, 'Organismo no encontrado');
const organismo = await res.json();
let padres = [];
let hijos = [];
try {
const clasRes = await fetch(`${API_BASE}/clasificador`);
if (clasRes.ok) {
const clasificador = await clasRes.json();
const current = clasificador.find(c => String(c.organismo) === codigo);
if (current) {
// Padres: grupo y subgrupo (como objetos virtuales para navegación)
padres = [
{ organismo: `grupo_${current.organismo_grupo}`, desc_organismo: current.desc_organismo_grupo, nivel: 'grupo', sigla: current.sigla_organismo_grupo },
{ organismo: `subgrupo_${current.organismo_grupo}_${current.organismo_subgrupo}`, desc_organismo: current.desc_organismo_subgrupo, nivel: 'subgrupo', sigla: current.sigla_organismo_subgrupo }
];
// Hijos: otros organismos del mismo subgrupo
hijos = clasificador.filter(c =>
c.organismo_grupo === current.organismo_grupo &&
c.organismo_subgrupo === current.organismo_subgrupo &&
c.organismo !== current.organismo &&
c.organismo !== 0
).sort((a, b) => (a.desc_organismo || '').localeCompare(b.desc_organismo || ''));
}
}
} catch { /* optional */ }
return { organismo, padres, hijos };
}