Mercurial > hg > ugly-duckling
view src/app/visualisations/regions/regions.component.ts @ 481:7253d73ac7c9
Use new Region layer
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Fri, 21 Jul 2017 16:22:51 +0100 |
parents | 0fbba61603b3 |
children | abbc096e0335 |
line wrap: on
line source
/** * Created by lucast on 31/05/2017. */ import { InspectableVerticallyBoundedComponent, VerticallyBounded, VerticalScaleRenderer, VerticalValueInspectorRenderer, WavesComponent } from '../waves-base.component'; import { ChangeDetectionStrategy, Component, Input, } from '@angular/core'; import {Region} from '../FeatureUtilities'; import Waves from 'waves-ui-piper'; @Component({ selector: 'ugly-regions', templateUrl: '../waves-template.html', styleUrls: ['../waves-template.css'], changeDetection: ChangeDetectionStrategy.OnPush, providers: [ { provide: VerticallyBounded, useExisting: RegionsComponent }, { provide: VerticalScaleRenderer, useExisting: RegionsComponent }, {provide: VerticalValueInspectorRenderer, useExisting: RegionsComponent }, {provide: WavesComponent, useExisting: RegionsComponent} ] }) export class RegionsComponent extends InspectableVerticallyBoundedComponent<Region[]> { private currentVerticalRange: [number, number]; get range(): [number, number] { return this.currentVerticalRange; } @Input() set regions(regions: Region[]) { this.feature = regions; } protected get featureLayers(): Layer[] { this.currentVerticalRange = findVerticalRange(this.feature); return [ new Waves.helpers.RegionLayer( this.feature, { height: this.height, color: this.colour, yDomain: this.currentVerticalRange } ) ]; } } // TODO there might be scope to create a generic utility function like this function findVerticalRange(regions: Region[]): [number, number] { let [min, max] = regions.reduce((acc, region) => { const [min, max] = acc; return [Math.min (min, region.value), Math.max (max, region.value)]; }, [Infinity, -Infinity]); if (min === Infinity) { min = 0; max = 1; } return [ min, max ]; }