dev@48: import {Component, OnInit, Output, EventEmitter, Input} from '@angular/core'; dev@44: import {FeatureExtractionService} from "../services/feature-extraction/feature-extraction.service"; dev@44: dev@47: export interface ExtractorOutputInfo { dev@47: extractorKey: string; dev@47: combinedKey: string; dev@47: outputId: string; dev@44: name: string; dev@44: } dev@44: dev@44: @Component({ dev@44: selector: 'app-feature-extraction-menu', dev@44: templateUrl: './feature-extraction-menu.component.html', dev@44: styleUrls: ['./feature-extraction-menu.component.css'] dev@44: }) dev@44: export class FeatureExtractionMenuComponent implements OnInit { dev@44: dev@48: @Input() dev@48: set disabled(isDisabled: boolean) { dev@48: this.isDisabled = isDisabled; dev@48: } dev@48: dev@48: get disabled() { dev@48: return this.isDisabled; dev@48: } dev@48: dev@47: @Output() requestOutput: EventEmitter; dev@47: dev@48: private isDisabled: boolean; dev@47: private extractorsMap: Map; dev@47: extractors: Iterable; dev@44: dev@44: constructor(private piperService: FeatureExtractionService) { dev@47: this.extractorsMap = new Map(); dev@44: this.extractors = []; dev@51: this.requestOutput = new EventEmitter(); dev@48: this.isDisabled = true; dev@44: } dev@44: dev@44: ngOnInit() { dev@44: this.piperService.list().then(available => { dev@46: const maxCharacterLimit = 50; dev@46: available.available.forEach(staticData => { dev@47: const isSingleOutputExtractor = staticData.basicOutputInfo.length === 1; dev@47: staticData.basicOutputInfo.forEach(output => { dev@47: const combinedKey = `${staticData.key}:${output.identifier}`; dev@47: this.extractorsMap.set(combinedKey, { dev@47: extractorKey: staticData.key, dev@47: combinedKey: combinedKey, dev@47: name: ( dev@47: isSingleOutputExtractor dev@47: ? staticData.basic.name dev@47: : `${staticData.basic.name}: ${output.name}` dev@47: ).substr(0, maxCharacterLimit) + '...', dev@47: outputId: output.identifier dev@46: }); dev@47: }); dev@46: }); dev@47: this.extractors = [...this.extractorsMap.values()]; dev@44: }); dev@44: } dev@44: dev@47: extract(combinedKey: string): void { dev@47: this.requestOutput.emit(this.extractorsMap.get(combinedKey)); dev@47: } dev@47: dev@44: }