dev@382
|
1 /**
|
dev@382
|
2 * Created by lucast on 31/05/2017.
|
dev@382
|
3 */
|
cannam@471
|
4 import {
|
cannam@473
|
5 VerticallyBinned,
|
cannam@473
|
6 VerticallyBinnedWavesComponent,
|
cannam@473
|
7 VerticalBinNameRenderer,
|
cannam@471
|
8 VerticalValueInspectorRenderer,
|
cannam@471
|
9 WavesComponent
|
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';
|
cannam@472
|
17 import {AugmentedMatrixFeature} 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: [
|
cannam@473
|
27 {provide: VerticallyBinned, useExisting: GridComponent },
|
cannam@473
|
28 {provide: VerticalBinNameRenderer, useExisting: GridComponent },
|
dev@405
|
29 {provide: WavesComponent, useExisting: GridComponent}
|
dev@405
|
30 ]
|
dev@382
|
31 })
|
dev@383
|
32
|
cannam@473
|
33 export class GridComponent extends VerticallyBinnedWavesComponent<AugmentedMatrixFeature> {
|
cannam@472
|
34
|
cannam@472
|
35 @Input() set grid(grid: AugmentedMatrixFeature) {
|
dev@383
|
36 this.feature = grid;
|
dev@382
|
37 }
|
dev@382
|
38
|
dev@383
|
39 protected get featureLayers(): Layer[] {
|
cannam@471
|
40 const startTime = this.feature.startTime;
|
dev@383
|
41 const stepDuration = this.feature.stepDuration;
|
dev@383
|
42 const matrixData = this.feature.data;
|
dev@382
|
43
|
dev@382
|
44 if (matrixData.length === 0) {
|
dev@383
|
45 return [];
|
dev@382
|
46 }
|
dev@382
|
47
|
dev@382
|
48 const targetValue = estimatePercentile(matrixData, 95);
|
dev@382
|
49 const gain = (targetValue > 0.0 ? (1.0 / targetValue) : 1.0);
|
dev@382
|
50 const matrixEntity = new Waves.utils.PrefilledMatrixEntity(
|
dev@382
|
51 matrixData,
|
cannam@471
|
52 startTime,
|
dev@382
|
53 stepDuration
|
dev@382
|
54 );
|
dev@382
|
55
|
dev@383
|
56 return [
|
dev@382
|
57 new Waves.helpers.MatrixLayer(
|
dev@382
|
58 matrixEntity,
|
dev@382
|
59 {
|
dev@382
|
60 gain: gain,
|
dev@382
|
61 height: this.height,
|
dev@382
|
62 normalise: 'none',
|
dev@382
|
63 mapper: iceMapper()
|
dev@382
|
64 }
|
dev@383
|
65 )
|
dev@383
|
66 ];
|
dev@382
|
67 }
|
cannam@471
|
68
|
cannam@473
|
69 get binNames(): string[] {
|
cannam@473
|
70 return this.feature.binNames;
|
cannam@471
|
71 }
|
dev@382
|
72 }
|