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@497
|
11 import {VectorFeature} from 'piper-js/one-shot';
|
dev@402
|
12 import {
|
dev@488
|
13 PlayheadManager,
|
dev@488
|
14 PlayheadRenderer,
|
dev@489
|
15 VerticallyLabelled,
|
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@489
|
35 {provide: VerticallyLabelled, 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@489
|
69 get labels(): [number, number] {
|
dev@489
|
70 return this.tracksComponent.labels;
|
dev@402
|
71 }
|
dev@359
|
72 }
|