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