Commit 11e3848a authored by Ratnadeep Rajendra Kharade's avatar Ratnadeep Rajendra Kharade
Browse files

Added api integration for showing bike list

parent e878023d
...@@ -12,6 +12,8 @@ import { Geolocation } from '@ionic-native/geolocation/ngx'; ...@@ -12,6 +12,8 @@ import { Geolocation } from '@ionic-native/geolocation/ngx';
import { HttpClientModule } from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http';
import { RestService } from './rest.service';
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
entryComponents: [], entryComponents: [],
...@@ -25,6 +27,7 @@ import { HttpClientModule } from '@angular/common/http'; ...@@ -25,6 +27,7 @@ import { HttpClientModule } from '@angular/common/http';
Geolocation, Geolocation,
StatusBar, StatusBar,
SplashScreen, SplashScreen,
RestService,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy } { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
], ],
bootstrap: [AppComponent] bootstrap: [AppComponent]
......
...@@ -4,6 +4,8 @@ import { Router } from '@angular/router'; ...@@ -4,6 +4,8 @@ import { Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { RestService } from '../../rest.service';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
templateUrl: './login.page.html', templateUrl: './login.page.html',
...@@ -15,7 +17,7 @@ export class LoginPage implements OnInit { ...@@ -15,7 +17,7 @@ export class LoginPage implements OnInit {
correctCredentials = false; correctCredentials = false;
loginApi: Observable<any>; loginApi: Observable<any>;
constructor(private router: Router, public httpClient: HttpClient) { constructor(private router: Router, public httpClient: HttpClient, public restService: RestService) {
} }
...@@ -35,6 +37,7 @@ export class LoginPage implements OnInit { ...@@ -35,6 +37,7 @@ export class LoginPage implements OnInit {
this.loginApi this.loginApi
.subscribe((data) => { .subscribe((data) => {
console.log('my data: ', data); console.log('my data: ', data);
this.restService.setToken(data.token);
this.router.navigateByUrl('/home'); this.router.navigateByUrl('/home');
}, (error) => { }, (error) => {
console.log(error); console.log(error);
......
...@@ -21,17 +21,17 @@ ...@@ -21,17 +21,17 @@
<ion-footer> <ion-footer>
<div class="bike-list-container"> <div class="bike-list-container">
<ion-icon class="bike-list-expander" name="arrow-dropup-circle" (click)="expandBikeList()"></ion-icon> <ion-icon class="bike-list-expander" name="arrow-dropup-circle" (click)="expandBikeList()"></ion-icon>
<div class="bike-container" *ngFor="let i of tempArr"> <div class="bike-container" *ngFor="let bike of bikes">
<div class="bike-name"> <div class="bike-name">
Bike 1 {{bike.name}}
</div> </div>
<div class="battery-info"> <div class="battery-info">
<div><ion-icon class="battery-icon" name="battery-charging"></ion-icon></div> <div><ion-icon class="battery-icon" name="battery-charging"></ion-icon></div>
<div>100%</div> <div>{{bike.batteryPercentage + " %"}}</div>
</div> </div>
<div class="address-info"> <div class="address-info">
<div class="disance">56m</div> <div class="disance">{{bike.distance + "m"}}</div>
<div class="address">Schllingstrasse 129</div> <div class="address">{{bike.address}}</div>
</div> </div>
</div> </div>
</div> </div>
......
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { Geolocation } from '@ionic-native/geolocation/ngx'; import { Geolocation } from '@ionic-native/geolocation/ngx';
import { RestService } from '../rest.service';
import { Observable } from 'rxjs';
import { HttpClient, HttpHeaders } from '@angular/common/http';
declare var H: any; declare var H: any;
@Component({ @Component({
selector: 'app-home', selector: 'app-home',
...@@ -9,6 +14,9 @@ declare var H: any; ...@@ -9,6 +14,9 @@ declare var H: any;
export class HomePage { export class HomePage {
private platform: any; private platform: any;
private map: any; private map: any;
bikes = [];
bikeApi: Observable<any>;
private currentLocation = { lat: 0, lng: 0 }; private currentLocation = { lat: 0, lng: 0 };
public is3DChecked = false; public is3DChecked = false;
...@@ -29,15 +37,20 @@ export class HomePage { ...@@ -29,15 +37,20 @@ export class HomePage {
//@ViewChild("mapElement", { static: false }) //@ViewChild("mapElement", { static: false })
//public mapElement: ElementRef; //public mapElement: ElementRef;
public constructor(private geolocation: Geolocation) { constructor(private geolocation: Geolocation,
public restService: RestService,
public httpClient: HttpClient) {
this.platform = new H.service.Platform({ this.platform = new H.service.Platform({
'apikey': 'tiVTgBnPbgV1spie5U2MSy-obhD9r2sGiOCbBzFY2_k' 'apikey': 'tiVTgBnPbgV1spie5U2MSy-obhD9r2sGiOCbBzFY2_k'
}); });
} }
public ngOnInit() { } ngOnInit() {
this.getBikesList();
}
public ngAfterViewInit() { ngAfterViewInit() {
setTimeout(() => { setTimeout(() => {
this.loadmap("2D"); this.loadmap("2D");
}, 1000); }, 1000);
...@@ -45,6 +58,30 @@ export class HomePage { ...@@ -45,6 +58,30 @@ export class HomePage {
window.addEventListener('resize', () => this.map.getViewPort().resize()); window.addEventListener('resize', () => this.map.getViewPort().resize());
} }
getBikesList() {
this.geolocation.getCurrentPosition(
{
maximumAge: 1000, timeout: 5000,
enableHighAccuracy: true
}
).then((resp) => {
this.currentLocation.lat = resp.coords.latitude;
this.currentLocation.lng = resp.coords.longitude;
let url = 'http://193.196.52.237:8081/admin/bikes' + '?lat=' + this.currentLocation.lat + '&lng=' + this.currentLocation.lng;
const headers = new HttpHeaders().set("Authorization", "Bearer " + this.restService.getToken());
this.bikeApi = this.httpClient.get(url, {headers});
this.bikeApi
.subscribe((resp) => {
console.log('my data: ', resp);
this.bikes = resp.data;
}, (error) => console.log(error));
}, er => {
alert('Can not retrieve Location')
}).catch((error) => {
alert('Error getting location - ' + JSON.stringify(error))
});
}
loadmap(style) { loadmap(style) {
// Obtain the default map types from the platform object // Obtain the default map types from the platform object
var mapStyle = "raster"; var mapStyle = "raster";
...@@ -91,8 +128,8 @@ export class HomePage { ...@@ -91,8 +128,8 @@ export class HomePage {
mapSettings.setAlignment('top-right'); mapSettings.setAlignment('top-right');
zoom.setAlignment('left-top'); zoom.setAlignment('left-top');
if(style === "3D") { if (style === "3D") {
this.map.getViewModel().setLookAtData({tilt: 60}); this.map.getViewModel().setLookAtData({ tilt: 60 });
} }
this.getLocation(this.map); this.getLocation(this.map);
var img = ['../../../assets/images/ic_high.png', '../../../assets/images/ic_medium.png', '../../../assets/images/ic_low.png']; var img = ['../../../assets/images/ic_high.png', '../../../assets/images/ic_medium.png', '../../../assets/images/ic_low.png'];
......
import { TestBed } from '@angular/core/testing';
import { RestService } from './rest.service';
describe('RestService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: RestService = TestBed.get(RestService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class RestService {
token: String;
constructor() { }
setToken(token) {
this.token = token;
}
getToken() {
return this.token;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment