annotate src/app/visualisations/grid/grid.component.ts @ 477:e3cbf4c53e5e

Rename type and make it an abstract class to stop angular-cli complaining (I still don't understand this).
author Lucas Thompson <dev@lucas.im>
date Fri, 30 Jun 2017 16:25:58 +0100
parents f2b62195a5a6
children 64ed45a0bad3
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 VerticallyBinned,
cannam@473 6 VerticallyBinnedWavesComponent,
cannam@473 7 VerticalBinNameRenderer,
cannam@471 8 WavesComponent
cannam@471 9 } from '../waves-base.component';
dev@382 10 import {
dev@382 11 ChangeDetectionStrategy,
dev@382 12 Component,
dev@382 13 Input,
dev@382 14 } from '@angular/core';
dev@382 15 import Waves from 'waves-ui-piper';
dev@477 16 import {Grid} from '../FeatureUtilities';
dev@382 17 import {iceMapper} from '../../spectrogram/ColourMap';
dev@382 18 import {estimatePercentile} from '../../spectrogram/MatrixUtils';
dev@382 19
dev@382 20 @Component({
dev@382 21 selector: 'ugly-grid',
dev@382 22 templateUrl: '../waves-template.html',
dev@382 23 styleUrls: ['../waves-template.css'],
dev@405 24 changeDetection: ChangeDetectionStrategy.OnPush,
dev@405 25 providers: [
cannam@473 26 {provide: VerticallyBinned, useExisting: GridComponent },
cannam@473 27 {provide: VerticalBinNameRenderer, useExisting: GridComponent },
dev@405 28 {provide: WavesComponent, useExisting: GridComponent}
dev@405 29 ]
dev@382 30 })
dev@383 31
dev@477 32 export class GridComponent extends VerticallyBinnedWavesComponent<Grid> {
cannam@472 33
dev@477 34 @Input() set grid(grid: Grid) {
dev@383 35 this.feature = grid;
dev@382 36 }
dev@382 37
dev@383 38 protected get featureLayers(): Layer[] {
cannam@471 39 const startTime = this.feature.startTime;
dev@383 40 const stepDuration = this.feature.stepDuration;
dev@383 41 const matrixData = this.feature.data;
dev@382 42
dev@382 43 if (matrixData.length === 0) {
dev@383 44 return [];
dev@382 45 }
dev@382 46
dev@382 47 const targetValue = estimatePercentile(matrixData, 95);
dev@382 48 const gain = (targetValue > 0.0 ? (1.0 / targetValue) : 1.0);
dev@382 49 const matrixEntity = new Waves.utils.PrefilledMatrixEntity(
dev@382 50 matrixData,
cannam@471 51 startTime,
dev@382 52 stepDuration
dev@382 53 );
dev@382 54
dev@383 55 return [
dev@382 56 new Waves.helpers.MatrixLayer(
dev@382 57 matrixEntity,
dev@382 58 {
dev@382 59 gain: gain,
dev@382 60 height: this.height,
dev@382 61 normalise: 'none',
dev@382 62 mapper: iceMapper()
dev@382 63 }
dev@383 64 )
dev@383 65 ];
dev@382 66 }
dev@477 67
cannam@473 68 get binNames(): string[] {
cannam@474 69 if (!this.feature.binNames || this.feature.binNames.length === 0) {
cannam@474 70 const binCount = (this.feature.data.length > 0 ?
cannam@474 71 this.feature.data[0].length : 0);
cannam@474 72 for (let i = 0; i < binCount; ++i) {
dev@477 73 this.feature.binNames.push(`${i + 1}`);
cannam@474 74 }
cannam@474 75 }
cannam@473 76 return this.feature.binNames;
cannam@471 77 }
dev@382 78 }