annotate src/app/visualisations/cross-hair-inspector.component.ts @ 424:bb2bc6af642b

Update lock
author Lucas Thompson <dev@lucas.im>
date Tue, 06 Jun 2017 21:36:48 +0100
parents 95d1f10129a3
children f2bb5ddae867
rev   line source
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 }