calcula-imc.js:
const pacientes = document.querySelectorAll(".paciente");
pacienteImc(pacientes);
function pacienteImc(listaPacientes) {
for (let i = 0; i < listaPacientes.length; i++){
const paciente = listaPacientes[i];
const pacienteImc = paciente.querySelector(".info-imc");
const pacientePeso = paciente.querySelector(".info-peso").textContent;
if (pacientePeso <= 0 || pacientePeso >= 1000) {
validaImc(paciente, pacienteImc, "Peso Inválido!", "paciente-invalido");
continue
}
const pacienteAltura = paciente.querySelector(".info-altura").textContent;
if (pacienteAltura <= 0 || pacienteAltura >= 3) {
validaImc(paciente, pacienteImc, "Altura Inválida!", "paciente-invalido");
continue
}
pacienteImc.textContent = calculaImc(pacientePeso, pacienteAltura);
}
}
function calculaImc(peso, altura) {
const imc = peso / (altura * altura);
return imc.toFixed(2);
}
function validaImc(paciente, pacienteImc, mensagem, newClass){
pacienteImc.textContent = mensagem;
paciente.classList.add(newClass);
}
form.js:
const buttonEnviar = document.querySelector("#adicionar-paciente");
buttonEnviar.addEventListener("click", function(event) {
event.preventDefault();
const form = document.querySelector("#form-adiciona");
createPaciente(form);
form.reset();
});
function createPaciente(form) {
const novoPaciente = createHtml();
function createHtml() {
const paciente = obtemPacienteInfo(form);
pacienteTr = createHtmlElements("tr", "paciente");
addElementsToTr(paciente, pacienteTr);
pacienteImc(paciente, pacienteTr);
return pacienteTr;
}
appendHtml(novoPaciente);
}
function obtemPacienteInfo(form) {
return {
nome: form.nome,
peso: form.peso,
altura: form.altura,
gordura: form.gordura
}
}
function createHtmlElements(tag, classe="") {
const htmlTag = document.createElement(tag);
htmlTag.classList.add(classe);
return htmlTag;
}
function addElementsToTr(paciente, tr) {
for (const [key, value] of Object.entries(paciente)) {
const Td = createHtmlElements("td", "info-" + key);
Td.textContent = value.value;
tr.appendChild(Td);
}
}
function pacienteImc(paciente, tr) {
const td = createHtmlElements("td", "info-imc");
td.textContent = calculaImc(paciente["peso"].value, paciente["altura"].value);
tr.appendChild(td);
}
function appendHtml(html) {
const tabela = document.querySelector("#tabela-pacientes");
tabela.appendChild(html);
}