Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Buscar Pacientes cria tabela vazia

Imagino que o erro seja nessa parte do código porque estava funcionando perfeitamente, a única diferença foi que na hora do console.log typeof ele não mostra como array do jeito que aparaceu na aula. E quando clico em Buscar Pacientes ele aumenta a tabela, mas sem dado algum.

var botaoAdicionar = document.querySelector("#buscar-pacientes");

botaoAdicionar.addEventListener("click", function(){
    console.log("Buscando pacientes");

    var xhr = new XMLHttpRequest();

    xhr.open("GET", "https://api-pacientes.herokuapp.com/pacientes");

    xhr.addEventListener("load", function(){
        var resposta = xhr.responseText;
        var pacientes = JSON.parse(resposta);

        pacientes.forEach(function(paciente){
            adicionaPacienteNaTabela(paciente);
        });
    });

    xhr.send();

});
4 respostas

Oi, Eudes, tudo bem?

Testei o seu trecho de código com o projeto de curso e os pacientes foram importados. No console do navegador não apareceu nenhuma mensagem? Talvez o problema esteja na função adicionaPacienteNaTabela. Se quiser compartilhar o seu código form.js para que possamos testar também.

Oi, Laís, tudo bem comigo e você?

Então aí que tá não aparece nada no console do navegador. Meu código do form.js:

var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event){
    event.preventDefault();

    var form = document.querySelector("#form-adiciona");
    var paciente = obtemPacienteDoFormulario(form);

    var erros = validaPaciente(paciente);

    if(erros.length > 0){
        exibeMensagensDeErro(erros);    
        return;
    }

    adicionaPacienteNaTabela(paciente);

    form.reset();
    var mensagensErro = document.querySelector("#mensagens-erro");
    mensagensErro.innerHTML = ""

});

function adicionaPacienteNaTabela(){
    var pacienteTr = montaTr(paciente);
    var tabela = document.querySelector("#tabela-pacientes");
    tabela.appendChild(pacienteTr);

}

function exibeMensagensDeErro(erros){
    var ul = document.querySelector("#mensagens-erro");
    ul.innerHTML = "";

    erros.forEach(function(erro){
        var li = document.createElement("li");
        li.textContent = erro;
        ul.appendChild(li);
    });
}

function obtemPacienteDoFormulario(form){

    var 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){

    var 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){
    var td = document.createElement("td");
    td.textContent = dado;
    td.classList.add(classe);
    return td;
}

function validaPaciente(paciente){

    var erros = [];

    if(paciente.nome.length == 0){
        erros.push("O nome não pode ser em branco!");
    }

    if(!validaPeso(paciente.peso)){
        erros.push("Peso é inválido!");
    }

    if(!validaAltura(paciente.altura)){
        erros.push("Altura é inválida!");
    }

    if(paciente.gordura.length == 0){
        erros.push("O percentual de gordura não pode estar em branco!");
    }

    if(paciente.peso.length == 0){
        erros.push("O peso não pode estar em branco!")
    }

    if(paciente.altura.length == 0){
        erros.push("A altura não pode estar em branco!")
    }
    return erros;
}
solução!

Oi, Eudes, tudo bem?

Na sua função adicionaPacienteNaTabela() você não passou o parâmetro paciente entre os parênteses.

Ficando dessa forma: adicionaPacienteNaTabela(paciente)

Testa e me fala se deu certo!

Era isso mesmo haha se tem uma coisa que aprender programação ensina é que as vezes pequenos detalhes fazem toda diferença, muito obrigado! :)