[SI-376]: total commit (with unit tests)

Signed-off-by: Dennis Schmitt <dennis.schmitt@pta.de>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html
index 006a3c1..fe4874f 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.html
@@ -106,7 +106,10 @@
     </div>
 
     <ng-template #map>
-      <openk-grid-failure-information-map [mapData]="sandbox.gridFailureList$ | async"></openk-grid-failure-information-map>
+      <openk-grid-failure-information-map
+        [mapData]="sandbox.gridFailureList$ | async"
+        (gridFailureId)="navigateToDetails($event)"
+      ></openk-grid-failure-information-map>
     </ng-template>
     <app-spinner [isRunning]="sandbox.gridFailureListLoading$ | async"></app-spinner>
   </div>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
index 6ef4d4f..3ca4491 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
@@ -185,4 +185,10 @@
     component.changeFilter(false, RolesEnum.QUALIFIER);
     expect(spy).toHaveBeenCalled();
   });
+
+  it('should navigate to detail when navigateToDetail-function was called', () => {
+    const spy: any = spyOn(router, 'navigate');
+    component.navigateToDetails('test');
+    expect(spy).toHaveBeenCalledWith(['/grid-failures', 'test']);
+  });
 });
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
index 75be6a5..b349bd7 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
@@ -141,6 +141,10 @@
     this._changeMode();
   }
 
+  public navigateToDetails(id: string) {
+    this._router.navigate(['/grid-failures', id]);
+  }
+
   private _setInitialGridOptions(): void {
     this.gridOptions.context.eventSubject.pipe(takeUntil(this._endSubscriptions$)).subscribe(event => {
       switch (event.type) {
diff --git a/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.spec.ts b/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.spec.ts
index a862a64..0631b88 100644
--- a/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.spec.ts
+++ b/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.spec.ts
@@ -30,11 +30,15 @@
     const radius: any = 100;
     const marker: any = {};
     component.mapData = [{ latitude: latitude, longitude: longitude, radius: radius }];
-    let spyMap: any = spyOn(L, 'map').and.returnValue({ remove() {} });
+    let spyMap: any = spyOn(L, 'map').and.returnValue({ remove() {}, on() {} });
     let spyTileLayer: any = spyOn(L, 'tileLayer').and.returnValue({ addTo() {} });
     let spyMarker: any = spyOn(L, 'marker').and.returnValue({
       addTo() {
-        return { bindTooltip: () => {} };
+        return {
+          on: () => {
+            return { bindTooltip: () => {} };
+          },
+        };
       },
     });
     let spyCircle: any = spyOn(L, 'circle').and.returnValue({ addTo() {} });
diff --git a/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.ts b/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.ts
index fc63408..24470ff 100644
--- a/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.ts
+++ b/projects/openk/grid-failure-information-map/src/lib/grid-failure-information-map.component.ts
@@ -10,7 +10,7 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
-import { Component, AfterViewInit, Input } from '@angular/core';
+import { Component, AfterViewInit, Input, Output, EventEmitter } from '@angular/core';
 import * as L from 'leaflet';
 import { Globals } from '@openk-libs/grid-failure-information-map/constants/globals';
 import { GridFailureMapInformation } from '@openk-libs/grid-failure-information-map/shared/models/grid-failure-coordinates.model';
@@ -27,6 +27,8 @@
   private _mapData: Array<GridFailureMapInformation> = [];
   private _mapDetailData: GridFailureMapInformation;
 
+  @Output() gridFailureId: EventEmitter<string> = new EventEmitter();
+
   @Input()
   public set mapData(data: Array<any>) {
     data.forEach(gridFailureData => {
@@ -83,7 +85,9 @@
     if (!!this._map && !!this._mapData) {
       this._mapData.forEach(gridFailure => {
         if (gridFailure.latitude && gridFailure.longitude) {
-          const currentMarker = L.marker([gridFailure.latitude, gridFailure.longitude], { icon: this._icon }).addTo(this._map);
+          const currentMarker = L.marker([gridFailure.latitude, gridFailure.longitude], { icon: this._icon })
+            .addTo(this._map)
+            .on('click', () => this.gridFailureId.emit(gridFailure.id));
           currentMarker.bindTooltip(
             `${Globals.STRONG_BEGIN_TAG}${Globals.GRID_FAILURE_BEGIN}${Globals.STRONG_END_TAG} ${convertISOToLocalDateTime(gridFailure.failureBegin)}${
               Globals.BREAK_TAG