forked from philorg/treetrail-frontend
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
|
import { Component, OnInit,
|
||
|
ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core'
|
||
|
import { Router, ActivatedRoute, ParamMap } from '@angular/router'
|
||
|
import { switchMap, map } from 'rxjs/operators'
|
||
|
|
||
|
import { DataService } from '../data.service'
|
||
|
import { All, Trail, Trails } from '../models'
|
||
|
|
||
|
@Component({
|
||
|
selector: 'app-trail-detail',
|
||
|
templateUrl: './trail-detail.component.html',
|
||
|
styleUrls: ['./trail-detail.component.scss'],
|
||
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||
|
})
|
||
|
export class TrailDetailComponent implements OnInit {
|
||
|
trail: Trail
|
||
|
|
||
|
constructor(
|
||
|
private route: ActivatedRoute,
|
||
|
public router: Router,
|
||
|
public dataService: DataService,
|
||
|
public cdr: ChangeDetectorRef,
|
||
|
) { }
|
||
|
|
||
|
ngOnInit(): void {
|
||
|
this.route.paramMap.pipe(
|
||
|
switchMap((params: ParamMap) =>
|
||
|
this.dataService.all.pipe(map(
|
||
|
(all: All) => all.trails[params.get('id')]
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
).subscribe(
|
||
|
trail => {
|
||
|
this.trail = trail
|
||
|
this.cdr.markForCheck()
|
||
|
}
|
||
|
)
|
||
|
}
|
||
|
|
||
|
showOnMap() {
|
||
|
this.router.navigate(['map'], this.trail.mapRouteArgs)
|
||
|
}
|
||
|
}
|