1
resposta

As minhas mensagens, não aparecem na primeira vez das operações. Alguém pode me ajudar.

As munhas mensagens: "Negociação adicionada com sucesso", "Negociações Importadas com sucesso" e "Negociações apagadas com sucesso" , só aparecem na segunda operação. Não aparecem na primeira vez. Não sei o motivo segue o meu código.

class NegociacaoController {

    constructor() {
        let $ = document.querySelector.bind(document);
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');

        this._listaNegociacoes = new Bind(
            new ListaNegociacoes(), 
            new NegociacoesView($('#negociacoesView')),
            'adiciona', 'esvazia');

        this._mensagem = new Bind(
            new Mensagem(), 
            new MensagemView($('#mensagemView')),
            'texto');
    }

    adiciona(event) {

        event.preventDefault(); 
        this._listaNegociacoes.adiciona(this._criaNegociacao());
        this._mensagem.texto = 'Negociação adicionada com sucesso';
        this._limpaFormulario();
    }  

    importaNegociacoes() {

       let xhr = new XMLHttpRequest();

       xhr.open('GET', 'negociacoes/semana');

       xhr.onreadystatechange = () => {

            /*
            0: requisição ainda não iniciada

            1: conexão com o servidor estabelecida

            2: requisição recebida

            3: processando requisição

            4: requisição concuída e a resposta esta pronta
            */

            if (xhr.readyState == 4) {

                if (xhr.status == 200) {

                    JSON.parse(xhr.responseText)
                        .map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor))
                        .forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
                        this._mensagem.texto = 'Negociações importadas com sucesso.';
                } else {
                    console.log(xhr.responseText);
                    this._mensagem.texto = 'Não foi possível obter as negociações';
                }
            }
       };
       xhr.send();
    }

    apaga() {

        this._listaNegociacoes.esvazia();
        this._mensagem.texto = 'Negociações apagadas com sucesso';
    }

    _criaNegociacao() {

        return new Negociacao(
            DateHelper.textoParaData(this._inputData.value), 
            this._inputQuantidade.value, 
            this._inputValor.value);
    }

    _limpaFormulario() {

        this._inputData.value = '';
        this._inputQuantidade.value = 1;
        this._inputValor.value = 0.0;

        this._inputData.focus();
    }
}
1 resposta

Boa tarde, Paulo! Como vai?

Vc poderia compartilhar o seu projeto completo no github e mandar o link aqui? Assim ficará mais fácil de testar e verificar o que está ocorrendo!

Outra coisa, vc chegou a dar uma olhada no console do navegador quando efetua essas ações? Nesses casos, é impresso algum log de erro? Se sim, vc poderia colar aqui o log completo que é apresentado?

Cm essas informações eu poderei te ajudar de forma mais efetiva!