Bom dia pessoal, no inicio do livro Cangaceiro Javascript a data é criada utilizando a data atual e mostrada no console data/hora.
No decorrer, o formulário passa a ter uma data input type “date” e o id=“data” onde podemos incluir a data.
Mas gostaria de saber como é possível manter a data utilizando a data atual e hora atual com um input type “hidden” ( o usuário não precisa digitar a data para incluir uma negociação).
Eu estou neste estágio do livro:
Classe NegociacaoController - onde criamos um construtor e uma negociação:
class NegociacaoController {
constructor() {
let $ = document.querySelector.bind(document);
this._inputData = $('#data');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
this._negociacoes = new Negociacoes();
}
adiciona(event) {
event.preventDefault();
this._negociacoes.adiciona(this._criaNegociacao());
console.log(this._negociacoes);
this._limpaFormulario();
}
_limpaFormulario() {
this._inputData.value = '';
this._inputQuantidade.value = 1;
this._inputValor.value = 0.0
this._inputData.focus();
}
_criaNegociacao() {
return new Negociacao(
DateConverter.paraData(this._inputData.value),
parseInt(this._inputQuantidade.value),
parseFloat(this._inputValor.value)
);
}
}
classe Negociação:
class Negociacao {
constructor(_data, _quantidade, _valor) {
Object.assign(this, { _quantidade, _valor })
this._data = new Date(_data.getTime());
Object.freeze(this);
}
get volume() {
return this._quantidade * this._valor;
}
get data() {
return new Date(this._data.getTime());
}
get quantidade() {
return this._quantidade;
}
get valor() {
return this._valor;
}
}
classe DateConverter
class DateConverter {
constructor() {
throw new Error('Esta classe não pode ser instanciada');
}
static paraTexto(data) {
return `${data.getDate()}/${data.getMonth() + 1}/${data.getFullYear()}`;
}
static paraData(texto) {
if (!/^\d{4}-\d{2}-\d{2}$/.test(texto))
throw new Error('Deve estar no formato aaaa-mm-dd');
return new Date(...texto.split('-').map((item, indice) => item - indice % 2));
}
}