//fetch de las listas regionales fetch( "https://especiales.larepublica.pe/lista-de-candidatos-elecciones-regionales-2022-quienes-son-y-cuales-son-sus-propuestas-de-los-proximos-gobernadores/listas-regional.json" ) .then((response) => response.json()) .then((res) => { const { data } = res; //Crear los options para el select de regiones const selectRegions = document.getElementById("selectRegions"); const regiones = data.map((item) => item.txRegion); const regionesUnicas = [...new Set(regiones)].sort(); regionesUnicas.forEach((region) => { const option = document.createElement("option"); option.value = region; option.text = region; selectRegions.appendChild(option); }); selectRegions.onchange = function () { setOrganizations(); candidate__container.style.display = "none"; }; //Crear los options para el select de partidos const selectOrganizations = document.getElementById("selectOrganizations"); const setOrganizations = () => { const regionSelected = selectRegions.value; const organizaciones = data .filter((item) => item.txRegion === regionSelected) .map((item) => item.txOrganizacionPolitica); const organizacionesUnicas = [...new Set(organizaciones)].sort(); selectOrganizations.innerHTML = ``; organizacionesUnicas.forEach((organizacion) => { const option = document.createElement("option"); option.value = organizacion; option.text = organizacion; selectOrganizations.appendChild(option); }); }; // Hacer que el contenedor de candidato se muestre si candidate__container existe let candidate__container = null; selectOrganizations.onchange = function () { const interval = setInterval(() => { if (candidate__container) { candidate__container.scrollIntoView({ behavior: "smooth", }); clearInterval(interval); } else { candidate__container = document.getElementById( "candidate__container" ); } }, 500); getTxCodExpedienteExt(); getTxRutaCompleto(); }; //Recuperar plan de gobierno const getTxRutaCompleto = () => { const regionSelected = selectRegions.value; const organizacionSelected = selectOrganizations.value; const plan = data .filter( (item) => item.txRegion === regionSelected && item.txOrganizacionPolitica === organizacionSelected ) .map((item) => item.txRutaCompleto); const planSiteHTML = document.getElementById("plan__site"); planSiteHTML.innerHTML = `
Ver plan de gobierno
`; }; //Recuperar el txCodExpedienteExt const getTxCodExpedienteExt = () => { const regionSelected = selectRegions.value; const organizacionSelected = selectOrganizations.value; const txCodExpedienteExt = data .filter( (item) => item.txRegion === regionSelected && item.txOrganizacionPolitica === organizacionSelected ) .map((item) => item.txCodExpedienteExt); organizacionSelected && getSelectedList(txCodExpedienteExt[0]); }; }) .catch((err) => { console.log(err); }); /* fetch a la lista seleccionada y pintado de data */ const getSelectedList = (txCodExpedienteExt) => { fetch( `https://apiplataformaelectoral3.jne.gob.pe/api/v1/plan-gobierno/candidatos?IdProcesoElectoral=113&TxCodExpedienteExt=${txCodExpedienteExt}` ) .then((response) => response.json()) .then((res) => { const { data } = res; const candidate__container = document.getElementById( "candidate__container" ); candidate__container.style.display = "block"; const { cargo, feNacimiento, idHojaVida, nombreCompleto, numeroDocumento, organizacionPolitica, postulaDepartamento, rutaArchivo, } = data[0]; const nombreCompletoHTML = document.getElementById("nombreCompleto"); const numeroDocumentoHTML = document.getElementById("numeroDocumento"); const cargoHTML = document.getElementById("cargo"); const organizacionPoliticaHTML = document.getElementById( "organizacionPolitica" ); const postulaDepartamentoHTML = document.getElementById( "postulaDepartamento" ); const rutaArchivoHTML = document.getElementById("rutaArchivo"); const feNacimientoHTML = document.getElementById("feNacimiento"); restartTables(); nombreCompletoHTML.innerHTML = nombreCompleto; numeroDocumentoHTML.innerHTML = `DNI: ${numeroDocumento}`; cargoHTML.innerHTML = cargo[0]; organizacionPoliticaHTML.innerHTML = organizacionPolitica; postulaDepartamentoHTML.innerHTML = postulaDepartamento; rutaArchivoHTML.innerHTML = `candidato`; feNacimientoHTML.innerHTML = `${getEdad(feNacimiento)} años`; /* pintar lista que acompaña al candidato */ const listaHTML = document.getElementById("lista"); const listaContent = data .filter((item) => item.idHojaVida != idHojaVida) .map((item) => { return `
candidato
candidato

${item.nombreCompleto}

DNI: ${item.numeroDocumento}

Cargo al que postula

${item.cargo[0]}

Fecha de nacimiento

${item.feNacimiento.substring(0, 10)}

`; }); listaHTML.innerHTML = listaContent.join(""); /* fetch de la hoja de vida */ getHojaVida(idHojaVida); /* investigaciones por corrupción */ getInvesCor(nombreCompleto); }); }; const restartTables = () => { const educacionSuperiorHTML = document.getElementById("educacionSuperior"); const cargoPartidarioHTML = document.getElementById("cargoPartidario"); const cargoEleccionHTML = document.getElementById("cargoEleccion"); const sentenciaPenalHTML = document.getElementById("sentenciaPenal"); const investigacionesHTML = document.getElementById("invesCor"); educacionSuperiorHTML.innerHTML = "

Cargando...

"; cargoPartidarioHTML.innerHTML = "

Cargando...

"; cargoEleccionHTML.innerHTML = "

Cargando...

"; sentenciaPenalHTML.innerHTML = "

Cargando...

"; investigacionesHTML.innerHTML = "

Cargando...

"; }; const getHojaVida = (idHojaVida) => { fetch( `https://apiplataformaelectoral8.jne.gob.pe/api/v1/candidato/hoja-vida?IdHojaVida=${idHojaVida}` ) .then((response) => response.json()) .then((res) => { const { formacionAcademica, trayectoria, sentenciaPenal } = res; /* pintar la data de formación académica */ const { educacionTecnico, educacionNoUniversitaria, educacionUniversitaria, educacionPosgrado, educacionPosgradoOtro, } = formacionAcademica; const educacionSuperiorHTML = document.getElementById("educacionSuperior"); const educacionTecnicoHTML = educacionTecnico.map((item) => { return `

