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

Encapsular código que retorna o volume total de negociações

Já que a classe ListaNegociacoes é responsável por um conjunto de negociações, sugiro mover o código que totaliza o volume para um método desta classe:

js/app/models/ListaNegociacoes.js:

class ListaNegociacoes {
    // ...
    volumeTotal() {
        return this._negociacoes.reduce((total, n) => total + n.volume, 0.0);
    }
    // ...
}

js/app/views/NegociacoesView.js:

class NegociacoesView {
    // ...
    _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.negociacoes.map(n => `

                    <tr>
                        <td>${DateHelper.dataParaTexto(n.data)}</td>
                        <td>${n.quantidade}</td>
                        <td>${n.valor}</td>
                        <td>${n.volume}</td>
                    </tr>

                `).join('')}                
            </tbody>

            <tfoot>
                <td colspan="3"></td>
                <td>
                    ${model.volumeTotal()}
                </td>
            </tfoot>

        </table>
        `;
    }
    // ...
}

Dessa forma o código fica encapsulado e pode ser reaproveitado.

O que vocês acham?

Obrigado.

3 respostas
solução!

Willian, perfeito ! Eu deixei de fora para motivar um exercício para que o aluno fizesse isso. Mas pelo visto não o criei.

O que você fez é absolutamente lindo e orientado a objetos!

Feliz 2017 cangaceiro!

Caro Flavio.

Você tem razão. O exercício foi proposto na seguinte etapa: https://cursos.alura.com.br/course/javascript-es6-orientacao-a-objetos-parte-2/task/17511

Interessante. A diferença é que você usou get ao invés de um método normal como fiz.

Acabei de chegar nesta parte. Hehehe.

Obrigado, Willian.

Mas seu comentário foi muito perspicaz. Não usei essa palavra à tona:

Qualidade de quem tem facilidade para perceber algo; que possui excesso de percepção para entender as coisas ou que as compreende com maior facilidade.

Feliz 2017!