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