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