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();
}
}