annotate src/app/feature-extraction-menu/feature-extraction-menu.component.ts @ 48:af0b4b05311c

Guard against extraction when no audio is loaded.
author Lucas Thompson <dev@lucas.im>
date Tue, 06 Dec 2016 11:03:38 +0000
parents 933c64ebcd13
children 8619f25ff52a
rev   line source
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 }