${item.cenEstudioTecnico}

${item.carreraTecnico}

`; }); const educacionUniversitariaHTML = educacionUniversitaria.map((item) => { return `

${item.universidad}

${item.carreraUni}

${item.concluidoEduUni}

${item.egresadoEduUni}

`; }); const educacionPosgradoHTML = educacionPosgrado.map((item) => { return `

${item.txCenEstudioPosgrado}

${item.txEspecialidadPosgrado}

${item.concluidoPosgrado}

${ item.egresadoPosgrado == null ? "NO" : item.egresadoPosgrado }

`; }); educacionSuperiorHTML.innerHTML = ""; educacionTecnicoHTML.length && (educacionSuperiorHTML.innerHTML += `

Educación Técnica

CENTRO DE ESTUDIOS

CARRERA

${educacionTecnicoHTML.join("")}
`); educacionUniversitariaHTML.length && (educacionSuperiorHTML.innerHTML += `

Educación Universitaria

CENTRO DE ESTUDIOS

CARRERA

CONCLUIDOS

EGRESADOS

${educacionUniversitariaHTML.join("")}
`); educacionPosgradoHTML.length && (educacionSuperiorHTML.innerHTML += `

Posgrado

CENTRO DE ESTUDIOS

ESPECIALIDAD

CONCLUIDOS

EGRESADOS

${educacionPosgradoHTML.join("")}
`); educacionTecnicoHTML.length === 0 && educacionUniversitariaHTML.length === 0 && educacionPosgradoHTML.length === 0 && (educacionSuperiorHTML.innerHTML += `

No registra

`); /* pintar la data del trayectoria */ const { cargoEleccion, cargoPartidario } = trayectoria; const cargoEleccionHTML = document.getElementById("cargoEleccion"); const cargoPartidarioHTML = document.getElementById("cargoPartidario"); const cargoEleccionContent = cargoEleccion.map((item) => { return `

${item.cargoEleccion}

${item.orgPolCargoElec}

${item.anioCargoElecDesde}

${item.anioCargoElecHasta}

`; }); const cargoPartidarioContent = cargoPartidario.map((item) => { return `

${item.cargoPartidario}

${item.orgPolCargoPartidario}

${item.anioCargoPartiDesde}

${item.anioCargoPartiHasta}

`; }); cargoEleccionContent.length ? (cargoEleccionHTML.innerHTML = `

CARGO

ORGANIZACIÓN

DESDE

HASTA

${cargoEleccionContent.join("")}`) : (cargoEleccionHTML.innerHTML = `

No registra

`); cargoPartidarioContent.length ? (cargoPartidarioHTML.innerHTML = `

CARGO

ORGANIZACIÓN

DESDE

HASTA

${cargoPartidarioContent.join("")}`) : (cargoPartidarioHTML.innerHTML = `

No registra

`); /* pintar data de las sentencias */ const sentenciaPenalHTML = document.getElementById("sentenciaPenal"); const sentenciaPenalContent = sentenciaPenal.map((item) => { return `

${item.txDelitoPenal}

${item.feSentenciaPenal}

${item.txOrganoJudiPenal}

`; }); sentenciaPenalContent.length ? (sentenciaPenalHTML.innerHTML = `

DELITO

FECHA

ÓRGANO JUDICIAL

${sentenciaPenalContent.join("")}
`) : (sentenciaPenalHTML.innerHTML = `

No registra

`); }); }; /* pintar data de las investigaciones por corrupción */ const getInvesCor = (name) => { let parseName = ""; let nameElements = name.split(" "); fetch( "https://especiales.larepublica.pe/lista-de-candidatos-elecciones-regionales-2022-quienes-son-y-cuales-son-sus-propuestas-de-los-proximos-gobernadores/delitos.json" ) .then((response) => response.json()) .then((data) => { if (nameElements.length === 3) { parseName = `${nameElements[1]} ${nameElements[2]} ${nameElements[0]}`; } else if (nameElements.length === 4) { parseName = `${nameElements[2]} ${nameElements[3]} ${nameElements[0]} ${nameElements[1]}`; } const investigacionesHTML = document.getElementById("invesCor"); const investigaciones = data .filter((item) => item.INCULPADO === parseName) .map((item) => { return `

${item.DELITO_PRINCIPAL}

${item.AGRAVIADO_PRINCIPAL}

${item.ETAPA_PROCESAL}

${item.CARP_EXP}

${item.FISCALIA_JUZGADO_SALA}

`; }); investigaciones.length ? (investigacionesHTML.innerHTML = `

DELITO

AGRAVIADO

ETAPA PROCESAL

EXPEDIENTE

FISCALIA

${investigaciones.join("")}
`) : (investigacionesHTML.innerHTML = `

No registra

`); }); }; const getEdad = (dateString) => { let hoy = new Date(); let fechaNacimiento = new Date(dateString); let edad = hoy.getFullYear() - fechaNacimiento.getFullYear(); let diferenciaMeses = hoy.getMonth() - fechaNacimiento.getMonth(); if ( diferenciaMeses < 0 || (diferenciaMeses === 0 && hoy.getDate() < fechaNacimiento.getDate()) ) { edad--; } return edad; };