@ -16,8 +16,7 @@
import L , { LatLngExpression , LatLngTuple , LeafletMouseEvent } from 'leaflet' ;
import { createTooltip , parseWithTranslation , safeExecute } from './maps-utils' ;
import { PolygonSettings } from './map-models' ;
import { DatasourceData } from '@app/shared/models/widget.models' ;
import { FormattedData , PolygonSettings } from './map-models' ;
export class Polygon {
@ -26,19 +25,22 @@ export class Polygon {
data ;
dataSources ;
constructor ( public map , polyData : DatasourceData , dataSources , private settings : PolygonSettings ) {
this . leafletPoly = L . polygon ( polyData . data , {
fill : true ,
fillColor : settings.polygonColor ,
color : settings.polygonStrokeColor ,
weight : settings.polygonStrokeWeight ,
fillOpacity : settings.polygonOpacity ,
opacity : settings.polygonStrokeOpacity
} ) . addTo ( this . map ) ;
constructor ( public map , polyData : FormattedData , dataSources , private settings : PolygonSettings ) {
this . dataSources = dataSources ;
this . data = polyData ;
const polygonColor = this . getPolygonColor ( settings ) ;
this . leafletPoly = L . polygon ( polyData [ this . settings . polygonKeyName ] , {
fill : true ,
fillColor : polygonColor ,
color : settings.polygonStrokeColor ,
weight : settings.polygonStrokeWeight ,
fillOpacity : settings.polygonOpacity ,
opacity : settings.polygonStrokeOpacity
} ) . addTo ( this . map ) ;
if ( settings . showPolygonTooltip ) {
this . tooltip = createTooltip ( this . leafletPoly , settings , polyData . datasource ) ;
this . tooltip = createTooltip ( this . leafletPoly , settings , polyData . $ datasource) ;
this . updateTooltip ( polyData ) ;
}
if ( settings . polygonClick ) {
@ -52,17 +54,17 @@ export class Polygon {
}
}
updateTooltip ( data : Datasource Data) {
updateTooltip ( data : Formatted Data) {
const pattern = this . settings . usePolygonTooltipFunction ?
safeExecute ( this . settings . polygonTooltipFunction , [ this . data , this . dataSources , this . data . dsIndex ] ) :
this . settings . polygonTooltipPattern ;
this . tooltip . setContent ( parseWithTranslation . parseTemplate ( pattern , data , true ) ) ;
}
updatePolygon ( data : LatLngTuple [ ] , dataSources : Datasource Data[ ] , settings : PolygonSettings ) {
updatePolygon ( data : LatLngTuple [ ] , dataSources : Formatted Data[ ] , settings : PolygonSettings ) {
this . data = data ;
this . dataSources = dataSources ;
this . leafletPoly . setLatLngs ( data ) ;
this . leafletPoly . setLatLngs ( data [ this . settings . polygonKeyName ] ) ;
if ( settings . showPolygonTooltip )
this . updateTooltip ( this . data ) ;
this . updatePolygonColor ( settings ) ;
@ -73,11 +75,10 @@ export class Polygon {
}
updatePolygonColor ( settings : PolygonSettings ) {
const color = settings . usePolygonColorFunction ?
safeExecute ( settings . polygonColorFunction , [ this . data , this . dataSources , this . data . dsIndex ] ) : settings . polygonColor ;
const polygonColor = this . getPolygonColor ( settings ) ;
const style : L.PathOptions = {
fill : true ,
fillColor : c olor,
fillColor : polygonC olor,
color : settings.polygonStrokeColor ,
weight : settings.polygonStrokeWeight ,
fillOpacity : settings.polygonOpacity ,
@ -94,4 +95,12 @@ export class Polygon {
this . leafletPoly . setLatLngs ( latLngs ) ;
this . leafletPoly . redraw ( ) ;
}
private getPolygonColor ( settings : PolygonSettings ) : string | null {
if ( settings . usePolygonColorFunction ) {
return safeExecute ( settings . polygonColorFunction , [ this . data , this . dataSources , this . data . dsIndex ] ) ;
} else {
return settings . polygonColor ;
}
}
}