diff src/app/services/feature-extraction/feature-extraction.service.ts @ 350:524f5cd75737

Split AnalysisItem out into individual types for root audio items and features. This is messy as is, these need revising and should perhaps be actual concrete types with methods.
author Lucas Thompson <dev@lucas.im>
date Fri, 26 May 2017 12:59:41 +0100
parents bf038a51f7e3
children 3eab26a629e1
line wrap: on
line diff
--- a/src/app/services/feature-extraction/feature-extraction.service.ts	Thu May 25 17:57:03 2017 +0100
+++ b/src/app/services/feature-extraction/feature-extraction.service.ts	Fri May 26 12:59:41 2017 +0100
@@ -3,8 +3,7 @@
   ListResponse
 } from 'piper';
 import {
-  SimpleRequest,
-  SimpleResponse
+  SimpleRequest
 } from 'piper/HigherLevelUtilities';
 import {Subject} from 'rxjs/Subject';
 import {Observable} from 'rxjs/Observable';
@@ -30,12 +29,17 @@
   value: number; // between 0 and 100, for material-ui
 }
 
+export interface ExtractionResult {
+  id: RequestId;
+  result: KnownShapedFeature;
+}
+
 @Injectable()
 export class FeatureExtractionService {
 
   private worker: Worker;
-  private featuresExtracted: Subject<KnownShapedFeature>;
-  featuresExtracted$: Observable<KnownShapedFeature>;
+  private featuresExtracted: Subject<ExtractionResult>;
+  featuresExtracted$: Observable<ExtractionResult>;
   private librariesUpdated: Subject<ListResponse>;
   librariesUpdated$: Observable<ListResponse>;
   private progressUpdated: Subject<Progress>;
@@ -45,7 +49,7 @@
   constructor(private http: Http,
               @Inject('PiperRepoUri') private repositoryUri: RepoUri) {
     this.worker = new Worker('bootstrap-feature-extraction-worker.js');
-    this.featuresExtracted = new Subject<KnownShapedFeature>();
+    this.featuresExtracted = new Subject<ExtractionResult>();
     this.featuresExtracted$ = this.featuresExtracted.asObservable();
     this.librariesUpdated = new Subject<ListResponse>();
     this.librariesUpdated$ = this.librariesUpdated.asObservable();
@@ -70,7 +74,8 @@
     return this.client.list({});
   }
 
-  extract(analysisItemId: string, request: SimpleRequest): Promise<void> {
+  extract(analysisItemId: string,
+          request: SimpleRequest): Promise<ExtractionResult> {
     let config: StreamingConfiguration;
     return collect(this.client.process(request), val => {
       if (val.configuration) {
@@ -88,8 +93,12 @@
         features: features,
         outputDescriptor: config.outputDescriptor
       });
-      console.warn(shaped.shape);
-      this.featuresExtracted.next(shaped);
+      const result = {
+        id: analysisItemId,
+        result: shaped
+      };
+      this.featuresExtracted.next(result);
+      return result;
     });
   }