import {Component, Input, OnDestroy, OnInit} from '@angular/core'; import {Product, ProductVersion} from "../../../../model/product"; import {Subscription} from "rxjs"; import {AlertService} from "../../../../services/alert.service"; import {ProductsService} from "../../../../services/products.service"; import {faCaretDown, faCaretUp} from "@fortawesome/free-solid-svg-icons"; @Component({ selector: 'app-jobspec-target', templateUrl: './jobspec-target.component.html', styleUrls: ['./jobspec-target.component.scss'] }) export class JobspecTargetComponent implements OnInit, OnDestroy { @Input() target: ProductVersion; @Input() inputs: Array<ProductVersion>; public showDetails = false; public product$: Subscription; public product: Product; public faCaretDown = faCaretDown; public faCaretUp = faCaretUp; constructor(private productService: ProductsService, private alertService: AlertService) { } ngOnInit() { } toggleDetails(productId: number): void { if (this.showDetails) { this.showDetails = false; } else { this.getProduct(productId); } } getProduct(productId: number): void { this.showDetails = true; this.product$ = this.productService.getProductById(String(productId)).subscribe((p: Product) => { if (p) { this.product = p; } else { this.alertService.error('Product could not be retrieved'); } }); } getProductNameTypeFromId(id: number): string { return Product.getTypeNameFromId(id); } ngOnDestroy(): void { if (this.product$) { this.product$.unsubscribe(); } } }