annotate src/app/visualisations/vertical-scale.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 |
494e2bb601dc |
children |
|
rev |
line source |
dev@388
|
1 /**
|
dev@388
|
2 * Created by lucas on 01/06/2017.
|
dev@388
|
3 */
|
dev@488
|
4 import {
|
dev@488
|
5 PlayheadManager,
|
dev@488
|
6 PlayheadRenderer,
|
dev@488
|
7 VerticalScaleRenderer
|
dev@488
|
8 } from './waves-base.component';
|
dev@388
|
9 import {
|
dev@388
|
10 ChangeDetectionStrategy,
|
dev@388
|
11 Component,
|
dev@388
|
12 ContentChildren,
|
dev@388
|
13 QueryList,
|
dev@388
|
14 AfterViewInit
|
dev@393
|
15 } from '@angular/core';
|
dev@388
|
16
|
dev@388
|
17 @Component({
|
dev@388
|
18 selector: 'ugly-vertical-scale',
|
dev@388
|
19 template: '<ng-content></ng-content>',
|
dev@488
|
20 changeDetection: ChangeDetectionStrategy.OnPush,
|
dev@488
|
21 providers: [
|
dev@488
|
22 {provide: PlayheadRenderer, useExisting: VerticalScaleComponent }
|
dev@488
|
23 ]
|
dev@388
|
24 })
|
dev@488
|
25 export class VerticalScaleComponent implements AfterViewInit, PlayheadRenderer {
|
dev@388
|
26
|
dev@393
|
27 @ContentChildren(
|
dev@393
|
28 VerticalScaleRenderer
|
dev@488
|
29 ) bounded: QueryList<VerticalScaleRenderer<any>>;
|
dev@488
|
30 @ContentChildren(
|
dev@488
|
31 PlayheadRenderer
|
dev@488
|
32 ) seekable: QueryList<PlayheadRenderer>;
|
dev@488
|
33 protected cachedRange: any;
|
dev@388
|
34
|
dev@388
|
35 ngAfterViewInit(): void {
|
dev@388
|
36 this.bounded.forEach(component => {
|
dev@489
|
37 this.cachedRange = component.labels;
|
dev@403
|
38 if (this.cachedRange) {
|
dev@403
|
39 component.renderScale(this.cachedRange);
|
dev@388
|
40 }
|
dev@388
|
41 });
|
dev@388
|
42 }
|
dev@488
|
43
|
dev@488
|
44 renderPlayhead(initialTime: number, colour: string): PlayheadManager {
|
dev@488
|
45 const rendered = this.seekable
|
dev@488
|
46 .filter(x => x !== this) // why does QueryList consider itself as a child?
|
dev@488
|
47 .map(component => component.renderPlayhead(initialTime, colour));
|
dev@488
|
48 return {
|
dev@488
|
49 update: (time: number) => {
|
dev@488
|
50 rendered.forEach(component => component.update(time));
|
dev@488
|
51 },
|
dev@491
|
52 remove: () => rendered.map(component => component.remove())
|
dev@488
|
53 };
|
dev@488
|
54 }
|
dev@388
|
55 }
|