annotate src/app/visualisations/curve/curve.component.ts @ 402:f9d5006f76e1

Change curve component to not render vertical scale / highlight by default. Delegate to child TrackComponent for that work, so the curve can be used like tracks, notes etc.
author Lucas Thompson <dev@lucas.im>
date Fri, 02 Jun 2017 19:10:47 +0100
parents 3eab26a629e1
children 3ace7672638b
rev   line source
dev@359 1 /**
dev@359 2 * Created by lucas on 30/05/2017.
dev@359 3 */
dev@366 4 import {
dev@366 5 ChangeDetectionStrategy,
dev@366 6 Component,
dev@402 7 Input,
dev@402 8 ViewChild
dev@378 9 } from '@angular/core';
dev@378 10 import {OnSeekHandler} from '../../playhead/PlayHeadHelpers';
dev@396 11 import {VectorFeature} from 'piper/HigherLevelUtilities';
dev@402 12 import {
dev@402 13 VerticallyBounded,
dev@402 14 VerticalScaleRenderer,
dev@402 15 VerticalValueInspectorRenderer
dev@402 16 } from '../waves-base.component';
dev@402 17 import {TracksComponent} from '../tracks/tracks.components';
dev@359 18
dev@359 19 @Component({
dev@359 20 selector: 'ugly-curve',
dev@402 21 template: `
dev@390 22 <ugly-tracks
dev@390 23 [timeline]="timeline"
dev@390 24 [width]="width"
dev@390 25 [onSeek]="onSeek"
dev@390 26 [colour]="colour"
dev@396 27 [tracks]="[curve]"
dev@402 28 ></ugly-tracks>`,
dev@402 29 changeDetection: ChangeDetectionStrategy.OnPush,
dev@402 30 providers: [
dev@402 31 {provide: VerticallyBounded, useExisting: CurveComponent },
dev@402 32 {provide: VerticalScaleRenderer, useExisting: CurveComponent},
dev@402 33 {provide: VerticalValueInspectorRenderer, useExisting: CurveComponent}
dev@402 34 ]
dev@359 35 })
dev@402 36 export class CurveComponent implements VerticalValueInspectorRenderer {
dev@376 37 @Input() timeline: Timeline; // TODO refactor WaveComponents to have own Timeline, sharing a TimeContext
dev@372 38 @Input() onSeek: OnSeekHandler;
dev@372 39 @Input() width: number;
dev@396 40 @Input() curve: VectorFeature;
dev@368 41 @Input() colour: string;
dev@402 42 @ViewChild(TracksComponent) tracksComponent: TracksComponent;
dev@402 43
dev@402 44 renderInspector(range: [number, number], unit?: string): void {
dev@402 45 this.tracksComponent.renderInspector(range, unit);
dev@402 46 }
dev@402 47
dev@402 48 get updatePosition(): OnSeekHandler {
dev@402 49 return this.tracksComponent.updatePosition;
dev@402 50 }
dev@402 51
dev@402 52 renderScale(range: [number, number]): void {
dev@402 53 this.tracksComponent.renderScale(range);
dev@402 54 }
dev@402 55
dev@402 56 get range(): [number, number] {
dev@402 57 return this.tracksComponent.range;
dev@402 58 }
dev@359 59 }