dev@381: /** dev@381: * Created by lucast on 31/05/2017. dev@381: */ dev@381: import {WavesComponent} from '../waves-base.component'; dev@381: import { dev@381: AfterViewInit, dev@381: ChangeDetectionStrategy, dev@381: Component, dev@381: ElementRef, dev@381: Input, dev@381: ViewChild dev@381: } from '@angular/core'; dev@381: import {Instant} from '../FeatureUtilities'; dev@381: import Waves from 'waves-ui-piper'; dev@381: dev@381: @Component({ dev@381: selector: 'ugly-instants', dev@381: templateUrl: '../waves-template.html', dev@381: styleUrls: ['../waves-template.css'], dev@381: changeDetection: ChangeDetectionStrategy.OnPush dev@381: }) dev@381: export class InstantsComponent extends WavesComponent implements AfterViewInit { dev@381: @ViewChild('track') trackDiv: ElementRef; dev@381: dev@381: private mFeature: Instant[]; dev@381: private height: number; // As it stands, height is fixed. Store once onInit. dev@381: dev@381: @Input() set instants(instants: Instant[]) { dev@381: this.mFeature = instants; dev@381: this.update(); dev@381: } dev@381: dev@381: get instants(): Instant[] { dev@381: return this.mFeature; dev@381: } dev@381: dev@381: ngAfterViewInit(): void { dev@381: this.height = this.trackDiv.nativeElement.getBoundingClientRect().height; dev@381: this.renderTimeline(this.trackDiv); dev@381: this.update(); dev@381: } dev@381: dev@381: update(): void { dev@381: if (!this.waveTrack || !this.instants) { return; } dev@381: this.clearTimeline(this.trackDiv); dev@381: dev@381: this.addLayer( dev@381: new Waves.helpers.TickLayer( dev@381: this.instants, dev@381: { dev@381: height: this.height, dev@381: color: this.colour, dev@381: labelPosition: 'bottom', dev@381: shadeSegments: true dev@381: } dev@381: ), dev@381: this.waveTrack, dev@381: this.timeline.timeContext dev@381: ); dev@381: } dev@381: }