dev@372: /** dev@372: * Created by lucas on 30/05/2017. dev@372: */ dev@390: import { dev@392: InspectableVerticallyBoundedComponent, dev@488: PlayheadRenderer, dev@489: VerticallyLabelled, dev@392: VerticalScaleRenderer, dev@488: VerticalValueInspectorRenderer, dev@488: WavesComponent dev@390: } from '../waves-base.component'; dev@372: import { dev@372: ChangeDetectionStrategy, dev@372: Component, dev@372: Input, dev@378: } from '@angular/core'; dev@497: import {TracksFeature} from 'piper-js/one-shot'; dev@372: import Waves from 'waves-ui-piper'; dev@378: import {generatePlotData, PlotLayerData} from '../FeatureUtilities'; dev@372: dev@372: @Component({ dev@372: selector: 'ugly-tracks', dev@372: templateUrl: '../waves-template.html', dev@372: styleUrls: ['../waves-template.css'], dev@390: changeDetection: ChangeDetectionStrategy.OnPush, dev@392: providers: [ dev@489: {provide: VerticallyLabelled, useExisting: TracksComponent }, dev@392: {provide: VerticalScaleRenderer, useExisting: TracksComponent}, dev@392: {provide: VerticalValueInspectorRenderer, useExisting: TracksComponent}, dev@488: {provide: PlayheadRenderer, useExisting: TracksComponent }, dev@405: {provide: WavesComponent, useExisting: TracksComponent} dev@392: ], dev@372: }) dev@390: export class TracksComponent dev@392: extends InspectableVerticallyBoundedComponent { dev@390: dev@404: private currentState: PlotLayerData; dev@372: dev@372: @Input() set tracks(input: TracksFeature) { dev@383: this.feature = input; dev@372: } dev@372: dev@489: get labels(): [number, number] { dev@404: return this.currentState && this.currentState.data.length > 0 ? dev@404: this.currentState.yDomain : null; dev@390: } dev@390: dev@383: protected get featureLayers(): Layer[] { dev@383: this.currentState = generatePlotData(this.feature); dev@404: return this.currentState.data.map(feature => new Waves.helpers.LineLayer( dev@404: feature.points, { dev@383: color: this.colour, dev@383: height: this.height, dev@404: yDomain: this.currentState.yDomain dev@383: }) dev@383: ); dev@383: } dev@372: dev@383: protected get postAddMap() { dev@383: return (layer, index) => { dev@404: layer.start = this.currentState.data[index].startTime; dev@404: layer.duration = this.currentState.data[index].duration; dev@383: layer.update(); dev@383: }; dev@372: } dev@372: }