dev@393
|
1 /**
|
dev@393
|
2 * Created by lucast on 01/06/2017.
|
dev@393
|
3 */
|
dev@393
|
4 import {
|
dev@393
|
5 AfterViewInit,
|
dev@393
|
6 ChangeDetectionStrategy,
|
dev@393
|
7 Component,
|
dev@393
|
8 ContentChildren,
|
dev@396
|
9 Input,
|
dev@487
|
10 OnDestroy,
|
dev@393
|
11 QueryList
|
dev@393
|
12 } from '@angular/core';
|
dev@393
|
13 import {
|
dev@488
|
14 PlayheadRenderer,
|
dev@393
|
15 VerticalValueInspectorRenderer
|
dev@393
|
16 } from './waves-base.component';
|
dev@393
|
17 import {VerticalScaleComponent} from './vertical-scale.component';
|
dev@403
|
18 import {
|
dev@403
|
19 RenderLoopService,
|
dev@403
|
20 TaskRemover
|
dev@403
|
21 } from '../services/render-loop/render-loop.service';
|
dev@415
|
22 import {AudioPlayerService} from '../services/audio-player/audio-player.service';
|
dev@393
|
23
|
dev@393
|
24 @Component({
|
dev@393
|
25 selector: 'ugly-cross-hair-inspector',
|
dev@393
|
26 template: '<ng-content></ng-content>',
|
dev@488
|
27 changeDetection: ChangeDetectionStrategy.OnPush,
|
dev@488
|
28 providers: [
|
dev@488
|
29 {provide: PlayheadRenderer, useExisting: CrossHairInspectorComponent }
|
dev@488
|
30 ]
|
dev@393
|
31 })
|
dev@393
|
32 export class CrossHairInspectorComponent extends VerticalScaleComponent
|
dev@487
|
33 implements AfterViewInit, OnDestroy {
|
dev@393
|
34 @ContentChildren(
|
dev@393
|
35 VerticalValueInspectorRenderer
|
dev@393
|
36 ) inspectorRenderers: QueryList<VerticalValueInspectorRenderer>;
|
dev@396
|
37 @Input() unit: string;
|
dev@403
|
38 @Input() set isAnimated(isAnimated: boolean) {
|
dev@403
|
39 this.mIsAnimated = isAnimated;
|
dev@403
|
40 if (this.removers.length) {
|
dev@403
|
41 this.removers.forEach(remove => remove());
|
dev@403
|
42 this.removers = [];
|
dev@403
|
43 }
|
dev@403
|
44 if (isAnimated) {
|
dev@403
|
45 this.addTasks();
|
dev@403
|
46 }
|
dev@403
|
47 }
|
dev@403
|
48
|
dev@403
|
49 private removers: TaskRemover[];
|
dev@403
|
50 private mIsAnimated: boolean;
|
dev@393
|
51
|
dev@415
|
52 constructor(private renderLoop: RenderLoopService,
|
dev@415
|
53 private player: AudioPlayerService) {
|
dev@397
|
54 super();
|
dev@403
|
55 this.removers = [];
|
dev@397
|
56 }
|
dev@397
|
57
|
dev@393
|
58 ngAfterViewInit(): void {
|
dev@393
|
59 super.ngAfterViewInit();
|
dev@393
|
60 this.inspectorRenderers.forEach(renderer => {
|
dev@403
|
61 renderer.renderInspector(this.cachedRange, this.unit);
|
dev@415
|
62 renderer.updatePosition(this.player.getCurrentTime());
|
dev@393
|
63 });
|
dev@403
|
64 this.addTasks();
|
dev@403
|
65 }
|
dev@403
|
66
|
dev@487
|
67 ngOnDestroy(): void {
|
dev@487
|
68 this.removers.forEach(remove => remove());
|
dev@487
|
69 }
|
dev@487
|
70
|
dev@403
|
71 private addTasks(): void {
|
dev@403
|
72 if (this.inspectorRenderers && this.mIsAnimated) {
|
dev@403
|
73 this.inspectorRenderers.forEach(renderer => {
|
dev@403
|
74 this.removers.push(
|
dev@403
|
75 this.renderLoop.addPlayingTask(renderer.updatePosition)
|
dev@403
|
76 );
|
dev@403
|
77 });
|
dev@403
|
78 }
|
dev@393
|
79 }
|
dev@393
|
80 }
|