import { Component, OnInit, Inject, AfterContentInit, OnDestroy, Input } from '@angular/core'; import { Store, select } from '@ngrx/store'; import { Observable, of, Subscription } from 'rxjs'; import { catchError, exhaustMap, map, tap, take } from 'rxjs/operators'; import { ConfirmationService } from 'primeng/primeng'; import { RPCClientError } from '@loafer/ng-rpc'; import { Sensor } from '@overflow/commons-typescript/model/sensor'; import { SensorService } from '../service/sensor.service'; @Component({ selector: 'of-sensor-detail', templateUrl: './sensor-detail.component.html', providers: [ConfirmationService] }) export class SensorDetailComponent implements OnInit, OnDestroy { @Input() sensorID: number; sensor: Sensor; sensorSettingDisplay: boolean; pending$: Observable; error$: Observable; constructor( private confirmationService: ConfirmationService, private store: Store, private sensorService: SensorService, ) { this.sensorSettingDisplay = false; } ngOnInit() { this.sensorService.read(this.sensorID) .pipe( tap(() => { this.pending$ = of(true); }), map((sensor: Sensor) => { this.sensor = sensor; }), catchError(error => { this.error$ = of(error); return of(); }), tap(() => { this.pending$ = of(false); }), take(1), ).subscribe(); } ngOnDestroy() { } onStartOrStop() { } onEdit() { this.sensorSettingDisplay = true; } onRemove() { this.confirmationService.confirm({ header: 'Are you sure to remove this Sensor?', icon: 'fa fa-trash', message: 'All the related data will be deleted. ', accept: () => { alert('으앙 안돼 지우지마ㅠㅠ'); }, reject: () => { } }); } onTargetClick(target) { // this.router.navigate(['sensors'], { queryParams: { target: target.id } }); // this.router.navigate(['target', target.id, 'info']); } }