Mercurial > hg > ugly-duckling
view 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 |
line wrap: on
line source
/** * Created by lucas on 01/06/2017. */ import { PlayheadManager, PlayheadRenderer, VerticalScaleRenderer } from './waves-base.component'; import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, AfterViewInit } from '@angular/core'; @Component({ selector: 'ugly-vertical-scale', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ {provide: PlayheadRenderer, useExisting: VerticalScaleComponent } ] }) export class VerticalScaleComponent implements AfterViewInit, PlayheadRenderer { @ContentChildren( VerticalScaleRenderer ) bounded: QueryList<VerticalScaleRenderer<any>>; @ContentChildren( PlayheadRenderer ) seekable: QueryList<PlayheadRenderer>; protected cachedRange: any; ngAfterViewInit(): void { this.bounded.forEach(component => { this.cachedRange = component.labels; if (this.cachedRange) { component.renderScale(this.cachedRange); } }); } renderPlayhead(initialTime: number, colour: string): PlayheadManager { const rendered = this.seekable .filter(x => x !== this) // why does QueryList consider itself as a child? .map(component => component.renderPlayhead(initialTime, colour)); return { update: (time: number) => { rendered.forEach(component => component.update(time)); }, remove: () => rendered.map(component => component.remove()) }; } }