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 }
|