annotate src/app/visualisations/grid/grid.component.ts @ 509:041468f553e1 tip master

Merge pull request #57 from LucasThompson/fix/session-stack-max-call-stack Fix accidental recursion in PersistentStack
author Lucas Thompson <LucasThompson@users.noreply.github.com>
date Mon, 27 Nov 2017 11:04:30 +0000
parents ab43880f1cd5
children
rev   line source
dev@382 1 /**
dev@382 2 * Created by lucast on 31/05/2017.
dev@382 3 */
cannam@471 4 import {
cannam@473 5 VerticallyBinnedWavesComponent,
dev@489 6 WavesComponent,
dev@489 7 PlayheadRenderer,
dev@489 8 VerticallyLabelled,
dev@489 9 VerticalScaleRenderer
cannam@471 10 } from '../waves-base.component';
dev@382 11 import {
dev@382 12 ChangeDetectionStrategy,
dev@382 13 Component,
dev@382 14 Input,
dev@382 15 } from '@angular/core';
dev@382 16 import Waves from 'waves-ui-piper';
dev@477 17 import {Grid} from '../FeatureUtilities';
dev@382 18 import {iceMapper} from '../../spectrogram/ColourMap';
dev@382 19 import {estimatePercentile} from '../../spectrogram/MatrixUtils';
dev@382 20
dev@382 21 @Component({
dev@382 22 selector: 'ugly-grid',
dev@382 23 templateUrl: '../waves-template.html',
dev@382 24 styleUrls: ['../waves-template.css'],
dev@405 25 changeDetection: ChangeDetectionStrategy.OnPush,
dev@405 26 providers: [
dev@489 27 {provide: VerticallyLabelled, useExisting: GridComponent },
dev@488 28 {provide: VerticalScaleRenderer, useExisting: GridComponent},
dev@488 29 {provide: PlayheadRenderer, useExisting: GridComponent },
dev@405 30 {provide: WavesComponent, useExisting: GridComponent}
dev@405 31 ]
dev@382 32 })
dev@383 33
dev@477 34 export class GridComponent extends VerticallyBinnedWavesComponent<Grid> {
cannam@472 35
dev@477 36 @Input() set grid(grid: Grid) {
dev@383 37 this.feature = grid;
dev@382 38 }
dev@382 39
dev@383 40 protected get featureLayers(): Layer[] {
cannam@471 41 const startTime = this.feature.startTime;
dev@383 42 const stepDuration = this.feature.stepDuration;
dev@383 43 const matrixData = this.feature.data;
dev@382 44
dev@382 45 if (matrixData.length === 0) {
dev@383 46 return [];
dev@382 47 }
dev@382 48
dev@382 49 const targetValue = estimatePercentile(matrixData, 95);
dev@382 50 const gain = (targetValue > 0.0 ? (1.0 / targetValue) : 1.0);
dev@382 51 const matrixEntity = new Waves.utils.PrefilledMatrixEntity(
dev@382 52 matrixData,
cannam@471 53 startTime,
dev@382 54 stepDuration
dev@382 55 );
dev@382 56
dev@383 57 return [
dev@382 58 new Waves.helpers.MatrixLayer(
dev@382 59 matrixEntity,
dev@382 60 {
dev@382 61 gain: gain,
dev@382 62 height: this.height,
dev@382 63 normalise: 'none',
dev@382 64 mapper: iceMapper()
dev@382 65 }
dev@383 66 )
dev@383 67 ];
dev@382 68 }
dev@477 69
dev@489 70 get labels(): string[] {
cannam@474 71 if (!this.feature.binNames || this.feature.binNames.length === 0) {
cannam@474 72 const binCount = (this.feature.data.length > 0 ?
cannam@474 73 this.feature.data[0].length : 0);
cannam@474 74 for (let i = 0; i < binCount; ++i) {
dev@477 75 this.feature.binNames.push(`${i + 1}`);
cannam@474 76 }
cannam@474 77 }
cannam@473 78 return this.feature.binNames;
cannam@471 79 }
dev@382 80 }