2
respostas

Está funcionando ...mas no console não mostra adiciona interceptado...porque?

class NegociacaoController {

constructor() {

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

    this._listaNegociacoes = new Proxy(new ListaNegociacoes(), {

    get(target, prop, receiver) {

    if(['adiciona', 'esvazia'].includes(prop) && typeof(target[prop]) == typeof(Function)) {

        return function(){

          console.log(`método '${prop}' interceptado`);
          Reflect.apply(target[prop], target, arguments);
          self._negociacoesView.update(target);

        }
    }

 return Reflect.get(target, prop, receiver);
    }
 });
    this._listaNegociacoes = new ListaNegociacoes();
    //this._negociacoesView = new NegociacoesView();
    this._negociacoesView = new NegociacoesView($('#negociacoesView'));
    //this._negociacoesView.update();
    this._negociacoesView.update(this._listaNegociacoes);
    this._mensagem = new Mensagem();
    //this._mensagemView = new MensagemView();
    this._mensagemView = new MensagemView($('#mensagemView'));
    this._mensagemView.update(this._mensagem);
}
adiciona(event) {

    event.preventDefault();
    //let helper = new DateHelper();
    //let data = new DateHelper().textoParaData(this._inputData.value);
    //o retorno será a data na inst"ancia negociacao
    /*
    let data = new Date(...this._inputData
        .value.split('-')
        .map(function(item, indice) {
            return item - indice % 2;
        }));

   let data = new Date(...
    this._inputData.value
    .split('-')
    .map((item, indice) => item - indice % 2)
    );
    */ 
   /*
    let negociacao = new Negociacao(
        //helper.textoParaData(this._inputData.value),
        DateHelper.textoParaData(this._inputData.value),
        this._inputQuantidade.value,
        this._inputValor.value

        data,
        this._inputQuantidade.value,
        this._inputValor.value

    );
    */
    this._listaNegociacoes.adiciona(this._criaNegociacao());
    this._negociacoesView.update(this._listaNegociacoes);
    this._mensagem.texto = 'Negociacao adicionada com sucesso';
    // this._listaNegociacoes.adiciona(negociacao);
    this._mensagemView.update(this._mensagem);
    this._limpaFormulario();
    //console.log(this._listaNegociacoes.negociacoes);   
    //console.log(negociacao);
    //console.log(helper.dataParaTexto(negociacao.data));
    //console.log(DateHelper.dataParaTexto(negociacao.data));
    /*
    let diaMesAno = negociacao.data.getDate()
     + '/' + (negociacao.data.getMonth() + 1)
     + '/' + negociacao.data.getFullYear();

     console.log(diaMesAno);    
    */
    /*
    let inputData = document.querySelector('#data');
    let inputQuantidade =  document.querySelector('#quantidade');
    let inputValor = document.querySelector('#valor');


   let $ = document.querySelector.bind(document);
   let inputData = $('#data');
   let inputQuantidade =  $('#quantidade');
   let inputValor = $('#valor');

    console.log(inputData.value);
    console.log(inputQuantidade.value);
    console.log(inputValor.value);

    console.log(this._inputData.value);
    console.log(this._inputQuantidade.value);
    console.log(this._inputValor.value);
   */
}

apaga() {

    this._listaNegociacoes.esvazia();
    this._negociacoesView.update(this._listaNegociacoes);

    this._mensagem.texto = 'Negociações apagadas com sucesso';
    this._mensagemView.update(this._mensagem);
}
_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();

}

}

2 respostas

Fala aí Re, tudo bem? Olhando o código parece estar correto.

Consegue subir o projeto no Github? Ficaria mais fácil tentar lhe ajudar.

Fico no aguardo.

Ola, você esta criando outra ListaNegociacoes logo apos o código do proxy.

    this._listaNegociacoes = new ListaNegociacoes();  

acho que é só apagar que resolve =)