import { Component, OnInit } from '@angular/core'; import {CacheService} from '../cache.service'; import {element} from 'protractor'; @Component({ selector: 'app-table-overview', templateUrl: './table-overview.component.html', styleUrls: ['./table-overview.component.css'] }) export class TableOverviewComponent implements OnInit { public subplots; public averages; constructor(private service: CacheService) { } ngOnInit(): void { this.service.onNewTables.subscribe(() => this.createPlots()); this.service.onNewSimilarity.subscribe(() => this.createPlots()); } averagePlot(average): object { return { data: [ { x: [...Array(average.average.length).keys()], y: average.average, type: 'line', }, { x: [...Array(average.average.length).keys()], y: average.max, type: 'scatter', fill: null, mode: 'lines', line: { color: 'rgb(55, 128, 191)', width: 3 } }, { x: [...Array(average.average.length).keys()], y: average.min, type: 'scatter', fill: 'tonexty', mode: 'lines', line: { color: 'rgb(55, 128, 191)', width: 3 } } ], layout: { showlegend: false, hovermode: 'closest', autosize: true, margin: { l: 10, r: 10, t: 10, b: 10, pad: 4 }, xaxis: { showticklabels: false }, yaxis: { showticklabels: false }, height: 100, width: screen.width * 0.1, } }; } async createPlots() { this.subplots = []; this.averages = []; const table = this.service.tables; this.subplots.push( { data: [{ x: Object.keys(table), y: Object.values(table).map((values: number[]) => values.length), // / (this.service.rawValues.length - this.service.windowSize)), type: 'bar' }], layout: { hovermode: 'closest', autosize: true, margin: { l: 10, r: 10, t: 10, b: 10, pad: 4 }, xaxis: { showticklabels: false }, yaxis: { showticklabels: false }, height: 100, width: screen.width * 0.1, } } ); if (this.service.queryWindow) { const temp = (await this.service.getAverageWindows(Object.values(table))).averages; this.averages = temp.map(x => this.averagePlot(x)); } } async setQuery(data) { this.service.queryWindow = await this.service.getQueryWindow(data[0].y); await this.service.update(); } public get tables() { return this.service.tables; } public get visible() { return !this.service.querySelectionMode; } }