Skip to content

Commit e316105

Browse files
author
Guilherme Almeida (Americas)
committed
last class
1 parent ff927df commit e316105

File tree

5 files changed

+71
-66
lines changed

5 files changed

+71
-66
lines changed

client/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ <h1 class="text-center">Negociações</h1>
6060

6161
<script src="js/app/services/ProxyFactory.js"></script>
6262
<script src="js/app/services/NegociacaoService.js"></script>
63+
<script src="js/app/services/HttpService.js"></script>
6364
<script>
6465
let negociacaoController = new NegociacaoController();
6566
</script>

client/js/app/controllers/NegociacaoController.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,11 @@ class NegociacaoController {
1919

2020
importaNegociacoes() {
2121
let service = new NegociacaoService();
22-
service.obterNegociacaoDaSemana((erro, negociacoes) => {
23-
if(erro){
24-
this._mensagem.texto = erro;
25-
return;
26-
}
27-
28-
negociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
29-
this._mensagem.texto = 'Negociações importadas com sucesso.';
30-
});
22+
23+
service.obterNegociacoes()
24+
.then(negociacoes => negociacoes
25+
.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao)))
26+
.catch(erro => this._mensagem.texto = erro);
3127
}
3228

3329
apaga() {
@@ -50,4 +46,8 @@ class NegociacaoController {
5046

5147
this._inputData.focus();
5248
}
49+
50+
ordena(){
51+
52+
}
5353
}

client/js/app/services/HttpService.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class HttpService {
2+
get(url){
3+
return new Promise((resolve, reject) => {
4+
let xhr = new XMLHttpRequest();
5+
xhr.open('GET', url);
6+
xhr.onreadystatechange = () => {
7+
if(xhr.readyState === 4){
8+
if (xhr.status === 200){
9+
resolve(JSON.parse(xhr.responseText));
10+
}else{
11+
reject(xhr.responseText);
12+
}
13+
}
14+
};
15+
16+
xhr.send();
17+
});
18+
}
19+
}
Lines changed: 38 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,47 @@
11
class NegociacaoService {
2-
obterNegociacaoDaSemana(cb){
3-
let xhr = new XMLHttpRequest();
4-
xhr.open('GET', 'negociacoes/semana');
5-
6-
xhr.onreadystatechange = () => {
7-
if(xhr.readyState === 4){
8-
if (xhr.status === 200){
9-
cb(null, JSON.parse(xhr.responseText)
10-
.map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
11-
12-
}else{
13-
console.log(xhr.responseText);
14-
cb('Não foi possível obter as negociações.', null);
15-
}
16-
}
17-
};
18-
19-
xhr.send();
2+
constructor(){
3+
this._http = new HttpService();
204
}
215

22-
obterNegociacaoDaSemanaAnterior(cb){
23-
let xhr = new XMLHttpRequest();
24-
xhr.open('GET', 'negociacoes/anterior');
25-
26-
xhr.onreadystatechange = () => {
27-
if(xhr.readyState === 4){
28-
if (xhr.status === 200){
29-
cb(null, JSON.parse(xhr.responseText)
30-
.map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
31-
32-
}else{
33-
console.log(xhr.responseText);
34-
cb('Não foi possível obter as negociações.', null);
35-
}
36-
}
37-
};
38-
39-
xhr.send();
6+
obterNegociacaoDaSemana(){
7+
return this._http.get('negociacoes/semana')
8+
.then(negociacoes => negociacoes.map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)))
9+
.catch(erro => {
10+
console.log(erro);
11+
throw new Error('Não foi possível obter as negociações da semana');
12+
});
4013
}
4114

42-
obterNegociacaoDaSemanaRetrasada(cb){
43-
let xhr = new XMLHttpRequest();
44-
xhr.open('GET', 'negociacoes/retrasada');
45-
46-
xhr.onreadystatechange = () => {
47-
if(xhr.readyState === 4){
48-
if (xhr.status === 200){
49-
cb(null, JSON.parse(xhr.responseText)
50-
.map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
15+
obterNegociacaoDaSemanaAnterior(){
16+
return this._http.get('negociacoes/anterior')
17+
.then(negociacoes => negociacoes.map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)))
18+
.catch(erro => {
19+
console.log(erro);
20+
throw new Error('Não foi possível obter as negociações da anterior');
21+
});
22+
}
5123

52-
}else{
53-
console.log(xhr.responseText);
54-
cb('Não foi possível obter as negociações.', null);
55-
}
56-
}
57-
};
24+
obterNegociacaoDaSemanaRetrasada(){
25+
return this._http.get('negociacoes/retrasada')
26+
.then(negociacoes => negociacoes.map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)))
27+
.catch(erro => {
28+
console.log(erro);
29+
throw new Error('Não foi possível obter as negociações da retrasada');
30+
});
31+
}
5832

59-
xhr.send();
33+
obterNegociacoes(){
34+
return Promise.all([
35+
this.obterNegociacaoDaSemana(),
36+
this.obterNegociacaoDaSemanaAnterior(),
37+
this.obterNegociacaoDaSemanaRetrasada()
38+
])
39+
.then(periodos => {
40+
return periodos
41+
.reduce((dados, periodo) => dados.concat(periodo), []);
42+
})
43+
.catch(erro => {
44+
throw new Error(erro)
45+
});
6046
}
6147
}

client/js/app/views/NegociacoesView.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ class NegociacoesView extends View{
44
return `
55
<table class="table table-hover table-bordered">
66
<thead>
7-
<tr>
8-
<th>DATA</th>
9-
<th>QUANTIDADE</th>
10-
<th>VALOR</th>
11-
<th>VOLUME</th>
7+
<th onclick="negociacaoController.ordena('data')">DATA</th>
8+
<th onclick="negociacaoController.ordena('quantidade')">QUANTIDADE</th>
9+
<th onclick="negociacaoController.ordena('valor')">VALOR</th>
10+
<th onclick="negociacaoController.ordena('volume')">VOLUME</th>
1211
</tr>
1312
</thead>
1413

0 commit comments

Comments
 (0)