Add CSV prediction export
This commit is contained in:
		@@ -4,20 +4,20 @@ import { ChartsModule } from 'ng2-charts';
 | 
			
		||||
 | 
			
		||||
import { AppRoutingModule } from './app-routing.module';
 | 
			
		||||
import { AppComponent } from './app.component';
 | 
			
		||||
import {FormFieldsModule, ModalService, RbUiComponentsModule} from '@inst-iot/bosch-angular-ui-components';
 | 
			
		||||
import {LoginComponent} from './login/login.component';
 | 
			
		||||
import { FormFieldsModule, ModalService, RbUiComponentsModule } from '@inst-iot/bosch-angular-ui-components';
 | 
			
		||||
import { LoginComponent } from './login/login.component';
 | 
			
		||||
import { HomeComponent } from './home/home.component';
 | 
			
		||||
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
 | 
			
		||||
import {LocalStorageModule} from 'angular-2-local-storage';
 | 
			
		||||
import {HttpClientModule} from '@angular/common/http';
 | 
			
		||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 | 
			
		||||
import { LocalStorageModule } from 'angular-2-local-storage';
 | 
			
		||||
import { HttpClientModule } from '@angular/common/http';
 | 
			
		||||
import { SamplesComponent } from './samples/samples.component';
 | 
			
		||||
import {RbCustomInputsModule} from './rb-custom-inputs/rb-custom-inputs.module';
 | 
			
		||||
import { RbCustomInputsModule } from './rb-custom-inputs/rb-custom-inputs.module';
 | 
			
		||||
import { SampleComponent } from './sample/sample.component';
 | 
			
		||||
import { ValidateDirective } from './validate.directive';
 | 
			
		||||
import {CommonModule} from '@angular/common';
 | 
			
		||||
import { CommonModule } from '@angular/common';
 | 
			
		||||
import { ErrorComponent } from './error/error.component';
 | 
			
		||||
import { ObjectPipe } from './object.pipe';
 | 
			
		||||
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
 | 
			
		||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 | 
			
		||||
import { DocumentationComponent } from './documentation/documentation.component';
 | 
			
		||||
import { ImgMagnifierComponent } from './img-magnifier/img-magnifier.component';
 | 
			
		||||
import { ExistsPipe } from './exists.pipe';
 | 
			
		||||
 
 | 
			
		||||
@@ -60,6 +60,10 @@
 | 
			
		||||
    <rb-form-radio name="multiple-samples" label="Multiple samples" [(ngModel)]="multipleSamples" [value]="true">
 | 
			
		||||
    </rb-form-radio>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <rb-icon-button icon="forward-right" mode="primary" (click)="exportCSV()" *ngIf="spectrumNames.length">
 | 
			
		||||
    Export to CSV
 | 
			
		||||
  </rb-icon-button>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="dpt-chart space-below">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,12 @@
 | 
			
		||||
import { Component, OnInit } from '@angular/core';
 | 
			
		||||
import {ChartOptions} from 'chart.js';
 | 
			
		||||
import {ApiService} from '../services/api.service';
 | 
			
		||||
import {animate, style, transition, trigger} from '@angular/animations';
 | 
			
		||||
import { ChartOptions } from 'chart.js';
 | 
			
		||||
import { ApiService } from '../services/api.service';
 | 
			
		||||
import { animate, style, transition, trigger } from '@angular/animations';
 | 
			
		||||
import cloneDeep from 'lodash/cloneDeep';
 | 
			
		||||
import omit from 'lodash/omit';
 | 
			
		||||
import {DataService} from '../services/data.service';
 | 
			
		||||
import {ModelItemModel} from '../models/model-item.model';
 | 
			
		||||
import { DataService } from '../services/data.service';
 | 
			
		||||
import { ModelItemModel } from '../models/model-item.model';
 | 
			
		||||
import * as FileSaver from 'file-saver'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
@@ -29,7 +30,7 @@ import {ModelItemModel} from '../models/model-item.model';
 | 
			
		||||
})
 | 
			
		||||
export class PredictionComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
  result: {predictions: any[], mean: any[]};  // prediction result from python container
 | 
			
		||||
  result: { predictions: any[], mean: any[] };  // prediction result from python container
 | 
			
		||||
  loading = false;
 | 
			
		||||
  activeGroup: ModelItemModel = new ModelItemModel();
 | 
			
		||||
  activeModelIndex = 0;
 | 
			
		||||
@@ -121,7 +122,10 @@ export class PredictionComponent implements OnInit {
 | 
			
		||||
    this.result = undefined;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  clip(str) {  // clip spaces at start and end
 | 
			
		||||
    return str.replace(/^\s*(.*?)\s*$/, '$1');
 | 
			
		||||
  exportCSV() {
 | 
			
		||||
    const zip = (a, b) => a.map((k, i) => [k, b[i]]); 
 | 
			
		||||
    const predictions = zip(this.spectrumNames, this.result.predictions.map(p => p[0].value));
 | 
			
		||||
    const csv = predictions.map(line => line.join(";")).join("\n");
 | 
			
		||||
    FileSaver.saveAs(new Blob([csv], { type: 'text/csv;charset=utf-8' }), "predictions.csv");
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user