L44 - Hybrid Mobile 4
L44 - Hybrid Mobile 4
COS216
AVINASH SINGH
DEPARTMENT OF COMPUTER SCIENCE
UNIVERSITY OF PRETORIA
COVID 19 Tracker
For the requirements let us add some native libraries, run the following commands:
getData() {
COVID 19 Tracker
"Global": {
"NewConfirmed": 157653,
"TotalConfirmed": 6986967,
"NewDeaths": 4916,
"TotalDeaths": 407552,
"NewRecovered": 339641,
"TotalRecovered": 3085182
},
"Countries": [
{
"Country": "Afghanistan",
"CountryCode": "AF",
The Data Snippet
"Slug": "afghanistan",
"NewConfirmed": 582,
"TotalConfirmed": 19551,
"NewDeaths": 18,
"TotalDeaths": 327,
"NewRecovered": 68,
"TotalRecovered": 1830,
"Date": "2020-06-07T09:36:23Z"
},
COVID 19 Tracker tab1.page.html
<ion-card>
<ion-card-header>
<ion-card-title>Summary Statistics</ion-card-title>
<ion-card-subtitle>Global Statistics</ion-card-subtitle>
</ion-card-header>
<ion-card-content *ngIf="data != undefined">
<ion-chip color="warning">
New Confirmed Cases:
<ion-label class="black"> {{ data['Global']['NewConfirmed'] }} </ion-label>
</ion-chip>
<ion-chip color="warning">
Total Confirmed Cases:
<ion-label class="black"> {{ data.Global.TotalConfirmed }} </ion-label>
</ion-chip>
…
</ion-card-content>
</ion-card>
COVID 19 Tracker tab1.page.html
<ion-title size="large">Countries</ion-title>
<ion-list>
<ion-item *ngFor="let d of data.Countries">
<ion-avatar slot="start">
<img src="https://www.countryflags.io/{{d.CountryCode}}/
flat/64.png">
</ion-avatar>
<ion-label>
<h2>{{ d.Country }}</h2>
<h3>New Cases: {{ d.NewConfirmed }}</h3>
<p>Total Deaths: {{ d.TotalDeaths }}</p>
</ion-label>
</ion-item>
</ion-list>
COVID 19 Tracker tab1.page.html
<ion-title size="large">Countries</ion-title>
<ion-list>
<ion-item *ngFor="let d of data.Countries">
<ion-avatar slot="start">
<img src="https://www.countryflags.io/{{d.CountryCod
e}}/flat/64.png">
</ion-avatar>
<ion-label>
<h2>{{ d.Country }}</h2>
<h3>New Cases: {{ d.NewConfirmed }}</h3>
<p>Total Deaths: {{ d.TotalDeaths }}</p>
</ion-label>
</ion-item>
</ion-list>
COVID 19 Tracker tab3.module.ts
No let us implement the Risk Checker, this won’t have much functionality just some basic
form and some validation. For this we will use a module called ReactiveFormsModule
Create a variable:
myForm: FormGroup;
COVID 19 Tracker Tab3.page.ts
Create Validators
<form [formGroup]="myForm">
<ion-list>
<ion-item>
<ion-label position="floating">Name: </ion-label>
<ion-
input [class.invalid]="!myForm.controls.name.valid" formControlName="name"></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Surname: </ion-label>
<ion-
input [class.invalid]="!myForm.controls.surname.valid" formControlName="surname"></ion-
input>
</ion-item>
COVID 19 Tracker Tab3.page.html
<ion-radio-group formControlName="gender">
<ion-list-header>
<ion-label><b>Gender</b></ion-label>
</ion-list-header>
<ion-item>
<ion-label>Male</ion-label>
<ion-radio slot="end" value="male"></ion-radio>
</ion-item>
<ion-item>
<ion-label>Female</ion-label>
<ion-radio slot="end" value="female"></ion-radio>
</ion-item>
<ion-item>
<ion-label>Other</ion-label>
<ion-radio slot="end" value="other"></ion-radio>
</ion-item>
</ion-radio-group>
COVID 19 Tracker Tab3.page.html
…
…
</ion-list>
</form>
<ion-button expand="full" (click)="detect()">Submit</ion-button>
COVID 19
Tracker
COVID 19 Tracker Tab3.page.ts
detect() {
if (this.myForm.valid) {
let risk = this.myForm.get("travel").value == "no" ? "GREEN" : "RED";
this.localNotifications.schedule({
id: 1,
text: "Risk Status: " + risk,
color: risk,
data: {},
});
this.presentActionSheet(risk);
} else console.log(this.myForm);
}
COVID 19 Tracker Tab3.page.ts
async presentActionSheet(risk) {
const actionSheet = await this.actionSheetController.create({
header: "Risk Status",
cssClass: risk,
buttons: [
{
text: risk,
role: "destructive",
cssClass: risk,
handler: () => {
console.log("clicked");
},
},
],
});
await actionSheet.present();
}
Ionic - Documentation
https://ionicframework.com/docs/