Skip to content

Commit 6965495

Browse files
committed
Added loading controller during the external requests
1 parent 1871e33 commit 6965495

File tree

3 files changed

+123
-39
lines changed

3 files changed

+123
-39
lines changed
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
export class Vaga {
2-
id: number;
3-
title: String;
4-
body: string;
5-
labels: string[];
6-
username: string;
7-
password: string;
8-
2+
id: number;
3+
number: number;
4+
title: String;
5+
body: string;
6+
labels: string[];
7+
username: string;
8+
password: string;
99
}

front-end/src/app/pages/cadastro-vaga/cadastro-vaga.page.ts

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Component, OnInit } from "@angular/core";
44
import { Vaga } from "src/app/model/vaga.model";
55
import { DomSanitizer } from "@angular/platform-browser";
66
import { marked } from "marked";
7+
import { AlertController, LoadingController } from "@ionic/angular";
78

89
@Component({
910
selector: "app-cadastro-vaga",
@@ -14,20 +15,59 @@ export class CadastroVagaPage implements OnInit {
1415
constructor(
1516
private route: ActivatedRoute,
1617
private vagaService: VagaService,
17-
private sanitizer: DomSanitizer
18+
private sanitizer: DomSanitizer,
19+
private loadingController: LoadingController,
20+
private alertController: AlertController,
21+
private router: Router
1822
) {}
1923

2024
private renderer = new marked.Renderer();
2125
private defaultOptions: marked.MarkedOptions = {};
26+
2227

2328
vaga: Vaga;
24-
ngOnInit() {
29+
async ngOnInit() {
30+
31+
const loading = await this.loadingController.create({
32+
message: 'Please wait...',
33+
spinner:'bubbles'
34+
});
35+
loading.present();
36+
2537
this.applyDefaultOptions();
2638
this.vagaService
2739
.getVagaById(this.route.snapshot.params["id"])
28-
.subscribe((result) => {
29-
this.vaga = result;
30-
});
40+
.subscribe(
41+
{
42+
next:async(result:Vaga)=>{
43+
this.vaga = result;
44+
await loading.dismiss();
45+
},
46+
error: async (response: any) => {
47+
await loading.dismiss();
48+
console.error(response);
49+
const { error, statusText } = response;
50+
let { message } = error ? error : { message: statusText };
51+
52+
const alert = await this.alertController.create({
53+
cssClass: "my-custom-class",
54+
header: "Ops!!!",
55+
message,
56+
buttons: [
57+
{
58+
text: "OK",
59+
id: "confirm-button",
60+
handler: () => {
61+
this.router.navigate(["home"]);
62+
alert.dismiss();
63+
},
64+
},
65+
],
66+
});
67+
await alert.present();
68+
},
69+
}
70+
);
3171
}
3272

3373
getContent(content: string) {

front-end/src/app/pages/vagas/vagas.page.ts

Lines changed: 71 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,83 @@
1-
import {Vaga} from './../../model/vaga.model';
2-
import {Component, OnInit} from '@angular/core';
3-
import {VagaService} from 'src/app/service/vaga.service';
4-
import {Router} from '@angular/router';
5-
import { DomSanitizer } from '@angular/platform-browser';
1+
import { Vaga } from "./../../model/vaga.model";
2+
import { Component, OnInit } from "@angular/core";
3+
import { VagaService } from "src/app/service/vaga.service";
4+
import { Router } from "@angular/router";
5+
import { DomSanitizer } from "@angular/platform-browser";
6+
import { AlertController, LoadingController } from "@ionic/angular";
67

78
@Component({
8-
selector: 'app-vagas',
9-
templateUrl: './vagas.page.html',
10-
styleUrls: ['./vagas.page.scss']
9+
selector: "app-vagas",
10+
templateUrl: "./vagas.page.html",
11+
styleUrls: ["./vagas.page.scss"],
1112
})
1213
export class VagasPage implements OnInit {
13-
constructor(private vagaService: VagaService, private router: Router) {}
14+
constructor(
15+
private vagaService: VagaService,
16+
private alertController: AlertController,
17+
private loadingController: LoadingController,
18+
private router: Router
19+
) {}
1420

1521
vagas: Vaga[] = [];
1622
vagasFilter: Vaga[] = [];
1723
page = 1;
18-
pesquisa = '';
24+
pesquisa = "";
1925

20-
ngOnInit() {
21-
this.vagaService.getAllVagasPaginacao(this.page, 100).subscribe(result => {
22-
this.vagasFilter = result;
23-
this.vagas = this.vagasFilter;
26+
async ngOnInit() {
27+
const loading = await this.loadingController.create({
28+
message: "Please wait...",
29+
spinner: "bubbles",
30+
});
31+
loading.present();
32+
this.vagaService.getAllVagasPaginacao(this.page, 100).subscribe({
33+
next: async (result: Vaga[]) => {
34+
this.vagasFilter = result;
35+
this.vagas = this.vagasFilter;
36+
await loading.dismiss();
37+
},
38+
error: async (response: any) => {
39+
await loading.dismiss();
40+
console.error(response);
41+
const { error, statusText } = response;
42+
let { message } = error ? error : { message: statusText };
43+
44+
const alert = await this.alertController.create({
45+
cssClass: "my-custom-class",
46+
header: "Ops!!!",
47+
message,
48+
buttons: [
49+
{
50+
text: "OK",
51+
id: "confirm-button",
52+
handler: () => {
53+
this.router.navigate(["home"]);
54+
alert.dismiss();
55+
},
56+
},
57+
],
58+
});
59+
await alert.present();
60+
},
61+
complete: () => {},
2462
});
2563
}
2664

27-
openVaga(vaga) {
65+
openVaga(vaga: Vaga) {
2866
this.router.navigate([`/cadastro-vaga/${vaga.number}`]);
2967
}
3068

31-
loadData(event) {
32-
this.vagaService.getAllVagasPaginacao(this.page++, 10).subscribe(result => {
33-
this.vagasFilter = this.vagasFilter.concat(result);
34-
this.vagas = this.vagasFilter;
35-
event.target.complete();
36-
});
69+
loadData(event: any) {
70+
this.vagaService
71+
.getAllVagasPaginacao(this.page++, 10)
72+
.subscribe((result) => {
73+
this.vagasFilter = this.vagasFilter.concat(result);
74+
this.vagas = this.vagasFilter;
75+
event.target.complete();
76+
});
3777
}
78+
3879
buscar() {
39-
this.vagas = this.vagasFilter.filter(a =>
80+
this.vagas = this.vagasFilter.filter((a) =>
4081
a.title.toLocaleLowerCase().includes(this.pesquisa.toLowerCase())
4182
);
4283
}
@@ -46,18 +87,21 @@ export class VagasPage implements OnInit {
4687
}
4788

4889
limpar() {
49-
this.pesquisa = '';
90+
this.pesquisa = "";
5091
}
5192

5293
openNewVaga() {
53-
window.open('https://github.com/soujava/vagas-java/issues/new/choose', '_blank');
94+
window.open(
95+
"https://github.com/soujava/vagas-java/issues/new/choose",
96+
"_blank"
97+
);
5498
}
5599

56-
getLabels(labels) {
100+
getLabels(labels: any[]) {
57101
if (labels) {
58-
let labelMap = labels.map(a => a.name);
102+
let labelMap = labels.map((a) => a.name);
59103
if (labelMap.length > 0) {
60-
return labelMap.reduce(a => a + ', ');
104+
return labelMap.reduce((a) => a + ", ");
61105
}
62106
}
63107
}

0 commit comments

Comments
 (0)