dev@48
|
1 import {Component, OnInit, Output, EventEmitter, Input} from '@angular/core';
|
dev@44
|
2 import {FeatureExtractionService} from "../services/feature-extraction/feature-extraction.service";
|
dev@44
|
3
|
dev@47
|
4 export interface ExtractorOutputInfo {
|
dev@47
|
5 extractorKey: string;
|
dev@47
|
6 combinedKey: string;
|
dev@47
|
7 outputId: string;
|
dev@44
|
8 name: string;
|
dev@44
|
9 }
|
dev@44
|
10
|
dev@44
|
11 @Component({
|
dev@44
|
12 selector: 'app-feature-extraction-menu',
|
dev@44
|
13 templateUrl: './feature-extraction-menu.component.html',
|
dev@44
|
14 styleUrls: ['./feature-extraction-menu.component.css']
|
dev@44
|
15 })
|
dev@44
|
16 export class FeatureExtractionMenuComponent implements OnInit {
|
dev@44
|
17
|
dev@48
|
18 @Input()
|
dev@48
|
19 set disabled(isDisabled: boolean) {
|
dev@48
|
20 this.isDisabled = isDisabled;
|
dev@48
|
21 }
|
dev@48
|
22
|
dev@48
|
23 get disabled() {
|
dev@48
|
24 return this.isDisabled;
|
dev@48
|
25 }
|
dev@48
|
26
|
dev@47
|
27 @Output() requestOutput: EventEmitter<ExtractorOutputInfo>;
|
dev@47
|
28
|
dev@48
|
29 private isDisabled: boolean;
|
dev@47
|
30 private extractorsMap: Map<string, ExtractorOutputInfo>;
|
dev@47
|
31 extractors: Iterable<ExtractorOutputInfo>;
|
dev@44
|
32
|
dev@44
|
33 constructor(private piperService: FeatureExtractionService) {
|
dev@47
|
34 this.extractorsMap = new Map();
|
dev@44
|
35 this.extractors = [];
|
dev@47
|
36 this.requestOutput = new EventEmitter();
|
dev@48
|
37 this.isDisabled = true;
|
dev@44
|
38 }
|
dev@44
|
39
|
dev@44
|
40 ngOnInit() {
|
dev@44
|
41 this.piperService.list().then(available => {
|
dev@46
|
42 const maxCharacterLimit = 50;
|
dev@46
|
43 available.available.forEach(staticData => {
|
dev@47
|
44 const isSingleOutputExtractor = staticData.basicOutputInfo.length === 1;
|
dev@47
|
45 staticData.basicOutputInfo.forEach(output => {
|
dev@47
|
46 const combinedKey = `${staticData.key}:${output.identifier}`;
|
dev@47
|
47 this.extractorsMap.set(combinedKey, {
|
dev@47
|
48 extractorKey: staticData.key,
|
dev@47
|
49 combinedKey: combinedKey,
|
dev@47
|
50 name: (
|
dev@47
|
51 isSingleOutputExtractor
|
dev@47
|
52 ? staticData.basic.name
|
dev@47
|
53 : `${staticData.basic.name}: ${output.name}`
|
dev@47
|
54 ).substr(0, maxCharacterLimit) + '...',
|
dev@47
|
55 outputId: output.identifier
|
dev@46
|
56 });
|
dev@47
|
57 });
|
dev@46
|
58 });
|
dev@47
|
59 this.extractors = [...this.extractorsMap.values()];
|
dev@44
|
60 });
|
dev@44
|
61 }
|
dev@44
|
62
|
dev@47
|
63 extract(combinedKey: string): void {
|
dev@47
|
64 this.requestOutput.emit(this.extractorsMap.get(combinedKey));
|
dev@47
|
65 }
|
dev@47
|
66
|
dev@44
|
67 }
|