annotate src/app/visualisations/curve/curve.component.ts @ 488:64ed45a0bad3

Introduce PlayheadRenderer, implement in the waves base. Make VerticallyBounded and VerticalScaleRenderer generic and remove bin equivalents. Forward calls for a PlayheadRenderer from VerticalScaleComponent on to its children. Also update other components accordingly.
author Lucas Thompson <dev@lucas.im>
date Wed, 05 Jul 2017 18:42:12 +0100
parents 89674c064cda
children ab43880f1cd5
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@488 13 PlayheadManager,
dev@488 14 PlayheadRenderer,
dev@402 15 VerticallyBounded,
dev@402 16 VerticalScaleRenderer,
dev@405 17 VerticalValueInspectorRenderer,
dev@405 18 WavesComponent
dev@402 19 } from '../waves-base.component';
dev@402 20 import {TracksComponent} from '../tracks/tracks.components';
dev@359 21
dev@359 22 @Component({
dev@359 23 selector: 'ugly-curve',
dev@402 24 template: `
dev@390 25 <ugly-tracks
dev@390 26 [timeline]="timeline"
dev@390 27 [width]="width"
dev@390 28 [onSeek]="onSeek"
dev@390 29 [colour]="colour"
dev@396 30 [tracks]="[curve]"
dev@412 31 [duration]="duration"
dev@402 32 ></ugly-tracks>`,
dev@402 33 changeDetection: ChangeDetectionStrategy.OnPush,
dev@402 34 providers: [
dev@402 35 {provide: VerticallyBounded, useExisting: CurveComponent },
dev@402 36 {provide: VerticalScaleRenderer, useExisting: CurveComponent},
dev@405 37 {provide: VerticalValueInspectorRenderer, useExisting: CurveComponent},
dev@488 38 {provide: PlayheadRenderer, useExisting: CurveComponent },
dev@405 39 {provide: WavesComponent, useExisting: CurveComponent}
dev@402 40 ]
dev@359 41 })
dev@488 42 export class CurveComponent
dev@488 43 implements VerticalValueInspectorRenderer, PlayheadRenderer {
dev@488 44
dev@376 45 @Input() timeline: Timeline; // TODO refactor WaveComponents to have own Timeline, sharing a TimeContext
dev@372 46 @Input() onSeek: OnSeekHandler;
dev@372 47 @Input() width: number;
dev@396 48 @Input() curve: VectorFeature;
dev@368 49 @Input() colour: string;
dev@412 50 @Input() duration: number;
dev@402 51 @ViewChild(TracksComponent) tracksComponent: TracksComponent;
dev@402 52
dev@488 53 renderPlayhead(initialTime: number, colour: string): PlayheadManager {
dev@488 54 return this.tracksComponent.renderPlayhead(initialTime, colour);
dev@488 55 }
dev@488 56
dev@402 57 renderInspector(range: [number, number], unit?: string): void {
dev@402 58 this.tracksComponent.renderInspector(range, unit);
dev@402 59 }
dev@402 60
dev@402 61 get updatePosition(): OnSeekHandler {
dev@402 62 return this.tracksComponent.updatePosition;
dev@402 63 }
dev@402 64
dev@402 65 renderScale(range: [number, number]): void {
dev@402 66 this.tracksComponent.renderScale(range);
dev@402 67 }
dev@402 68
dev@402 69 get range(): [number, number] {
dev@402 70 return this.tracksComponent.range;
dev@402 71 }
dev@359 72 }