annotate src/app/visualisations/tracks/tracks.components.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 c39df81c4dae
children
rev   line source
dev@372 1 /**
dev@372 2 * Created by lucas on 30/05/2017.
dev@372 3 */
dev@390 4 import {
dev@392 5 InspectableVerticallyBoundedComponent,
dev@488 6 PlayheadRenderer,
dev@489 7 VerticallyLabelled,
dev@392 8 VerticalScaleRenderer,
dev@488 9 VerticalValueInspectorRenderer,
dev@488 10 WavesComponent
dev@390 11 } from '../waves-base.component';
dev@372 12 import {
dev@372 13 ChangeDetectionStrategy,
dev@372 14 Component,
dev@372 15 Input,
dev@378 16 } from '@angular/core';
dev@497 17 import {TracksFeature} from 'piper-js/one-shot';
dev@372 18 import Waves from 'waves-ui-piper';
dev@378 19 import {generatePlotData, PlotLayerData} from '../FeatureUtilities';
dev@372 20
dev@372 21 @Component({
dev@372 22 selector: 'ugly-tracks',
dev@372 23 templateUrl: '../waves-template.html',
dev@372 24 styleUrls: ['../waves-template.css'],
dev@390 25 changeDetection: ChangeDetectionStrategy.OnPush,
dev@392 26 providers: [
dev@489 27 {provide: VerticallyLabelled, useExisting: TracksComponent },
dev@392 28 {provide: VerticalScaleRenderer, useExisting: TracksComponent},
dev@392 29 {provide: VerticalValueInspectorRenderer, useExisting: TracksComponent},
dev@488 30 {provide: PlayheadRenderer, useExisting: TracksComponent },
dev@405 31 {provide: WavesComponent, useExisting: TracksComponent}
dev@392 32 ],
dev@372 33 })
dev@390 34 export class TracksComponent
dev@392 35 extends InspectableVerticallyBoundedComponent<TracksFeature> {
dev@390 36
dev@404 37 private currentState: PlotLayerData;
dev@372 38
dev@372 39 @Input() set tracks(input: TracksFeature) {
dev@383 40 this.feature = input;
dev@372 41 }
dev@372 42
dev@489 43 get labels(): [number, number] {
dev@404 44 return this.currentState && this.currentState.data.length > 0 ?
dev@404 45 this.currentState.yDomain : null;
dev@390 46 }
dev@390 47
dev@383 48 protected get featureLayers(): Layer[] {
dev@383 49 this.currentState = generatePlotData(this.feature);
dev@404 50 return this.currentState.data.map(feature => new Waves.helpers.LineLayer(
dev@404 51 feature.points, {
dev@383 52 color: this.colour,
dev@383 53 height: this.height,
dev@404 54 yDomain: this.currentState.yDomain
dev@383 55 })
dev@383 56 );
dev@383 57 }
dev@372 58
dev@383 59 protected get postAddMap() {
dev@383 60 return (layer, index) => {
dev@404 61 layer.start = this.currentState.data[index].startTime;
dev@404 62 layer.duration = this.currentState.data[index].duration;
dev@383 63 layer.update();
dev@383 64 };
dev@372 65 }
dev@372 66 }