Arquivo form.js
let botaoAdicionar = document.querySelector('#adicionar-paciente')
botaoAdicionar.addEventListener('click', function (event) {
event.preventDefault();
let form = document.querySelector('#form-adiciona')
//Extraindo informações do paciente do form
let paciente = obtemPacienteDoFormulario(form)
console.log(paciente)
//Cria a tr e a td do paciente
let pacienteTr = montaTr(paciente)
let erros = validaPacientes(paciente)
console.log(erros)
if (erros.length > 0) {
exibeMensagensDeErro(erros)
return
}
//Adicionando o paciente na tabela
let tabela = document.querySelector('#tabela-pacientes')
tabela.appendChild(pacienteTr)
console.log(pacienteTr)
})
function exibeMensagensDeErro(erros) {
var ul = document.querySelector("#mensagens-erro");
erros.forEach(function (erro) {
var li = document.createElement("li");
li.textContent = erro;
ul.appendChild(li);
});
}
function obtemPacienteDoFormulario(form) {
let paciente = {
nome: form.nome.value,
peso: form.peso.value,
altura: form.altura.value,
gordura: form.gordura.value,
imc: calculaImc(form.peso.value, form.altura.value)
}
return paciente
}
function montaTr(paciente) {
let pacienteTr = document.createElement('tr')
pacienteTr.classList.add('paciente')
pacienteTr.appendChild(montaTd(paciente.nome, 'info-nome'))
pacienteTr.appendChild(montaTd(paciente.peso, 'info-peso'))
pacienteTr.appendChild(montaTd(paciente.altura, 'info-altura'))
pacienteTr.appendChild(montaTd(paciente.gordura, 'info-gordura'))
pacienteTr.appendChild(montaTd(paciente.imc, 'info-imc'))
return pacienteTr
}
function montaTd(dado, classe) {
let td = document.createElement('td')
td.textContent = dado
td.classList.add(classe)
return td
}
function validaPacientes(paciente) {
let erros = []
if (validaPeso(paciente.peso)) erros.push('O peso é inválido!')
if (validaAltura(paciente.altura)) erros.push('A altura é inválida!')
return erros
}
Arquivo calcula-imc.js
let titulo = document.querySelector(".titulo")
titulo.textContent = 'Aparecida Nutricionista'
let pacientes = document.querySelectorAll('.paciente')
for (let i = 0; i < pacientes.length; i++) {
let paciente = pacientes[i]
let tdPeso = paciente.querySelector('.info-peso')
let peso = tdPeso.textContent
let tdAltura = paciente.querySelector('.info-altura')
let altura = tdAltura.textContent
let tdImc = paciente.querySelector('.info-imc')
let pesoEhValido = validaPeso(peso)
let alturaEhValida = validaAltura(altura)
if (!pesoEhValido) {
console.log('Peso inválido')
pesoEhValido = false
tdImc.textContent = 'Peso Inválido!'
paciente.classList.add('paciente-invalido')
}
if (!alturaEhValida) {
console.log('Altura inválida')
alturaEhValida = false
tdImc.textContent = 'Altura Inválida!'
paciente.classList.add('paciente-invalido')
}
if (alturaEhValida && pesoEhValido) {
let imc = calculaImc(peso, altura)
tdImc.textContent = imc
}
}
function validaPeso(peso) {
if (peso >= 0 && peso < 1000) {
return true
} else {
return false
}
}
function validaAltura(altura) {
if (altura >= 0 && altura <= 3.0) {
return true
} else {
return false
}
}
function calculaImc(peso, altura) {
let imc = 0
imc = peso / (altura * altura)
return imc.toFixed(2)
}