1
resposta

resposta

index.html

     <div data-tabela></div>

ListaNegociacoes.js

    get volumeTotal(){
        return this.#listaNegociacoes.reduce((total, n) => total += n.volume, 0.0)
    }

NegociacoesView.js

class NegociacoesView{
    #elemento
    constructor(elemento){
        this.#elemento = elemento
    }

    #template(model){return `
        <table class="table table-hover table-bordered">
            <thead>
                <tr>
                    <th>DATA</th>
                    <th>QUANTIDADE</th>
                    <th>VALOR</th>
                    <th>VOLUME</th>
                </tr>
            </thead>

            <tbody>
                ${model.negociacao.map(n => `
                    <tr>
                        <td>${DateHelper.dataParaTexto(n.data)}</td>
                        <td>${n.quantidade}</td>
                        <td>${n.valor}</td>
                        <td>${n.volume}</td>
                    </tr>
                `).join(" ")}
            </tbody>
                    <td colspan="3">Total:</td>
                    <td>${model.volumeTotal}</td>
            <tfoot>
            </tfoot>
        </table>
    `}

    update(model){
        this.#elemento.innerHTML = this.#template(model)
    }
}

NegociacaoController.js

class NegociacaoController {
    #inputData;
    #inputQuantidade;
    #inputValor;
    #form;
    #listaNegociacoes;
    #negocicoesViews;

    constructor() {
        let $ = document.querySelector.bind(document);

        this.#form = $('.form');
        this.#inputData = $('#data');
        this.#inputQuantidade = $('#quantidade');
        this.#inputValor = $('#valor');
        this.#listaNegociacoes = new ListaNegociacoes()
        this.#negocicoesViews = new NegociacoesView($("[data-tabela]"))

        this.#negocicoesViews.update(this.#listaNegociacoes)
    }

    adiciona(evento) {
        evento.preventDefault();

        this.#listaNegociacoes.adiciona(this.#criarNegociacao())

        this.#negocicoesViews.update(this.#listaNegociacoes)

        this.#limpaCampo();
    }

    #criarNegociacao() {
        return new Negociacao(DateHelper.textoParaData(this.#inputData.value), this.#inputQuantidade.value, this.#inputValor.value)
    }

    #limpaCampo() {
        this.#form.reset();
        this.#inputData.focus();
    }

}

Ficou alguma coisa errada nesse código ??

1 resposta

Oi Wesley, tudo bem?

Desculpa a demora em retornar.

Muito obrigada por compartilhar o seu código com a gente. Não tem nada errado no seu código, parabéns por praticar enquanto faz os cursos.

Um abraço e bons estudos.