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@390
|
6 VerticallyBounded,
|
dev@392
|
7 VerticalScaleRenderer,
|
dev@392
|
8 VerticalValueInspectorRenderer,
|
dev@390
|
9 } from '../waves-base.component';
|
dev@372
|
10 import {
|
dev@372
|
11 ChangeDetectionStrategy,
|
dev@372
|
12 Component,
|
dev@372
|
13 Input,
|
dev@378
|
14 } from '@angular/core';
|
dev@378
|
15 import {TracksFeature} from 'piper/HigherLevelUtilities';
|
dev@372
|
16 import Waves from 'waves-ui-piper';
|
dev@378
|
17 import {generatePlotData, PlotLayerData} from '../FeatureUtilities';
|
dev@372
|
18
|
dev@372
|
19 @Component({
|
dev@372
|
20 selector: 'ugly-tracks',
|
dev@372
|
21 templateUrl: '../waves-template.html',
|
dev@372
|
22 styleUrls: ['../waves-template.css'],
|
dev@390
|
23 changeDetection: ChangeDetectionStrategy.OnPush,
|
dev@392
|
24 providers: [
|
dev@392
|
25 {provide: VerticallyBounded, useExisting: TracksComponent },
|
dev@392
|
26 {provide: VerticalScaleRenderer, useExisting: TracksComponent},
|
dev@392
|
27 {provide: VerticalValueInspectorRenderer, useExisting: TracksComponent},
|
dev@392
|
28 ],
|
dev@372
|
29 })
|
dev@390
|
30 export class TracksComponent
|
dev@392
|
31 extends InspectableVerticallyBoundedComponent<TracksFeature> {
|
dev@390
|
32
|
dev@372
|
33 private currentState: PlotLayerData[];
|
dev@372
|
34
|
dev@372
|
35 @Input() set tracks(input: TracksFeature) {
|
dev@383
|
36 this.feature = input;
|
dev@372
|
37 }
|
dev@372
|
38
|
dev@390
|
39 get range(): [number, number] {
|
dev@390
|
40 return this.currentState && this.currentState.length > 0 ?
|
dev@390
|
41 this.currentState[0].yDomain : null;
|
dev@390
|
42 }
|
dev@390
|
43
|
dev@383
|
44 protected get featureLayers(): Layer[] {
|
dev@383
|
45 this.currentState = generatePlotData(this.feature);
|
dev@383
|
46 return this.currentState.map(feature => new Waves.helpers.LineLayer(
|
dev@383
|
47 feature.data, {
|
dev@383
|
48 color: this.colour,
|
dev@383
|
49 height: this.height,
|
dev@383
|
50 yDomain: feature.yDomain
|
dev@383
|
51 })
|
dev@383
|
52 );
|
dev@383
|
53 }
|
dev@372
|
54
|
dev@383
|
55 protected get postAddMap() {
|
dev@383
|
56 return (layer, index) => {
|
dev@383
|
57 layer.start = this.currentState[index].startTime;
|
dev@383
|
58 layer.duration = this.currentState[index].duration;
|
dev@383
|
59 layer.update();
|
dev@383
|
60 };
|
dev@372
|
61 }
|
dev@372
|
62 }
|