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();
    }
  }

}