annotate src/app/visualisations/instants/instants.component.ts @ 381:b220ed78a250
Rig up instants and add dynamic colour selection to feature components. Structure of a derived WaveComponent is now pretty clear, some refactoring is in order.
author |
Lucas Thompson <dev@lucas.im> |
date |
Wed, 31 May 2017 17:09:36 +0100 |
parents |
|
children |
1241ca979fd9 |
rev |
line source |
dev@381
|
1 /**
|
dev@381
|
2 * Created by lucast on 31/05/2017.
|
dev@381
|
3 */
|
dev@381
|
4 import {WavesComponent} from '../waves-base.component';
|
dev@381
|
5 import {
|
dev@381
|
6 AfterViewInit,
|
dev@381
|
7 ChangeDetectionStrategy,
|
dev@381
|
8 Component,
|
dev@381
|
9 ElementRef,
|
dev@381
|
10 Input,
|
dev@381
|
11 ViewChild
|
dev@381
|
12 } from '@angular/core';
|
dev@381
|
13 import {Instant} from '../FeatureUtilities';
|
dev@381
|
14 import Waves from 'waves-ui-piper';
|
dev@381
|
15
|
dev@381
|
16 @Component({
|
dev@381
|
17 selector: 'ugly-instants',
|
dev@381
|
18 templateUrl: '../waves-template.html',
|
dev@381
|
19 styleUrls: ['../waves-template.css'],
|
dev@381
|
20 changeDetection: ChangeDetectionStrategy.OnPush
|
dev@381
|
21 })
|
dev@381
|
22 export class InstantsComponent extends WavesComponent implements AfterViewInit {
|
dev@381
|
23 @ViewChild('track') trackDiv: ElementRef;
|
dev@381
|
24
|
dev@381
|
25 private mFeature: Instant[];
|
dev@381
|
26 private height: number; // As it stands, height is fixed. Store once onInit.
|
dev@381
|
27
|
dev@381
|
28 @Input() set instants(instants: Instant[]) {
|
dev@381
|
29 this.mFeature = instants;
|
dev@381
|
30 this.update();
|
dev@381
|
31 }
|
dev@381
|
32
|
dev@381
|
33 get instants(): Instant[] {
|
dev@381
|
34 return this.mFeature;
|
dev@381
|
35 }
|
dev@381
|
36
|
dev@381
|
37 ngAfterViewInit(): void {
|
dev@381
|
38 this.height = this.trackDiv.nativeElement.getBoundingClientRect().height;
|
dev@381
|
39 this.renderTimeline(this.trackDiv);
|
dev@381
|
40 this.update();
|
dev@381
|
41 }
|
dev@381
|
42
|
dev@381
|
43 update(): void {
|
dev@381
|
44 if (!this.waveTrack || !this.instants) { return; }
|
dev@381
|
45 this.clearTimeline(this.trackDiv);
|
dev@381
|
46
|
dev@381
|
47 this.addLayer(
|
dev@381
|
48 new Waves.helpers.TickLayer(
|
dev@381
|
49 this.instants,
|
dev@381
|
50 {
|
dev@381
|
51 height: this.height,
|
dev@381
|
52 color: this.colour,
|
dev@381
|
53 labelPosition: 'bottom',
|
dev@381
|
54 shadeSegments: true
|
dev@381
|
55 }
|
dev@381
|
56 ),
|
dev@381
|
57 this.waveTrack,
|
dev@381
|
58 this.timeline.timeContext
|
dev@381
|
59 );
|
dev@381
|
60 }
|
dev@381
|
61 }
|