import { Component, Input, EventEmitter, Output, ViewChild, OnChanges, SimpleChanges } from '@angular/core'; import { Observable, of } from 'rxjs'; import { Store } from '@ngrx/store'; import { catchError, map, tap, take } from 'rxjs/operators'; import { Target } from '@overflow/commons-typescript/model/target'; import { TargetService } from '../service/target.service'; import { Paginator } from 'primeng/primeng'; import {PlatformLocation} from '@angular/common'; @Component({ selector: 'of-target-list', templateUrl: './target-list.component.html', }) export class TargetListComponent implements OnChanges { @Input() probeID; @Input() pageIdx; @Output() pageChange = new EventEmitter(); @Output() targetSelect = new EventEmitter(); @ViewChild('paginator') paginator: Paginator; targetList: Target[]; pending$: Observable; error$: Observable; // countPerPage: number; constructor( private store: Store, private targetService: TargetService, private location: PlatformLocation ) { // this.countPerPage = 2; } ngOnChanges(changes: SimpleChanges): void { // console.log(changes); if (changes['pageIdx']) { // console.log(this.pageIdx); this.getTargetList(); // const p: number = this.pageIdx - 1; // this.paginator.changePage(this.pageIdx); } } private getTargetList() { // if (this.pageIdx <= 0 || this.pageIdx === undefined || this.pageIdx === null || isNaN(this.pageIdx)) { // this.pageIdx = 1; // } const p: number = this.pageIdx - 1; // const pageParams: PageParams = { // pageNo: p, // countPerPage: this.countPerPage, // sortCol: 'id', // sortDirection: 'descending', // }; // this.targetService.readAllByProbeID(this.probeID, pageParams) this.targetService.readAllByProbeID(this.probeID) .pipe( tap(() => { this.pending$ = of(true); }), map((targetList: Target[]) => { this.targetList = targetList; }), catchError(err => { console.log(err); return err; }), tap(() => { this.pending$ = of(false); }), take(1), ).subscribe(); } onRowSelect(event) { this.targetSelect.emit(event.data); } onAddSensor(target: Target) { // this.target = target; // this.sensorSettingDisplay = true; } onPaginate(e) { // e.changePage(); this.pageChange.emit(Number(e.page)); } }