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@405
|
8 VerticalValueInspectorRenderer, WavesComponent,
|
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@405
|
28 {provide: WavesComponent, useExisting: TracksComponent}
|
dev@392
|
29 ],
|
dev@372
|
30 })
|
dev@390
|
31 export class TracksComponent
|
dev@392
|
32 extends InspectableVerticallyBoundedComponent<TracksFeature> {
|
dev@390
|
33
|
dev@404
|
34 private currentState: PlotLayerData;
|
dev@372
|
35
|
dev@372
|
36 @Input() set tracks(input: TracksFeature) {
|
dev@383
|
37 this.feature = input;
|
dev@372
|
38 }
|
dev@372
|
39
|
dev@390
|
40 get range(): [number, number] {
|
dev@404
|
41 return this.currentState && this.currentState.data.length > 0 ?
|
dev@404
|
42 this.currentState.yDomain : null;
|
dev@390
|
43 }
|
dev@390
|
44
|
dev@383
|
45 protected get featureLayers(): Layer[] {
|
dev@383
|
46 this.currentState = generatePlotData(this.feature);
|
dev@404
|
47 return this.currentState.data.map(feature => new Waves.helpers.LineLayer(
|
dev@404
|
48 feature.points, {
|
dev@383
|
49 color: this.colour,
|
dev@383
|
50 height: this.height,
|
dev@404
|
51 yDomain: this.currentState.yDomain
|
dev@383
|
52 })
|
dev@383
|
53 );
|
dev@383
|
54 }
|
dev@372
|
55
|
dev@383
|
56 protected get postAddMap() {
|
dev@383
|
57 return (layer, index) => {
|
dev@404
|
58 layer.start = this.currentState.data[index].startTime;
|
dev@404
|
59 layer.duration = this.currentState.data[index].duration;
|
dev@383
|
60 layer.update();
|
dev@383
|
61 };
|
dev@372
|
62 }
|
dev@372
|
63 }
|