From e5c227073a183a1c562e17f3fe14a51048d01637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jovan=20Kruni=C4=87?= Date: Wed, 15 Sep 2021 16:01:12 +0200 Subject: [PATCH] fix: detail page when dish of mensa selected Closes #140 --- .../mensa/place-mensa-detail.component.ts | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts b/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts index 85d4d371..99bd3ea5 100644 --- a/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts +++ b/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts @@ -15,10 +15,13 @@ import moment, {Moment} from 'moment'; -import {AfterViewInit, Component, Input} from '@angular/core'; +import {AfterViewInit, Component, Input, OnDestroy} from '@angular/core'; import {SCDish, SCISO8601Date, SCPlace} from '@openstapps/core'; import {keys} from 'lodash-es'; import {PlaceMensaService} from './place-mensa-service'; +import {DataRoutingService} from '../../../../data-routing.service'; +import {Router} from '@angular/router'; +import {Subscription} from 'rxjs'; /** * TODO @@ -29,7 +32,7 @@ import {PlaceMensaService} from './place-mensa-service'; templateUrl: 'place-mensa.html', styleUrls: ['place-mensa.scss'], }) -export class PlaceMensaDetailComponent implements AfterViewInit { +export class PlaceMensaDetailComponent implements AfterViewInit, OnDestroy { /** * Map of dishes for each day */ @@ -56,7 +59,16 @@ export class PlaceMensaDetailComponent implements AfterViewInit { */ startingDay: Moment; - constructor(private readonly mensaService: PlaceMensaService) { + /** + * Array of all subscriptions to Observables + */ + subscriptions: Subscription[] = []; + + constructor( + private readonly mensaService: PlaceMensaService, + protected router: Router, + private readonly dataRoutingService: DataRoutingService, + ) { this.startingDay = moment().startOf('day'); } @@ -73,5 +85,19 @@ export class PlaceMensaDetailComponent implements AfterViewInit { } this.selectedDay = keys(result)[0]; }); + this.subscriptions.push( + this.dataRoutingService.itemSelectListener().subscribe(item => { + void this.router.navigate(['data-detail', item.uid]); + }), + ); + } + + /** + * Remove subscriptions when the component is removed + */ + ngOnDestroy() { + for (const sub of this.subscriptions) { + sub.unsubscribe(); + } } }