Ya se tenía el archivo JSON de alura y se crea un nuevo archivo: buscar-pacientes.js para continuar con las buenas prácticas y se agrega como fuente al HTML.
<script src="js/calcular-imc.js"></script>
<script src="js/form.js"></script>
<script src="js/eliminar-paciente.js"></script>
<script src="js/filtrar.js"></script>
<script src="js/buscar-pacientes.js"></script>
Ubicación y función para adicionar pacientes en el archivo: form.js
botonAdicionar.addEventListener('click',function(event){
event.preventDefault();//Esto previene el padrón.
var form = document.querySelector("#form-adicionar");
var paciente = capturarDatosPaciente(form);
console.log(paciente);
//var pacienteTr = ConstruirTr(paciente); Es llevada esta parte del código para la función encapsulada de adicionarPacienteEnLaTabla para luego ser reutilizada.
var errores = validarPaciente(paciente);
if(errores.length > 0){
console.log('paciente incorrecto');
exhibirMensajesErrores(errores); //Si hay errores el tamaño es mayor que 0, va entrar aquí y corta el evento y no entran los datos.
return;
} //Este return vacío hace referencia a la función anónima.
//var tabla = document.querySelector("#tabla-pacientes");
//tabla.appendChild(pacienteTr);
//Se esconden ambas porque pasan a la función encapsulada de adicionarPacienteEnLaTabla para luego ser reutilizada.
//Se llama a la función de adicionarPacienteEnLaTabla(paciente);
adicionarPacienteEnLaTabla(paciente);
form.reset();
//AJUSTE FINO DE LA FUNCION.
var mensajesErrores = document.querySelector("#mensajes-errores");
mensajesErrores.innerHTML = '';
});
**//ENCAPSULAMOS LA FUNCIÓN PARA SER REUTILIZADA para ingresar pacientes desde el archivo JSON**
function adicionarPacienteEnLaTabla(paciente){
var pacienteTr = ConstruirTr(paciente);
var tabla = document.querySelector("#tabla-pacientes");
tabla.appendChild(pacienteTr);
}
function capturarDatosPaciente(form){
//Capturando los datos del formulario.
var paciente = {
nombre: form.nombre.value,
peso: form.peso.value,
altura: form.altura.value,
gordura: form.gordura.value,
imc: calcularIMC(form.peso.value,form.altura.value),
}
return paciente;
El código para conectar el servidor externo (API) del archivo JSON con nuestro programa.
var botonBuscar = document.querySelector("#buscar-paciente");
//NUESTRO CÓDIGO
//Conectarse a un servidor externo (API) y realizar una importanción de datos de una archivo JSON.
//AJAX hace una requisición asíncrona.
//Para la requisición vamos a usar un objeto de JS que se llama XMLHttpRequest.
//ENCASULAR LA FUNCIÓN en form.js Y REUTILIZARLA, para agregar pacientes.
botonBuscar.addEventListener('click',function(){
console.log('Buscando pacientes');
var xhr = new XMLHttpRequest;
xhr.open('GET','https://alura-es-cursos.github.io/api-pacientes/pacientes.json');
xhr.addEventListener('load',function(){
var errorAjax = document.querySelector("#error-ajax");
//CAPTURANDO ERRORES DE REQUERIMIENTO.
if(xhr.status == 200){
errorAjax.classList.add("invisible");
var respuesta = xhr.responseText;
//Conversión de datos.
var pacientes = JSON.parse(respuesta);
//Usamos el forEach para iterar todos los pacientes con su función como paciente como parámetro.
pacientes.forEach(function(paciente){
adicionarPacienteEnLaTabla(paciente); //Ya encapsulada en form.
console.log(paciente);
});
}else{
errorAjax.classList.remove("invisible");//Con ello el usuario ve el mensaje de error.
console.log(xhr.status);
console.log(xhr.responseText);
}
});
xhr.send();
});
Finalmente muestro como se conformó en HTML los datos para el Span que permite capturar el error de requerimiento. Entre el final de la tabla y antes del botón buscar pacientes.
</tbody>
</table>
<span id="error-ajax" class="invisible">Error al buscar los pacientes</span>
<button id="buscar-paciente" class="botón bto-principal">
Buscar Pacientes
</button>