import {Component} from '@angular/core'; import {ElementRef, Input} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; import {EnvProperties} from '../../../utils/properties/env-properties'; import {ResultLandingInfo} from '../../../utils/entities/resultLandingInfo'; import {RouterHelper} from '../../../utils/routerHelper.class'; import {ErrorCodes} from '../../../utils/properties/errorCodes'; import {DeletedByInferenceService} from './deletedByInference.service'; import {ResultPreview} from "../../../utils/result-preview/result-preview"; import {AlertModal} from "../../../utils/modal/alert"; import {Subscriber} from "rxjs"; @Component({ selector: 'deletedByInference', template: ` ` }) export class DeletedByInferenceComponent { public results: ResultLandingInfo[] = []; @Input() id: string; @Input() ids: string[] = []; @Input() type: string; @Input() resultType: string; @Input() modal: AlertModal; // Custom tab paging variables public page: number = 1; public pageSize: number = 5; public status: number; public routerHelper: RouterHelper = new RouterHelper(); public errorCodes: ErrorCodes = new ErrorCodes(); subscriptions = []; properties: EnvProperties; constructor(private element: ElementRef, private _deletedByInferenceService: DeletedByInferenceService, private route: ActivatedRoute, private _router: Router) { } ngOnInit() { this.subscriptions.push(this.route.data .subscribe((data: { envSpecific: EnvProperties }) => { this.properties = data.envSpecific; })); this.subscriptions.push(this.route.queryParams.subscribe(data => { this.errorCodes = new ErrorCodes(); this.status = this.errorCodes.LOADING; this.getDeletedByInference(); })); } ngOnDestroy() { this.subscriptions.forEach(subscription => { if (subscription instanceof Subscriber) { subscription.unsubscribe(); } }); } getDeletedByInference() { this.results = []; this.status = this.errorCodes.LOADING; this.subscriptions.push(this._deletedByInferenceService.getDeletedByInferenceResults(this.id, String(this.ids.length), this.properties).subscribe( data => { this.results = data; this.status = this.errorCodes.DONE; }, error => { if (error.status == '404') { this.status = this.errorCodes.NOT_FOUND; } else if (error.status == '500') { this.status = this.errorCodes.ERROR; } else { this.status = this.errorCodes.NOT_AVAILABLE; } } )); } public getResultPreview(result: ResultLandingInfo): ResultPreview { return ResultPreview.resultLandingInfoConvert(result, this.resultType); } public totalPages(totalResults: number): number { let totalPages: any = totalResults / this.pageSize; if (!(Number.isInteger(totalPages))) { totalPages = (parseInt(totalPages, this.pageSize) + 1); } return totalPages; } public updatePage($event) { this.page = $event.value; } }