annotate src/app/visualisations/cross-hair-inspector.component.ts @ 509:041468f553e1 tip master

Merge pull request #57 from LucasThompson/fix/session-stack-max-call-stack Fix accidental recursion in PersistentStack
author Lucas Thompson <LucasThompson@users.noreply.github.com>
date Mon, 27 Nov 2017 11:04:30 +0000
parents 64ed45a0bad3
children
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@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 }