diff --git a/components/control_center/src/app/component/landing/landing.component.html b/components/control_center/src/app/component/landing/landing.component.html index 7a44825..0d3266e 100644 --- a/components/control_center/src/app/component/landing/landing.component.html +++ b/components/control_center/src/app/component/landing/landing.component.html @@ -1,16 +1,16 @@ - - -

VIN: {{m.value.vin}}

-

OEM: {{m.value.oem}}

-

Model Type: {{m.value.modelType}}

-

Velocity: {{m.value.velocity}}

-

Timestamp: {{m.value.timestamp}}

-

NCE: {{m.value.near_crash_event}}

+ + +

VIN: {{m.value.carEntity.vin}}

+

OEM: {{m.value.carEntity.oem}}

+

Model Type: {{m.value.carEntity.modelType}}

+

Velocity: {{m.value.carEvent.velocity}}

+

Timestamp: {{m.value.carEvent.timestamp}}

+

NCE: {{m.value.carEvent.near_crash_event}}

this.restService.getCarEvents(vin)) ).subscribe((data: any) => { - const carEvent = data.body['cursor']; - const car = this.car_markers.get(vin); - car['velocity'] = carEvent['velocity']; - car['timestamp'] = carEvent['timestamp']; - car['near_crash_event'] = carEvent['near_crash_event']; - if (car['near_crash_event']) { - car['iconUrl'] = this.CAR_IMAGE_NCE; - this.playCrashSound(); - } else { - car['iconUrl'] = this.CAR_IMAGE; - } - car['lat'] = carEvent['gps_location']['latitude']; - car['lng'] = carEvent['gps_location']['longitude']; + const carEvent = data.body as CarEvent; + const car = this.car_markers.get(vin) as Car; + car.carEvent = carEvent; this.car_markers.set(car['vin'], car); }, err => this.logger.error(err), () => { - this.logger.debug('loaded traffic light events'); + this.logger.debug('loaded car events'); } ); } @@ -117,18 +107,22 @@ export class LandingComponent implements OnInit { getCars() { this.restService.getCars().subscribe( - (data: any) => { - for (const car of data['cursor']) { - car['iconUrl'] = 'assets/pictures/car.png'; - this.car_markers.set(car['vin'], car); + (data: CarEntity[]) => { + for (const carEntity of data) { + + const car: Car = { + carEntity: carEntity, + carEvent: this.getEmptyCarEvent() + }; + car.carEntity = carEntity; + this.car_markers.set(carEntity['vin'], car); } }, err => this.logger.error(err), () => { this.logger.debug('loaded cars'); - console.log(this.car_markers); for (const value of this.car_markers.values()) { - this.getCarEvents(value['vin']); + this.getCarEvents(value.carEntity['vin']); } } ); @@ -139,6 +133,15 @@ export class LandingComponent implements OnInit { return (trafficLight === 'RED') ? this.TL_RED_IMAGE : this.TL_GREEN_IMAGE; } + getIconUrlCar(near_crash_event) { + if (near_crash_event === true) { + this.playCrashSound(); + return this.CAR_IMAGE_NCE; + } else { + return this.CAR_IMAGE; + } + } + openInfoWindow(id) { this.infoWindows.set(id, true); } @@ -157,4 +160,19 @@ export class LandingComponent implements OnInit { audio.load(); audio.play(); } + + private getEmptyCarEvent() { + const geoCoordinates = { + latitude: 0, + longitude: 0 + }; + + const carEvent = { + near_crash_event: false, + gps_location: geoCoordinates, + timestamp: '' + }; + + return carEvent; + } } diff --git a/components/control_center/src/app/interfaces/interface.ts b/components/control_center/src/app/interfaces/interface.ts index 3332493..ffc761d 100644 --- a/components/control_center/src/app/interfaces/interface.ts +++ b/components/control_center/src/app/interfaces/interface.ts @@ -5,3 +5,25 @@ export interface WSEvents { error: Observable; close: Observable; } + +export interface GeoCoordinates { + latitude: Number; + longitude: Number; +} + +export interface CarEntity { + oem: String; + modelType: String; + vin: String; +} + +export interface CarEvent { + near_crash_event: Boolean; + gps_location: GeoCoordinates; + timestamp: String; +} + +export interface Car { + carEntity: CarEntity; + carEvent: CarEvent; +} diff --git a/components/x_way/x_way_server.py b/components/x_way/x_way_server.py index ee6582f..847bf79 100644 --- a/components/x_way/x_way_server.py +++ b/components/x_way/x_way_server.py @@ -24,7 +24,7 @@ def get_cars_events(): print("Is the EVENT_STORE_URL running and reachable?") raise e - return json_util.dumps({'cursor': cars}) + return json_util.dumps(cars) @app.route('/api/v1/resources/traffic_light_events', methods=['GET']) @@ -52,7 +52,7 @@ def get_cars(): print("Is the entity_ident_server running and reachable?") raise e - return json_util.dumps({'cursor': cars}) + return json_util.dumps(cars) @app.route('/api/v1/resources/traffic_lights', methods=['GET'])