@provoly/dashboard 1.4.31 → 1.4.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-map.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-map/interaction/selection-interaction.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/interaction/interaction-manager.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/cql-utils.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/xml-utils.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map-layer.service.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/widget-map.utils.ts","../../../../projects/provoly/dashboard/widgets/widget-map/interaction/layer-slider.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/interaction/tooltip-manager.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-map/pipe/widget-map-legend-url.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map.component.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map.component.html","../../../../projects/provoly/dashboard/widgets/widget-map/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-map/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-map/widget-map.module.ts","../../../../projects/provoly/dashboard/widgets/widget-map/provoly-dashboard-widgets-widget-map.ts"],"sourcesContent":["import { Store } from '@ngrx/store';\nimport { DashboardActions, widgetMapConfig } from '@provoly/dashboard';\nimport { Feature, Map, MapBrowserEvent } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\nimport { Geometry, Polygon } from 'ol/geom';\nimport PointerInteraction from 'ol/interaction/Pointer';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport RenderBox from 'ol/render/Box';\nimport VectorSource from 'ol/source/Vector';\nimport { Fill, Style } from 'ol/style';\nimport { BehaviorSubject } from 'rxjs';\n\nexport class SelectionInteraction extends PointerInteraction {\n private coordinates: number[] | null;\n private features: string[];\n selectionType$ = new BehaviorSubject<'click' | 'lasso' | 'rectangle' | 'zoom' | 'move'>('move');\n private store?: Store;\n private currentRectangle = new RenderBox('ol-rectangle-selection');\n private overlayForLasso: VectorLayer<any>;\n private lassoCoordinates: number[][] = [];\n private currentLassoFeature: Feature<Polygon> | null = null;\n private actions: ('click' | 'lasso' | 'rectangle' | 'zoom' | 'move')[] = [];\n\n selectionStyle = new Style({\n fill: new Fill({\n color: 'rgba(251, 198, 199, 0.5)'\n })\n });\n\n constructor() {\n super({});\n\n this.coordinates = null;\n this.features = [];\n widgetMapConfig.actions$.subscribe((actions) => {\n // @ts-ignore\n this.actions = actions.filter((action) => action !== 'export' && action !== 'upload');\n this.selectionType$.next(this.actions[0]);\n });\n this.overlayForLasso = new VectorLayer({\n source: new VectorSource({\n useSpatialIndex: false,\n wrapX: false,\n features: []\n }),\n style: this.selectionStyle,\n updateWhileInteracting: true\n });\n }\n\n init(store: Store) {\n this.store = store;\n return this;\n }\n\n override handleDownEvent(evt: MapBrowserEvent<MouseEvent>) {\n const map = evt.map;\n\n if (this.selectionType$.getValue() === 'move') {\n return false;\n }\n\n if (this.selectionType$.getValue() === 'click') {\n this.features = [\n ...new Set(\n map\n .getFeaturesAtPixel(evt.pixel)\n .map((feature) => feature.get('id'))\n .filter((id) => !!id)\n )\n ];\n // Click and move are collisionning. Need to make another button if needed right now click is aborted\n return true;\n }\n\n if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {\n this.coordinates = evt.pixel;\n this.currentRectangle.setMap(evt.map);\n this.currentRectangle.setPixels(this.coordinates, this.coordinates);\n }\n\n if (this.selectionType$.getValue() === 'lasso') {\n this.getMap()?.addLayer(this.overlayForLasso);\n this.lassoCoordinates = [evt.coordinate];\n if (!this.currentLassoFeature) {\n this.currentLassoFeature = new Feature(new Polygon(this.getPolygonCoordinates(this.lassoCoordinates)));\n this.overlayForLasso.getSource().addFeature(this.currentLassoFeature);\n }\n }\n\n return true;\n }\n\n getPolygonCoordinates(coordinates: number[][]) {\n return [coordinates.concat(coordinates[0])];\n }\n\n override handleDragEvent(evt: MapBrowserEvent<MouseEvent>) {\n if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {\n this.currentRectangle.setPixels(this.coordinates ?? [0, 0], evt.pixel);\n return true;\n }\n if (this.selectionType$.getValue() === 'lasso') {\n this.lassoCoordinates.push(evt.coordinate);\n this.currentLassoFeature?.getGeometry()?.setCoordinates(this.getPolygonCoordinates(this.lassoCoordinates));\n return true;\n }\n return false;\n }\n\n override handleUpEvent() {\n if (this.selectionType$.getValue() === 'click' && this.features.length > 0) {\n this.store?.dispatch(DashboardActions.selectMany({ ids: this.features }));\n }\n\n if (this.selectionType$.getValue() === 'lasso') {\n const geometry = this.currentLassoFeature?.getGeometry();\n\n const boxFeatures = this.getMap()\n ?.getAllLayers()\n .filter(\n (layer) =>\n !(layer instanceof VectorTileLayer) &&\n !(layer instanceof TileLayer) &&\n layer?.getSource() instanceof VectorSource\n )\n .map((layer) =>\n (layer?.getSource() as VectorSource)\n ?.getFeatures()\n .filter((features: Feature<any>) => !!features.get('id'))\n .filter((feature: Feature<any>) => {\n switch (feature.get('type')) {\n case 'point':\n case 'marker':\n return geometry?.intersectsCoordinate(feature.getGeometry().getCoordinates());\n case 'bubble':\n return feature\n .getGeometry()\n .getCenter()\n .map((coords: Coordinate) => geometry?.intersectsCoordinate(coords))\n .reduce((a: boolean, b: boolean) => a || b, false);\n case 'line':\n return feature\n .getGeometry()\n .getCoordinates()\n .map((coords: Coordinate) => geometry?.intersectsCoordinate(coords))\n .reduce((a: boolean, b: boolean) => a || b, false);\n case 'polygon':\n return feature\n .getGeometry()\n .getCoordinates()[0]\n .map((coords: Coordinate) => geometry?.intersectsCoordinate(coords))\n .reduce((a: boolean, b: boolean) => a || b, false);\n default:\n return false;\n }\n })\n )\n .reduce((p, c) => [...p, ...c], []);\n\n const ids = [\n ...new Set(\n boxFeatures?.map((feature: Feature<Geometry>) => feature.get('id') as string).filter((id: string) => !!id)\n )\n ] as string[];\n\n this.store?.dispatch(DashboardActions.selectMany({ ids }));\n\n this.getMap()?.removeLayer(this.overlayForLasso);\n this.lassoCoordinates = [];\n }\n\n if (this.selectionType$.getValue() === 'rectangle') {\n this.currentRectangle.setMap(null as unknown as Map);\n\n const extent = this.currentRectangle.getGeometry().getExtent();\n const boxFeatures = this.getMap()\n ?.getLayers()\n .getArray()\n // @ts-ignore\n .map((layer) => layer.getSource())\n .map((source) => (source.getFeaturesInExtent ? source.getFeaturesInExtent(extent) : []))\n .reduce((p, c) => [...p, ...c], [])\n .filter(\n (feature: any) => !!feature.getGeometry().intersectsExtent && feature.getGeometry().intersectsExtent(extent)\n );\n\n const ids = [\n ...new Set(\n boxFeatures.map((feature: Feature<Geometry>) => feature.get('id') as string).filter((id: string) => !!id)\n )\n ] as string[];\n\n this.store?.dispatch(DashboardActions.selectMany({ ids }));\n }\n\n if (this.selectionType$.getValue() === 'zoom') {\n this.currentRectangle.setMap(null as unknown as Map);\n\n const extent = this.currentRectangle.getGeometry().getExtent();\n this.getMap()\n ?.getView()\n .fit(extent, { padding: [20, 20, 70, 70], duration: 200 });\n }\n\n if (this.selectionType$.getValue() === 'lasso') {\n this.getMap()?.removeLayer(this.overlayForLasso);\n }\n\n this.changeSelection(this.actions[0]);\n this.coordinates = null;\n this.features = [];\n\n return false;\n }\n\n changeSelection(type: string) {\n this.selectionType$.next(type as 'click' | 'lasso' | 'rectangle' | 'zoom' | 'move');\n }\n}\n","import { ContextMenuActions } from '@provoly/dashboard';\nimport { ScaleLine } from 'ol/control';\nimport { toLonLat } from 'ol/proj';\n// This is not a circular dependency\nimport type { WidgetMapComponent } from '../component/widget-map.component';\nimport { SelectionInteraction } from './selection-interaction.class';\n\nexport class InteractionManager {\n scaleControl?: ScaleLine;\n selectionInteraction = new SelectionInteraction();\n private component!: WidgetMapComponent;\n\n init(component: WidgetMapComponent) {\n this.component = component;\n this.addContextMenuInteraction();\n this.addScaleControl();\n this.addUpdateZoomAndCenter();\n this.component.map.addInteraction(this.selectionInteraction.init(this.component.store));\n return this;\n }\n\n listeners = {\n contextMenu: (e: MouseEvent) => {\n if (this.component.manifest.contextMenu !== false) {\n const mapCoordinates = this.component.map.getEventPixel(e);\n const itemId = this.component.map.forEachFeatureAtPixel(mapCoordinates, (feature: any) => feature.get('id'));\n this.component.store.dispatch(\n ContextMenuActions.open({\n itemId,\n clientX: e.clientX,\n clientY: e.clientY,\n resultSet: Array.isArray(this.component.manifest.datasource)\n ? this.component.manifest.datasource[0]\n : this.component.manifest.datasource,\n from: 'map',\n coordinates: toLonLat(\n this.component.map.getCoordinateFromPixel(mapCoordinates),\n this.component.map.getView().getProjection()\n ).reverse(),\n allowObjectCreation: false\n })\n );\n e.preventDefault();\n }\n }\n };\n\n private addContextMenuInteraction() {\n this.component.map.getViewport().addEventListener('contextmenu', this.listeners.contextMenu);\n }\n\n private addScaleControl() {\n if (!this.scaleControl) {\n this.scaleControl = new ScaleLine({\n units: 'metric',\n bar: true,\n steps: 4,\n text: true,\n minWidth: 140,\n dpi: 90\n });\n this.component.map.addControl(this.scaleControl);\n }\n }\n\n private addUpdateZoomAndCenter() {\n this.component.map.on('moveend', () => {\n this.component.optionsCopy.zoom = {\n start:\n this.component.map.getView().getZoom() ??\n this.component.optionsCopy.zoom?.start ??\n this.component.map.getView().getMinZoom(),\n min: this.component.map.getView().getMinZoom(),\n max: this.component.map.getView().getMaxZoom()\n };\n this.component.optionsCopy.center =\n toLonLat(this.component.map.getView().getCenter() ?? [0, 0]) ?? this.component.optionsCopy.center;\n this.component.zoomAndCenter$.next({\n zoom: this.component.optionsCopy.zoom,\n center: this.component.optionsCopy.center\n });\n });\n }\n}\n","import { Class, Field, FilterContext, TextFieldTypes } from '@provoly/dashboard';\n\nexport class CqlUtils {\n static getCQLParamsFor(\n datasourceId: string,\n filters: { [p: string]: FilterContext[] },\n classes: Class[],\n fields: Field[]\n ): string | null {\n if (!filters || !datasourceId || !filters[datasourceId] || filters[datasourceId].length === 0) {\n return null;\n }\n\n const attributesReference = classes.map((clazz) => clazz.attributes).flat();\n\n return filters[datasourceId]\n .map((cond) => {\n const attribute = attributesReference.find((attr) => attr.id === cond.attribute);\n const field = attribute?.field;\n const attributeName = attribute?.technicalName;\n\n return this.getConditionsForValue(attributeName, cond, field, datasourceId);\n })\n .filter((conds) => !!conds && conds.length > 0)\n .join(' AND ');\n }\n\n static getConditionsForValue(\n attributeName: string | undefined,\n cond: FilterContext,\n field: Field | undefined,\n datasourceId: string\n ) {\n let conditions: string[] = [];\n\n const values = (Array.isArray(cond.value) ? cond.value : [cond.value]) as string[] | number[];\n\n if (attributeName) {\n values.forEach((value) => {\n if (value !== undefined && (typeof value !== 'string' || value.length > 0)) {\n const quoteSafeValue = `${value}`.replace(/'/g, \"''\");\n switch (cond.operator) {\n case 'EQUALS':\n if (!field || TextFieldTypes.includes(field?.type)) {\n conditions.push(`${attributeName}='${quoteSafeValue}'`);\n } else {\n conditions.push(`${attributeName}=${value}`);\n }\n break;\n case 'CONTAINS':\n conditions.push(`${attributeName} LIKE '%${quoteSafeValue}%'`);\n break;\n case 'START_WITH':\n conditions.push(`${attributeName} LIKE '${quoteSafeValue}%'`);\n break;\n case 'END_WITH':\n conditions.push(`${attributeName} LIKE '%${quoteSafeValue}'`);\n break;\n case 'GREATER_THAN':\n conditions.push(`${attributeName}>${value}`);\n break;\n case 'LOWER_THAN':\n conditions.push(`${attributeName}<${value}`);\n break;\n case 'OUTSIDE':\n const splitI = (value as string)?.split(',');\n if (splitI && splitI.length > 1) {\n conditions.push(`( ${attributeName}<${splitI[0]} AND ${attributeName}>${splitI[1]} )`);\n }\n break;\n case 'INSIDE':\n const splitO = (value as string)?.split(',');\n if (splitO && splitO.length > 1) {\n conditions.push(`( ${attributeName}>${splitO[0]} AND ${attributeName}<${splitO[1]} )`);\n }\n break;\n }\n }\n });\n } else {\n console.warn(\n `Cannot add cql filter on datasource ${datasourceId} because ${cond.attribute} attribute not found in classes`\n );\n }\n\n return conditions.length > 1 ? '( ' + conditions.join(' OR ') + ' )' : conditions[0];\n }\n}\n","import { DEFAULT_PROJECTION } from '@provoly/dashboard';\nimport { Map } from 'ol';\nimport { get as getProjection, transform } from 'ol/proj';\n\nexport class XMLUtils {\n static find(childs: NodeListOf<ChildNode>, name: string) {\n if (!!childs) {\n for (let i = 0; i < childs.length; i++) {\n const node = childs[i];\n if (node.nodeName === name) {\n return node;\n }\n }\n }\n return null;\n }\n\n static findAll(childs: NodeListOf<ChildNode>, name: string) {\n const result = [];\n for (let i = 0; i < childs.length; i++) {\n const node = childs[i];\n if (node.nodeName === name) {\n result.push(node);\n }\n }\n return result;\n }\n\n static findWith(childs: NodeListOf<ChildNode>, attribute: string, value: string) {\n for (let i = 0; i < childs.length; i++) {\n const node = childs[i];\n const attrNode = XMLUtils.find(node.childNodes, attribute);\n if (attrNode?.textContent === value) {\n return node;\n }\n }\n return null;\n }\n\n static getMatchingLayer(paramLayer: string, doc?: Document) {\n if (doc) {\n const WMSCapability = XMLUtils.find(doc.childNodes, 'WMS_Capabilities');\n if (WMSCapability) {\n const Capabilities = XMLUtils.find(WMSCapability.childNodes, 'Capability');\n if (Capabilities) {\n const Layer = XMLUtils.find(Capabilities.childNodes, 'Layer');\n if (Layer) {\n let matchingLayer = XMLUtils.findWith(Layer.childNodes, 'Name', paramLayer);\n const split = paramLayer.split(':');\n if (!matchingLayer && split.length >= 2) {\n // Try again, splitting on \":\" in the name to ignore namespace if present\n matchingLayer = XMLUtils.findWith(Layer.childNodes, 'Name', split[split.length - 1]);\n }\n return matchingLayer;\n }\n }\n }\n }\n return null;\n }\n\n static allLayers(doc?: Document) {\n const result = [];\n if (doc) {\n const WMSCapability = XMLUtils.find(doc.childNodes, 'WMS_Capabilities');\n if (WMSCapability) {\n const Capabilities = XMLUtils.find(WMSCapability.childNodes, 'Capability');\n if (Capabilities) {\n const layerBloc = XMLUtils.find(Capabilities.childNodes, 'Layer');\n if (layerBloc && layerBloc.childNodes) {\n for (let i = 0; i < layerBloc.childNodes.length; i++) {\n const node = layerBloc.childNodes[i];\n if (node.nodeName === 'Layer') {\n result.push(node);\n }\n }\n }\n }\n }\n }\n return result;\n }\n\n static getLayerExtent(paramLayer: string, map: Map, doc?: Document) {\n if (!doc) {\n return null;\n }\n const matchingLayer = XMLUtils.getMatchingLayer(paramLayer, doc);\n if (matchingLayer) {\n const boundingBox = XMLUtils.find(matchingLayer.childNodes, 'BoundingBox');\n if (boundingBox) {\n // @ts-ignore\n const attributes = boundingBox.attributes;\n const projBox = getProjection(attributes.CRS.textContent ?? DEFAULT_PROJECTION);\n if (projBox) {\n return [\n transform(\n [parseFloat(attributes.minx.textContent), parseFloat(attributes.miny.textContent)],\n projBox,\n map.getView().getProjection()\n ),\n transform(\n [parseFloat(attributes.maxx.textContent), parseFloat(attributes.maxy.textContent)],\n projBox,\n map.getView().getProjection()\n )\n ];\n }\n }\n }\n return null;\n }\n\n static getPossibleLayerStyles(doc?: Document): {\n [param: string]: { param: string; styles: { id: string; label: string }[] };\n } | null {\n if (!doc) {\n return {};\n }\n const layers = XMLUtils.allLayers(doc);\n return (\n layers.map((layer) => {\n const layerName = XMLUtils.find(layer.childNodes, 'Name')?.textContent ?? '';\n const styles = XMLUtils.findAll(layer.childNodes, 'Style');\n const stylesArray = styles.map((style) => ({\n id: XMLUtils.find(style.childNodes, 'Name')?.textContent,\n label:\n XMLUtils.find(style.childNodes, 'Title')?.textContent ??\n XMLUtils.find(style.childNodes, 'Name')?.textContent\n })) as { id: string; label: string }[];\n const uniquesStyles = [...new Set(stylesArray.map((style) => style.id))].map((styleId) =>\n stylesArray.find((styleInArray) => styleInArray.id === styleId)\n );\n return {\n param: layerName,\n styles: uniquesStyles\n };\n }) as { param: string; styles: { id: string; label: string }[] }[]\n ).reduce((p, c) => ({ ...p, [c.param]: c }), {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Attribute,\n FieldType,\n ItemUtils,\n MapAutoLayerOptions,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetRelationLayerOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\n PryGeoAuthService,\n ResultSet\n} from '@provoly/dashboard';\nimport { Feature, Map } from 'ol';\nimport { getTopLeft, getWidth } from 'ol/extent';\nimport { GeoJSON, MVT } from 'ol/format';\nimport { Geometry } from 'ol/geom';\nimport { Heatmap, Tile } from 'ol/layer';\nimport BaseLayer from 'ol/layer/Base';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport { Cluster, ImageWMS, TileWMS, Vector, WMTS, XYZ } from 'ol/source';\nimport VectorSource from 'ol/source/Vector';\nimport VectorTile from 'ol/source/VectorTile';\nimport { Circle, Fill, Stroke, Style, Text } from 'ol/style';\nimport CircleStyle from 'ol/style/Circle';\nimport WMTSTileGrid from 'ol/tilegrid/WMTS';\nimport { ProjectionLike } from 'ol/proj';\nimport { WidgetMapUtils } from '../utils/widget-map.utils';\nimport ImageLayer from 'ol/layer/Image';\n\nexport type AttributesForClass = {\n [key: string]: {\n intensityAttribute: Attribute;\n locationAttribute: Attribute;\n };\n};\n\nexport type ItemStyles = { [id: string]: { classic: Style; bordered: Style } };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WidgetMapLayerService {\n styleCache: any = {};\n\n circleStyle = new Style({\n fill: new Fill({\n color: 'rgba(37,89,163,0.24)'\n }),\n stroke: new Stroke({\n color: 'rgb(37,89,163)',\n width: 2\n })\n });\n selectedCircleStyle = new Style({\n fill: new Fill({\n color: 'rgba(37,163,58,0.24)'\n }),\n stroke: new Stroke({\n color: 'rgb(37,163,58)',\n width: 2\n })\n });\n\n pointStyle = new Style({\n image: new Circle({\n fill: new Fill({ color: 'rgba(37,89,163,0.24)' }),\n stroke: new Stroke({ color: 'rgb(37,89,163)', width: 2 }),\n radius: 10\n })\n });\n selectedPointStyle = new Style({\n image: new Circle({\n fill: new Fill({ color: 'rgba(37,163,58,0.24)' }),\n stroke: new Stroke({ color: 'rgb(37,163,58)', width: 2 }),\n radius: 10\n })\n });\n geoAuthService?: PryGeoAuthService;\n\n withGeoAuth(geoAuthService: PryGeoAuthService) {\n this.geoAuthService = geoAuthService;\n }\n\n get implementationList() {\n return Object.keys(this.layersImplementation).filter((implementation) => implementation !== 'geoserver');\n }\n\n dontNeedLocation = ['relation', 'wms', 'wmts', 'geoserver', 'featurelayer', 'vectortile', 'rastertile'];\n dontNeedIntensity = [\n ...this.dontNeedLocation,\n 'marker',\n 'point',\n 'line',\n 'polygon',\n 'multi-line',\n 'multi-polygon',\n 'auto'\n ];\n\n layersImplementation = {\n auto: (\n layer: MapAutoLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layersImplementation[WidgetMapLayerService.translateFieldTypeToLayerType(layer.subType)](\n // @ts-ignore\n layer,\n attributesForClass,\n layerClassesId,\n resultSet,\n range,\n itemStyles,\n map\n ) as BaseLayer;\n },\n heatmap: (\n layer: MapWidgetHeatMapLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const heatmap = new Heatmap({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new Vector({ attributions: [layer.attribution ?? ''] }),\n blur: (layer.radius ?? WidgetMapUtils.DEFAULT_HEATMAP_RADIUS) / 2,\n radius: layer.radius ?? WidgetMapUtils.DEFAULT_HEATMAP_RADIUS,\n weight: (feature: any) => {\n const value = ItemUtils.getAttributeCalculatedValue(\n feature,\n attributesForClass[feature.get('oClass') as string].intensityAttribute\n ) as number;\n const atScale = (value - range.min) / (range.max - range.min);\n return layer.intensityAsc ? atScale : 1 - atScale;\n }\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .filter((item) => {\n const location = WidgetMapUtils.readGeometry(\n map.getView().getProjection(),\n item,\n 'point',\n attributesForClass[classId].locationAttribute\n );\n return !!location;\n })\n .forEach((item) => {\n heatmap\n .getSource()\n ?.addFeature(\n WidgetMapUtils.getFeatureFromItem(\n map.getView().getProjection(),\n item,\n 'heatpoint',\n attributesForClass[item.oClass].locationAttribute\n )\n );\n });\n });\n\n return heatmap as BaseLayer;\n },\n marker: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const vectorLayer = new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .filter((item) => {\n const location = WidgetMapUtils.readGeometry(\n map.getView().getProjection(),\n item,\n 'point',\n attributesForClass[item.oClass].locationAttribute\n );\n return !!location;\n })\n .forEach(async (item): Promise<void> => {\n const itemFeature = WidgetMapUtils.getFeatureFromItem(\n map.getView().getProjection(),\n item,\n 'marker',\n attributesForClass[item.oClass].locationAttribute,\n itemStyles[item.id]?.classic,\n itemStyles[item.id]?.bordered\n );\n itemFeature.setStyle(itemFeature.get('classicStyle'));\n vectorLayer.getSource()?.addFeature(itemFeature);\n });\n });\n\n return this.makeClustered(vectorLayer, layer);\n },\n point: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'point'\n );\n },\n line: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'line'\n );\n },\n 'multi-line': (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'multi-line'\n );\n },\n polygon: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'polygon'\n );\n },\n 'multi-polygon': (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'multi-polygon'\n );\n },\n bubble: (\n layer: MapWidgetBubbleLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const bubbleLayer = new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .filter((item) => {\n const location = WidgetMapUtils.readGeometry(\n map.getView().getProjection(),\n item,\n 'point',\n attributesForClass[item.oClass].locationAttribute\n );\n return !!location;\n })\n .forEach((item) => {\n const value = ItemUtils.getAttributeCalculatedValue(\n item,\n attributesForClass[item.oClass].intensityAttribute\n ) as number;\n const atScale = (value - range.min) / (range.max - range.min);\n const itemFeature = WidgetMapUtils.getCircleFeatureFromItem(\n map.getView().getProjection(),\n item,\n attributesForClass[item.oClass].locationAttribute,\n (layer.intensityAsc ? atScale : 1 - atScale) *\n (layer.radiusFactor ?? WidgetMapUtils.DEFAULT_RADIUS_INTENSITY_FACTOR),\n this.circleStyle,\n this.selectedCircleStyle\n );\n itemFeature.setStyle(itemFeature.get('classicStyle'));\n bubbleLayer.getSource()?.addFeature(itemFeature);\n });\n });\n\n return bubbleLayer;\n },\n relation: (\n layer: MapWidgetRelationLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n },\n wms: (\n layer: MapWMSLayerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const impl =\n layer.paramTiled === undefined || layer.paramTiled\n ? new Tile({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new TileWMS({\n attributions: [layer.attribution ?? ''],\n crossOrigin: 'anonymous',\n url: layer.url,\n tileLoadFunction: (tile: any, str: string) => this.geoAuthService?.customLoader(tile, str),\n params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled, ...(layer.additionalParameters ?? {}) }\n })\n })\n : new ImageLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new ImageWMS({\n attributions: [layer.attribution ?? ''],\n crossOrigin: 'anonymous',\n url: layer.url,\n imageLoadFunction: (tile: any, str: string) => this.geoAuthService?.customLoader(tile, str),\n params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled, ...(layer.additionalParameters ?? {}) }\n })\n });\n impl.set('url', layer.url);\n impl.set('paramLayer', layer.paramLayer);\n impl.set('oClass', layer.oClass);\n impl.set('getFeatureInfoAdditionalParameters', layer.getFeatureInfoAdditionalParameters ?? {});\n return impl;\n },\n wmts: (\n layer: MapWMTSLayerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const projection = map.getView().getProjection();\n const projectionExtent = projection.getExtent();\n const size = getWidth(projectionExtent) / 256;\n const resolutions = new Array(19);\n const matrixIds = new Array(19);\n for (let z = 0; z < 19; ++z) {\n // generate resolutions and matrixIds arrays for this WMTS\n resolutions[z] = size / Math.pow(2, z);\n matrixIds[z] = z;\n }\n return new Tile({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new WMTS({\n attributions: [layer.attribution ?? ''],\n crossOrigin: 'anonymous',\n url: layer.url,\n layer: layer.paramLayer,\n matrixSet: layer.matrixSet,\n projection,\n tileGrid: new WMTSTileGrid({\n origin: getTopLeft(projectionExtent),\n resolutions: resolutions,\n matrixIds: matrixIds\n }),\n style: layer.style\n })\n });\n },\n geoserver: (\n layer: MapGeoServerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const impl = this.layersImplementation['wms'](\n { ...layer, type: 'wms', oClass: layer.oClass },\n attributesForClass,\n layerClassesId,\n resultSet,\n range,\n itemStyles,\n map\n );\n impl.set('title', layer.title);\n impl.set('oClass', layer.oClass);\n impl.set('datasourceId', layer.datasourceId);\n impl.set('geomPropName', layer.geomPropName);\n return impl;\n },\n featurelayer: (\n layer: MapFeatureLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({\n attributions: [layer.attribution ?? ''],\n format: new GeoJSON(),\n url: layer.url\n })\n });\n },\n vectortile: (\n layer: MapVectorTileLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new VectorTileLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorTile({\n attributions: [layer.attribution ?? ''],\n format: new MVT(),\n url: layer.url\n })\n });\n },\n rastertile: (\n layer: MapRasterTileLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new Tile({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new XYZ({\n url: layer.url,\n attributions: [layer.attribution ?? '']\n })\n });\n }\n };\n\n private layerFromGeoJsonGeometry(\n projection: ProjectionLike,\n layer: MapWidgetMarkerLayerOptions,\n layerClassesId: string[],\n resultSet: ResultSet,\n attributesForClass: AttributesForClass,\n type: 'point' | 'line' | 'multi-line' | 'polygon' | 'multi-polygon'\n ) {\n const vectorLayer = new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .map((item) => ({\n item,\n location: WidgetMapUtils.readGeometry(\n projection,\n item,\n type,\n attributesForClass[item.oClass].locationAttribute\n )\n }))\n .filter(({ location }) => !!location)\n .forEach(async (subItem): Promise<void> => {\n const itemFeature = new Feature({\n ...subItem.item,\n type,\n geometry: subItem.location ?? undefined,\n classicStyle: type === 'point' ? this.pointStyle : this.circleStyle,\n selectedStyle: type === 'point' ? this.selectedPointStyle : this.selectedCircleStyle\n });\n itemFeature.setStyle(itemFeature.get('classicStyle'));\n vectorLayer.getSource()?.addFeature(itemFeature);\n });\n });\n\n return this.makeClustered(vectorLayer, layer);\n }\n\n private makeClustered(layer: BaseLayer, layerOptions: MapWidgetLayerOptions) {\n if (!['marker', 'bubble'].includes(layerOptions.type) || !('clustered' in layerOptions && layerOptions.clustered)) {\n return layer;\n }\n // Clustering source\n const vectorLayer = layer as VectorLayer<VectorSource<Geometry>>;\n vectorLayer.setSource(\n new Cluster({\n distance: layerOptions.clusterDistance,\n minDistance: 10,\n source: vectorLayer.getSource() as VectorSource\n })\n );\n\n vectorLayer.setStyle((feature) => {\n const size = feature.get('features').length;\n if (size > 1) {\n let style = this.styleCache[size];\n if (!style) {\n style = new Style({\n image: new CircleStyle({\n radius: 10,\n stroke: new Stroke({\n color: '#fff'\n }),\n fill: new Fill({\n color: '#3399CC'\n })\n }),\n text: new Text({ text: `${size}` })\n });\n this.styleCache[size] = style;\n }\n return style;\n } else {\n return size === 1 ? feature.get('features')[0].get('classicStyle') : null;\n }\n });\n\n return layer;\n }\n\n static translateFieldTypeToLayerType(subType: string) {\n switch (subType) {\n case FieldType.POINT:\n return 'marker';\n case FieldType.LINE:\n return 'line';\n case FieldType.POLYGON:\n return 'polygon';\n case FieldType.MULTILINE:\n return 'multi-line';\n case FieldType.MULTIPOLYGON:\n return 'multi-polygon';\n default:\n console.warn(`wrong type ${subType} for auto options`);\n return 'marker';\n }\n }\n}\n","import {\n AggregationResult,\n Attribute,\n Class,\n DEFAULT_PROJECTION,\n Field,\n FieldType,\n GetCapabilitiesResponse,\n Item,\n ItemUtils,\n MapGeoServerLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n Relation,\n ResultSet\n} from '@provoly/dashboard';\nimport { Feature, Map } from 'ol';\nimport { Circle, LineString, Point } from 'ol/geom';\nimport { Style } from 'ol/style';\nimport { WidgetMapLayerService } from '../component/widget-map-layer.service';\nimport { get as getProjection, ProjectionLike, transform } from 'ol/proj';\nimport Geometry from 'ol/geom/Geometry';\nimport { GeoJSON } from 'ol/format';\nimport { XMLUtils } from './xml-utils.class';\n\nexport class WidgetMapUtils {\n static geoJSON = new GeoJSON();\n static populateLocationAttribute(\n layer: MapWidgetLayerOptions,\n resultSet: ResultSet,\n classesNotFiltered: Class[],\n fields: Field[]\n ) {\n if (\n ['heatmap', 'marker', 'bubble', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon', 'auto'].includes(\n layer.type\n ) &&\n !!resultSet &&\n !!classesNotFiltered &&\n classesNotFiltered.length > 0\n ) {\n const specificLayer = layer as\n | MapWidgetHeatMapLayerOptions\n | MapWidgetMarkerLayerOptions\n | MapWidgetBubbleLayerOptions;\n\n const classes = classesNotFiltered.filter(\n (cl) => specificLayer.classes?.includes(cl.id) || !specificLayer.classes || specificLayer.classes.length === 0\n );\n\n if (!specificLayer.attribute) {\n // No location attribute available, then try to guess one that will be ok\n\n const geometry = WidgetMapUtils.geometryForLayer(layer);\n\n let candidates: Attribute[] = [];\n if (Object.keys(resultSet.items).length > 0) {\n // Based on items that we have to display\n\n candidates = Object.keys(resultSet.items)\n .map((key) => ({ items: resultSet.items[key], oClass: classes.find((cl) => cl.id === key) }))\n .map(({ items, oClass }) =>\n (oClass ?? { attributes: [] }).attributes.filter((attr) => attr.field?.type === geometry)\n )\n .reduce((p, c) => [...p, ...c], []);\n } else {\n // We don't have any items to display, so allow all corresponding geometry fields\n candidates = classesNotFiltered\n .map((clazz) => clazz.attributes)\n .flat()\n .filter((attr) => attr.field.type === geometry);\n }\n\n if (candidates.length > 0) {\n specificLayer.attribute = candidates[0].technicalName;\n }\n }\n }\n }\n\n static populateIntensityAttribute(\n layer: MapWidgetLayerOptions,\n resultSet: ResultSet,\n classesNotFiltered: Class[],\n fields: Field[]\n ) {\n if (\n ['heatmap', 'bubble'].includes(layer.type) &&\n !!resultSet &&\n !!classesNotFiltered &&\n classesNotFiltered.length > 0\n ) {\n const specificLayer = layer as MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions;\n\n const classes = classesNotFiltered.filter(\n (cl) =>\n (specificLayer.classes?.includes(cl.id) || !specificLayer.classes || specificLayer.classes.length === 0) &&\n cl.attributes.find((attr) => attr.technicalName === (specificLayer?.attribute ?? []))\n );\n\n if (!specificLayer.intensityAttribute) {\n // No intensity attribute available, then take the maximum intensity matching attribute\n const candidatesDry = Object.keys(resultSet.items)\n .map((key) => ({ items: resultSet.items[key], oClass: classes.find((cl) => cl.id === key) }))\n .map(({ items, oClass }) => {\n return (oClass ?? { attributes: [] }).attributes\n .filter((attr) => attr.field?.type === FieldType.DECIMAL || attr.field?.type === FieldType.INTEGER)\n .map((attr) => {\n const attrValues = ItemUtils.pertinentValue(items, attr);\n return {\n min: Math.min(...attrValues),\n max: Math.max(...attrValues),\n technicalName: attr.technicalName\n };\n });\n })\n .reduce((p, c) => [...p, ...c], [])\n .sort((a, b) => b.max - a.max);\n\n if (candidatesDry.length > 0) {\n specificLayer.intensityAttribute = candidatesDry[0].technicalName;\n specificLayer.intensityAsc = true;\n }\n }\n }\n }\n\n static getFeatureFromItem(\n projection: ProjectionLike,\n item: Item,\n type: string,\n locationAttribute: Attribute,\n iconStyle?: Style,\n selectedIconStyle?: Style\n ) {\n return new Feature({\n ...item,\n type,\n geometry: WidgetMapUtils.readGeometry(projection, item, 'point', locationAttribute) ?? undefined,\n classicStyle: iconStyle ?? null,\n selectedStyle: selectedIconStyle ?? null\n });\n }\n\n static getCircleFeatureFromItem(\n projection: ProjectionLike,\n item: Item,\n locationAttribute: Attribute,\n radius: number,\n iconStyle: Style,\n selectedIconStyle: Style\n ) {\n return new Feature({\n ...item,\n geometry: new Circle(\n (WidgetMapUtils.readGeometry(projection, item, 'point', locationAttribute) as Point).getCoordinates(),\n radius\n ),\n classicStyle: iconStyle,\n selectedStyle: selectedIconStyle,\n type: 'bubble'\n });\n }\n\n static getLinkFeature(relation: Relation, featureSource: Feature<Point>, featureDestination: Feature<Point>) {\n return new Feature({\n ...relation,\n geometry: new LineString([\n // @ts-ignore\n featureSource.getGeometry()?.getCoordinates() ?? featureSource.getGeometry()?.getCenter() ?? [0, 0],\n // @ts-ignore\n featureDestination.getGeometry()?.getCoordinates() ?? featureDestination.getGeometry()?.getCenter() ?? [0, 0]\n ]),\n source: featureSource,\n destination: featureDestination,\n type: 'link'\n });\n }\n\n static getMapAsPng(map: Map) {\n return new Promise<string>((resolve, reject) => {\n map.once('rendercomplete', function () {\n const mapCanvas = document.createElement('canvas');\n const size = map.getSize() || [100, 100];\n mapCanvas.width = size[0];\n mapCanvas.height = size[1];\n const mapContext = mapCanvas.getContext('2d') || (null as unknown as CanvasRenderingContext2D);\n Array.prototype.forEach.call(document.querySelectorAll('.ol-layer canvas, canvas.ol-layer'), (canvas) => {\n if (canvas.width > 0) {\n const opacity = canvas.parentNode.style.opacity || canvas.style.opacity;\n mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\n\n const backgroundColor = canvas.parentNode.style.backgroundColor;\n if (backgroundColor) {\n mapContext.fillStyle = backgroundColor;\n mapContext.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n let matrix;\n const transform = canvas.style.transform;\n if (transform) {\n // Get the transform parameters from the style's transform matrix\n matrix = transform\n .match(/^matrix\\(([^(]*)\\)$/)[1]\n .split(',')\n .map(Number);\n } else {\n matrix = [\n parseFloat(canvas.style.width) / canvas.width,\n 0,\n 0,\n parseFloat(canvas.style.height) / canvas.height,\n 0,\n 0\n ];\n }\n // Apply the transform to the export map context\n CanvasRenderingContext2D.prototype.setTransform.apply(mapContext, matrix);\n mapContext.drawImage(canvas, 0, 0);\n }\n });\n mapContext.globalAlpha = 1;\n resolve(mapCanvas.toDataURL('image/png'));\n });\n map.renderSync();\n });\n }\n\n static exportMapAsImage(map: Map, filename: string) {\n WidgetMapUtils.getMapAsPng(map).then((data) => {\n const link = document.createElement('a');\n link.download = filename;\n link.href = data;\n link.click();\n });\n }\n\n static geometryForLayer(layer: MapWidgetLayerOptions): string {\n switch (layer.type) {\n case 'marker':\n case 'heatmap':\n case 'bubble':\n case 'point':\n return FieldType.POINT;\n case 'line':\n return FieldType.LINE;\n case 'polygon':\n return FieldType.POLYGON;\n case 'multi-line':\n return FieldType.MULTILINE;\n case 'multi-polygon':\n return FieldType.MULTIPOLYGON;\n case 'auto':\n return WidgetMapUtils.geometryForLayer({\n type: WidgetMapLayerService.translateFieldTypeToLayerType(layer.subType)\n } as MapWidgetLayerOptions);\n default:\n return FieldType.POINT;\n }\n }\n\n static assignLayersOrder(_layers: MapWidgetLayerOptions[]) {\n const layers = structuredClone(_layers) as MapWidgetLayerOptions[];\n\n layers.sort((l1, l2) => (l2.background ? 0 : 1) - (l1.background ? 0 : 1));\n\n // Assign sure things\n layers.forEach((layer, index) => {\n if (layer.background) {\n layer.order = WidgetMapUtils.BACKGROUND_ORDER;\n }\n if (index === 0 && !layer.order) {\n layer.order = 0;\n }\n });\n\n layers.forEach((layer, index) => {\n if (layer.order === undefined) {\n let [distanceToFirstPreviousOrder, distanceToFirstNextOrder] = [\n layers\n .slice(0, index)\n .reverse()\n .findIndex((element) => element.order !== undefined) + 1,\n layers.slice(index + 1).findIndex((element) => element.order !== undefined)\n ];\n\n let [previousOrderIndex, nextOrderIndex] = [\n distanceToFirstPreviousOrder > -1 ? index - distanceToFirstPreviousOrder : 0,\n distanceToFirstNextOrder + index + 1\n ];\n let [previousOrder, nextOrder] = [\n distanceToFirstPreviousOrder > -1 ? layers[previousOrderIndex].order! : 0,\n distanceToFirstNextOrder > -1 ? layers[nextOrderIndex].order! : -1\n ];\n\n if (nextOrder > 0 && nextOrder < previousOrder) {\n const newOrder = previousOrder + (nextOrderIndex - previousOrderIndex);\n console.warn(\n `the order property of layer no ${index + 2} was preset but doesn't follow the order of the other layers`\n );\n nextOrder = newOrder;\n }\n\n if (nextOrder > 0) {\n let relativeIndex = index - previousOrderIndex;\n layer.order =\n previousOrder + ((nextOrder - previousOrder) / (nextOrderIndex - previousOrderIndex)) * relativeIndex;\n } else {\n layer.order = previousOrder + distanceToFirstPreviousOrder;\n }\n }\n });\n\n return layers.sort((l1, l2) => (l1.order ?? 1) - (l2.order! ?? 1));\n }\n\n static readGeometry<T extends 'point' | 'line' | 'multi-line' | 'polygon' | 'multi-polygon'>(\n projection: ProjectionLike,\n item: Item,\n type: T,\n attribute: Attribute | undefined\n ) {\n if (!attribute) {\n // @ts-ignore\n return null;\n }\n\n let value = item.attributes[attribute.technicalName];\n if (!value) {\n console.warn(`Geometry attribute excluded for item ${item.id}`);\n return;\n }\n if (value.type === 'MULTI') {\n value = value.values[0];\n }\n\n if (value.visible === false) {\n console.warn(`Geometry not visible for item ${item.id}`);\n return;\n }\n\n let geometry;\n try {\n geometry = WidgetMapUtils.geoJSON.readGeometry(value.value as any, {\n featureProjection: projection\n }) as Geometry;\n } catch (e) {\n console.warn('error reading Geometry', value.value, e);\n }\n\n return geometry;\n }\n\n static projectExtentAggregationResponse(\n field: Field,\n extentResponse: AggregationResult,\n layer: MapGeoServerLayerOptions,\n wmsCapabilities: { [p: string]: GetCapabilitiesResponse | null } | undefined,\n map: Map\n ) {\n const projBox = getProjection(field!.crs ?? DEFAULT_PROJECTION);\n const response = extentResponse.values as {\n value: {\n top_left: {\n lon: string;\n lat: string;\n };\n bottom_right: {\n lon: string;\n lat: string;\n };\n };\n }[];\n if (\n projBox &&\n response.length > 0 &&\n response[0].value &&\n response[0].value.top_left &&\n response[0].value.top_left.lat !== undefined &&\n response[0].value.top_left.lon !== undefined &&\n response[0].value.bottom_right &&\n response[0].value.bottom_right.lat !== undefined &&\n response[0].value.bottom_right.lon !== undefined\n ) {\n return {\n datasource: layer.datasourceId,\n error: false,\n extent: [\n transform(\n [\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n top_left: {\n lon: string;\n };\n };\n }\n ).value.top_left.lon\n ),\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n top_left: {\n lat: string;\n };\n };\n }\n ).value.top_left.lat\n )\n ],\n projBox,\n map.getView().getProjection()\n ),\n transform(\n [\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n bottom_right: {\n lon: string;\n };\n };\n }\n ).value.bottom_right.lon\n ),\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n bottom_right: {\n lat: string;\n };\n };\n }\n ).value.bottom_right.lat\n )\n ],\n projBox,\n map.getView().getProjection()\n )\n ]\n };\n }\n\n return {\n datasource: layer.datasourceId,\n extent: XMLUtils.getLayerExtent(layer.paramLayer, map, wmsCapabilities![layer.url]?.doc) ?? [],\n error: false\n };\n }\n\n static DEFAULT_HEATMAP_RADIUS = 25;\n static DEFAULT_RADIUS_INTENSITY_FACTOR = 10000;\n static DEFAULT_ZOOM_MIN = 3;\n static DEFAULT_ZOOM_START = 10;\n static DEFAULT_ZOOM_MAX = 18;\n static DEFAULT_MAP_CENTER = [2.2827217347381525, 48.864706031557716];\n\n static BACKGROUND_ORDER = 9999;\n}\n","import { Map } from 'ol';\nimport RenderEvent from 'ol/render/Event';\nimport { getRenderPixel } from 'ol/render';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport { Heatmap } from 'ol/layer';\n\nexport class LayerSlider {\n map!: Map;\n slider!: HTMLInputElement;\n\n init(map: Map, slider: HTMLInputElement) {\n this.map = map;\n this.slider = slider;\n return this;\n }\n\n applySlide(type: 'left' | 'right' | 'all', layer: TileLayer<any> | VectorLayer<any> | Heatmap) {\n layer.on('prerender', (event: RenderEvent) => {\n const mapSize = this.map.getSize();\n if (mapSize) {\n if (event.context instanceof CanvasRenderingContext2D) {\n const width = mapSize[0] * (parseFloat(this.slider.value) / 100);\n let tl = getRenderPixel(event, [0, 0]);\n let tr = getRenderPixel(event, [width, 0]);\n let bl = getRenderPixel(event, [0, mapSize[1]]);\n let br = getRenderPixel(event, [width, mapSize[1]]);\n if (type === 'right') {\n tl = getRenderPixel(event, [width, 0]);\n tr = getRenderPixel(event, [mapSize[0], 0]);\n bl = getRenderPixel(event, [width, mapSize[1]]);\n br = getRenderPixel(event, mapSize);\n }\n const ctx = event.context as CanvasRenderingContext2D;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(tl[0], tl[1]);\n ctx.lineTo(bl[0], bl[1]);\n ctx.lineTo(br[0], br[1]);\n ctx.lineTo(tr[0], tr[1]);\n ctx.closePath();\n ctx.clip();\n } else {\n const gl = event.context as unknown as WebGL2RenderingContext;\n const bottomLeft = getRenderPixel(event, [0, mapSize[1]]);\n const topRight = getRenderPixel(event, [mapSize[0], 0]);\n const leftWidth = (topRight[0] - bottomLeft[0]) * (parseFloat(this.slider.value) / 100);\n const rightWidth = (topRight[0] - bottomLeft[0]) * (1 - parseFloat(this.slider.value) / 100);\n const height = topRight[1] - bottomLeft[1];\n gl.enable(gl.SCISSOR_TEST);\n if (type === 'right') {\n gl.scissor(bottomLeft[0] + leftWidth, bottomLeft[1], rightWidth, height);\n } else {\n gl.scissor(bottomLeft[0], bottomLeft[1], leftWidth, height);\n }\n }\n }\n });\n layer.on('postrender', (event) => {\n if (event.context instanceof CanvasRenderingContext2D) {\n const ctx = event.context as CanvasRenderingContext2D;\n ctx.restore();\n } else {\n const gl = event.context as WebGL2RenderingContext;\n gl.disable(gl.SCISSOR_TEST);\n }\n });\n }\n}\n","import { Pixel } from 'ol/pixel';\nimport { ComponentRef, ElementRef, Injector, ViewContainerRef } from '@angular/core';\nimport {\n BaseTooltipComponent,\n DashboardActions,\n DashboardSelectors,\n MapGeoServerLayerOptions,\n Size,\n TooltipFactoryService,\n TooltipMode,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, debounceTime, Observable, Subscription, withLatestFrom } from 'rxjs';\nimport { Feature, Map, MapBrowserEvent, Overlay } from 'ol';\nimport { Store } from '@ngrx/store';\nimport { TOOLTIP_PADDING, WidgetMapComponent } from '../component/widget-map.component';\nimport { InteractionManager } from './interaction-manager.class';\nimport { Layer } from 'ol/layer';\nimport { Coordinate } from 'ol/coordinate';\n\nexport class TooltipManager {\n private tooltipFactoryService!: TooltipFactoryService;\n private injector!: Injector;\n private store!: Store;\n wmsFeatures$!: Observable<any[]>;\n classicFeatures$: BehaviorSubject<any> = new BehaviorSubject([]);\n popupOverlay?: Overlay;\n map!: Map;\n popup!: ElementRef;\n popupContent!: ViewContainerRef;\n public tooltipNumber = 0;\n interactionManager!: InteractionManager;\n previousTooltip?: ComponentRef<BaseTooltipComponent>;\n previousTooltipSub?: Subscription;\n public tooltipEvent?: MapBrowserEvent<MouseEvent>;\n parent!: WidgetMapComponent;\n interactionPopupOverlay!: Overlay;\n tooltipDisplayedIndex$ = new BehaviorSubject(0);\n private calculatedTooltipPosition?: Coordinate;\n\n init(\n tooltipFactoryService: TooltipFactoryService,\n injector: Injector,\n store: Store,\n subscriptions: Subscription,\n widgetSize$: Observable<Size>,\n displayHeader$: Observable<boolean | { [p: string]: boolean }>,\n map: Map,\n popup: ElementRef,\n popupContent: ViewContainerRef,\n interactionManager: InteractionManager,\n parent: WidgetMapComponent\n ) {\n this.tooltipFactoryService = tooltipFactoryService;\n this.injector = injector;\n this.store = store;\n this.parent = parent;\n this.map = map;\n this.popupContent = popupContent;\n this.popup = popup;\n this.interactionManager = interactionManager;\n this.wmsFeatures$ = this.store.select(DashboardSelectors.wmsFeatures(this.parent.id));\n\n subscriptions.add(\n combineLatest([this.wmsFeatures$, this.classicFeatures$, this.tooltipDisplayedIndex$])\n .pipe(debounceTime(50), withLatestFrom(widgetSize$, displayHeader$))\n .subscribe(([[wmsFeatures, classicFeatures, tooltipIndex], size, header]) => {\n if (map) {\n if (this.popupOverlay !== null) {\n this.clearTooltip();\n }\n this.popupOverlay = new Overlay({\n element: popup.nativeElement,\n offset: [9, 9]\n });\n this.map.addOverlay(this.popupOverlay);\n\n const allTooltipValues = [...wmsFeatures, ...classicFeatures.map((cf: any) => cf.values)];\n\n if (allTooltipValues[tooltipIndex]) {\n this.popupContent.clear();\n\n this.generateTooltip(allTooltipValues[tooltipIndex]).then((component) => {\n this.tooltipNumber = allTooltipValues.length;\n if (!component) {\n popup.nativeElement.hidden = true;\n this.popupOverlay?.setPosition([-9999999999, -9999999999]);\n } else {\n popup.nativeElement.hidden = false;\n // Do not go outside the map\n const rect = {\n height: 200 + (header ? WIDGET_HEADER_HEIGHT.value : 0) + TOOLTIP_PADDING,\n width: 300 + TOOLTIP_PADDING\n };\n if (!this.calculatedTooltipPosition) {\n let pixel = this.tooltipEvent?.pixel;\n if (!!pixel && pixel[0] + rect.width > size.width) {\n pixel[0] = size.width - rect.width;\n }\n if (!!pixel && pixel[1] + rect.height > size.height) {\n pixel[1] = size.height - rect.height;\n }\n this.calculatedTooltipPosition = this.map.getCoordinateFromPixel(pixel ?? [0, 0]);\n }\n this.popupOverlay?.setPosition(this.calculatedTooltipPosition);\n }\n });\n }\n }\n })\n );\n\n window.addEventListener('forceCloseMapTooltip', () => {\n this.clearTooltip();\n });\n\n this.addOverlayOnInteraction();\n\n return this;\n }\n\n private addOverlayOnInteraction() {\n if (!this.interactionPopupOverlay) {\n this.interactionPopupOverlay = new Overlay({\n element: this.popup.nativeElement,\n offset: [9, 9]\n });\n this.map.addOverlay(this.interactionPopupOverlay);\n }\n\n const popupListener = (event: MapBrowserEvent<MouseEvent>) => {\n const values = this.map.getFeaturesAtPixel(event.pixel, { hitTolerance: 5 });\n const valuesToDisplay = [...new Set(values.map((value) => value.get('id')).filter((id) => !!id))]\n .map((id) => values.find((value) => value.get('id') === id))\n .map((value) => ({\n oClass: value?.get('oClass'),\n coordinates: event.coordinate,\n values:\n value instanceof Feature ? value.getKeys().reduce((p, c) => ({ ...p, [c]: value?.get(c) }), {}) : undefined\n }))\n .filter((value) => value.oClass);\n this.classicFeatures$.next(valuesToDisplay);\n const wmsLayers = this.parent.getWMSLayers();\n if (wmsLayers) {\n this.getFeatureFromServer(wmsLayers, event.coordinate);\n }\n this.tooltipEvent = event;\n this.calculatedTooltipPosition = undefined;\n this.tooltipDisplayedIndex$.next(0);\n };\n\n if (this.parent.optionsCopy.tooltipMode !== TooltipMode.NONE) {\n this.parent.map.un('singleclick', popupListener);\n this.parent.map.on('singleclick', popupListener);\n }\n }\n\n generateTooltip(value: {\n oClass: string;\n coordinates: Pixel;\n values: any;\n }): Promise<ComponentRef<BaseTooltipComponent> | null> {\n if (value) {\n return new Promise((resolve) => {\n const component$ = this.tooltipFactoryService.generateTooltip(value.oClass, this.injector, this.popupContent);\n this.previousTooltipSub?.unsubscribe();\n this.previousTooltipSub = component$.subscribe((component) => {\n if (component) {\n if (this.previousTooltip) {\n this.previousTooltip.destroy();\n }\n component.instance.data.item = value;\n component.instance.popup = this.popup;\n resolve(component);\n }\n resolve(null);\n });\n });\n } else {\n return Promise.resolve(null);\n }\n }\n\n public clearTooltip(empty = false) {\n if (this.popupOverlay) this.map?.removeOverlay(this.popupOverlay);\n this.popupContent?.clear();\n this.previousTooltip?.destroy();\n this.previousTooltipSub?.unsubscribe();\n if (empty) {\n this.store.dispatch(DashboardActions.resetWmsFeatures({ componentId: this.parent.id }));\n this.classicFeatures$.next([]);\n }\n }\n\n public tooltipMove(number: number) {\n if (this.tooltipCanMove(number)) {\n this.tooltipDisplayedIndex$.next(this.tooltipDisplayedIndex$.getValue() + number);\n }\n }\n\n public tooltipCanMove(number: number) {\n return (\n this.tooltipDisplayedIndex$.getValue() + number >= 0 &&\n this.tooltipDisplayedIndex$.getValue() + number < this.tooltipNumber\n );\n }\n\n getFeatureFromServer(wmsLayers: Layer<any>[], pixel: Pixel) {\n for (const layer of wmsLayers) {\n let url = layer\n .getSource()\n .getFeatureInfoUrl(pixel, this.map.getView().getResolution(), this.map.getView().getProjection(), {\n INFO_FORMAT: 'application/json',\n FEATURE_COUNT: 10,\n ...layer.getProperties()['getFeatureInfoAdditionalParameters'],\n cql_filter: layer.getSource().getParams()['cql_filter']\n });\n if (\n (\n this.parent.optionsCopy.layers?.find((l) => {\n return l.title === layer.getProperties()['title'];\n }) as MapGeoServerLayerOptions\n )?.getWfsFeaturesForTooltips\n ) {\n this.store.dispatch(\n DashboardActions.getWfsFeaturesForPointStackTooltips({\n url,\n oClass: layer.getProperties()['oClass'] ?? '',\n coordinates: pixel,\n componentId: this.parent.id,\n geomPropName: layer.getProperties()['geomPropName']\n })\n );\n } else {\n if (url && url.indexOf('I=-1') === -1 && url.indexOf('J=-1') === -1) {\n this.store.dispatch(\n DashboardActions.getWmsFeatures({\n url,\n oClass: layer.getProperties()['oClass'] ?? '',\n coordinates: pixel,\n componentId: this.parent.id\n })\n );\n }\n }\n }\n }\n\n destroy() {\n this.store.dispatch(DashboardActions.resetWmsFeatures({ componentId: this.parent.id }));\n this.previousTooltipSub?.unsubscribe();\n this.previousTooltip?.destroy();\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-map-css',\n template: '',\n styleUrls: ['./_o-widget-map.scss', './_m-layer-legend.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetMapCssComponent {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassSelectors,\n Field,\n FieldSelectors,\n MapWidgetBubbleLayerOptions,\n MapWidgetGeometryLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable } from 'rxjs';\nimport { WidgetMapUtils } from '../utils/widget-map.utils';\n\n@Pipe({\n name: 'geometryFieldsFor'\n})\nexport class GeometryFieldsForPipe implements PipeTransform {\n classes$: Observable<Class[]>;\n fields$: Observable<Field[]>;\n\n constructor(private store: Store<any>) {\n this.classes$ = this.store\n .select(ClassSelectors.classes)\n .pipe(map((classes) => classes.sort((a, b) => a.name.localeCompare(b.name))));\n this.fields$ = this.store.select(FieldSelectors.fields);\n }\n\n transform(value: MapWidgetLayerOptions, ...args: any[]): Observable<Attribute[]> {\n const specificLayer = value as\n | MapWidgetHeatMapLayerOptions\n | MapWidgetMarkerLayerOptions\n | MapWidgetBubbleLayerOptions\n | MapWidgetGeometryLayerOptions;\n\n const limitToClasses = args[0].classes as string[];\n const type = WidgetMapUtils.geometryForLayer({ type: args[0].type });\n\n return combineLatest([this.classes$, this.fields$]).pipe(\n filter(([classes, fields]) => !!classes && !!fields && classes.length > 0 && fields.length > 0),\n map(([classes, fields]) => {\n const potentialFields = classes\n .map((cl) => cl.id)\n .filter(\n (oClassId) =>\n !specificLayer.classes ||\n specificLayer.classes.length === 0 ||\n !!specificLayer.classes?.find((cl) => oClassId === cl)\n )\n .filter((classId) => !limitToClasses || limitToClasses.length === 0 || limitToClasses.includes(classId))\n .map((oClassId) => classes.find((cl) => cl.id === oClassId) ?? { attributes: [] as Attribute[] })\n .map((oClass) => oClass.attributes)\n .reduce((prev, curr) => [...prev, ...curr], [])\n .filter((attr) => attr.field.type === type)\n .sort((a, b) => a.technicalName.localeCompare(b.technicalName));\n\n const resArr = [] as Attribute[];\n potentialFields.forEach(function (attr) {\n if (resArr.findIndex((x) => x.technicalName == attr.technicalName) <= -1) {\n resArr.push(attr);\n }\n });\n return resArr;\n })\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GetCapabilitiesResponse, MapGeoServerLayerOptions, MapWMSLayerLayerOptions } from '@provoly/dashboard';\nimport { XMLUtils } from '../utils/xml-utils.class';\n\n@Pipe({\n name: 'legendUrl'\n})\nexport class WidgetMapLegendUrlPipe implements PipeTransform {\n constructor() {}\n\n parser = new DOMParser();\n\n transform(\n geoLayer: MapGeoServerLayerOptions | MapWMSLayerLayerOptions,\n ...args: [{ capabilities: { [p: string]: GetCapabilitiesResponse | null } | undefined | null }]\n ): string {\n const capability = (args[0].capabilities ?? {})[geoLayer.url];\n if (capability) {\n const matchingLayer = XMLUtils.getMatchingLayer(geoLayer.paramLayer, capability.doc);\n if (matchingLayer) {\n const styles = XMLUtils.findAll(matchingLayer.childNodes, 'Style');\n if (geoLayer.additionalParameters && geoLayer.additionalParameters['STYLES'] !== undefined) {\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n const styleName = XMLUtils.find(style.childNodes, 'Name')?.textContent ?? '--';\n if (styleName === geoLayer.additionalParameters['STYLES']) {\n return this.returnStyleForLayer(style);\n }\n }\n } else {\n return this.returnStyleForLayer(styles[0]);\n }\n }\n }\n return '';\n }\n\n returnStyleForLayer(style: ChildNode): string {\n const legendUrl = XMLUtils.find(style.childNodes, 'LegendURL');\n if (legendUrl) {\n const resource = XMLUtils.find(legendUrl.childNodes, 'OnlineResource');\n if (resource) {\n // @ts-ignore\n return decodeURIComponent(resource.getAttribute('xlink:href')) + '&LEGEND_OPTIONS=forceLabels:on';\n }\n }\n return '';\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Inject,\n Injector,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n AggregationResult,\n Attribute,\n BaseWidgetMapLayerOptions,\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n ConfigSelectors,\n DashboardActions,\n DashboardSelectors,\n Dataset,\n DataSourceSelectors,\n DatasourceUtils,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FilterContext,\n GeoMetadata,\n GeometricFieldTypes,\n GetCapabilitiesResponse,\n ItemUtils,\n LayerGroup,\n MapAutoLayerOptions,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\n NamedQueryTypes,\n Operation,\n PRY_GEOAUTH_TOKEN,\n PryAggregationService,\n PryGeoAuthService,\n PryI18nService,\n ResultsetUtils,\n SymbolService,\n TooltipFactoryService,\n TooltipMode,\n WIDGET_HEADER_HEIGHT,\n widgetMapConfig\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { Feature, Map, View } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\nimport { boundingExtent, createEmpty } from 'ol/extent';\nimport { Circle, Geometry, Point } from 'ol/geom';\nimport { Heatmap, Layer, Tile } from 'ol/layer';\nimport BaseLayer from 'ol/layer/Base';\nimport VectorLayer from 'ol/layer/Vector';\nimport { fromLonLat } from 'ol/proj';\nimport { register } from 'ol/proj/proj4';\nimport { DataTile, ImageWMS, TileWMS } from 'ol/source';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\nimport proj4 from 'proj4';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n delay,\n distinctUntilChanged,\n filter,\n from,\n fromEvent,\n map,\n mergeMap,\n Observable,\n of,\n startWith,\n switchMap,\n withLatestFrom\n} from 'rxjs';\nimport { InteractionManager } from '../interaction/interaction-manager.class';\nimport { CqlUtils } from '../utils/cql-utils.class';\nimport { XMLUtils } from '../utils/xml-utils.class';\nimport { WidgetMapLayerService } from './widget-map-layer.service';\nimport MapboxVectorLayer from 'ol/layer/MapboxVector';\nimport { WidgetMapUtils } from '../utils/widget-map.utils';\nimport { LayerSlider } from '../interaction/layer-slider.class';\nimport TileLayer from 'ol/layer/Tile';\nimport WebGLTileLayer from 'ol/layer/WebGLTile';\nimport { Attribution, defaults } from 'ol/control';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { TooltipManager } from '../interaction/tooltip-manager.class';\n\nexport const TOOLTIP_PADDING = 15;\nexport const NON_MANDATORY_FIT_LAYER_TYPES = ['wms', 'geoserver'];\nexport const DEFAULT_LAYER_GROUP = 'DEFAULT';\n\n// Define Lambert Projection\nproj4.defs(\n 'EPSG:2154',\n '+proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +type=crs'\n);\nregister(proj4);\n\n@Component({\n selector: 'pry-widget-map',\n templateUrl: './widget-map.component.html'\n})\nexport class WidgetMapComponent extends DataWidgetComponent implements AfterViewInit, OnDestroy {\n static idCounter = 0;\n id = `${WidgetMapComponent.idCounter++}`;\n mapUrl$: Observable<string>;\n @ViewChild('mapRef') mapRef!: ElementRef;\n @ViewChild('popup') popup!: ElementRef;\n @ViewChild('popupContent', { read: ViewContainerRef }) popupContent!: ViewContainerRef;\n @ViewChild('exportTypeTemplate', { read: TemplateRef }) exportTypeTemplate!: TemplateRef<any>;\n @ViewChild('sliderElement') sliderElement!: ElementRef<HTMLInputElement>;\n options$: Observable<MapWidgetOptions>;\n layerTypes = this.widgetMapLayerService.implementationList\n .filter((type) => type !== 'auto')\n .sort((a, b) =>\n this.translateService\n .instant('@pry.widget.map.layerType.' + a)\n .localeCompare(this.translateService.instant('@pry.widget.map.layerType.' + b))\n );\n optionsCopy: MapWidgetOptions = {} as MapWidgetOptions;\n classes$: Observable<Class[]>;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n bottomLeft$: Observable<string>;\n layers$!: Observable<BaseLayer[]>;\n map!: Map;\n additionalLayers$ = new BehaviorSubject<VectorLayer<VectorSource<Geometry>>[]>([]);\n styles$: Observable<\n {\n identifier: string;\n label: string;\n }[]\n >;\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n i = 0;\n itemStyles$!: Observable<{\n [id: string]: {\n classic: Style;\n bordered: Style;\n };\n }>;\n height$: Observable<number>;\n actions$ = widgetMapConfig.actions$;\n geoServerLayerDescriptions$: Observable<MapGeoServerLayerOptions[]>;\n legendTabOpen = false;\n layersTabOpen = false;\n legendTabClosed: boolean[] = [];\n legendLayers$!: Observable<(MapGeoServerLayerOptions | MapWMSLayerLayerOptions)[]>;\n legendTop$: Observable<number>;\n layersTop$!: Observable<number>;\n legendHeight$: Observable<number>;\n layersHeight$!: Observable<number>;\n imageNotProvided: boolean[] = [];\n basicActions$: Observable<('click' | 'lasso' | 'rectangle' | 'zoom' | 'move' | 'export' | 'upload')[]>;\n zoomAndCenter$ = new BehaviorSubject<{\n zoom?: {\n start: number;\n min: number;\n max: number;\n };\n center?: number[];\n }>({});\n mapStyleUrl$!: Observable<string | null>;\n interactionManager: InteractionManager = new InteractionManager();\n tooltipManager: TooltipManager = new TooltipManager();\n mapStyleLayer$!: Observable<(VectorTileLayer | TileLayer<any>)[]>;\n STYLE_FROM_URL = '_url';\n NO_STYLE = 'none';\n wmsCapabilities$: Observable<\n | {\n [p: string]: GetCapabilitiesResponse | null;\n }\n | undefined\n >;\n autoDatasetLayers$: Observable<MapAutoLayerOptions[]>;\n fitExtents$!: Observable<\n {\n datasource: string;\n extent: Coordinate[];\n error: boolean;\n }[]\n >;\n datasourceFilters$: Observable<any>;\n usedClasses$: Observable<any>;\n layerSlider = new LayerSlider();\n hasSlideLayer$: Observable<boolean>;\n slides: { id: undefined | string; label: string }[];\n possibleStyles: {\n [p: string]: {\n layers: { [p: string]: { param: string; styles: { id: string; label: string }[] } } | null;\n url: string;\n };\n } = {};\n attributions = new Attribution();\n actionMenuOpen$ = new BehaviorSubject(false);\n attributions$: Observable<boolean>;\n olZoomElement$ = new BehaviorSubject<HTMLDivElement | null>(null);\n previousLayers: BaseLayer[] = [];\n layerSettingsExpandedState: { [key: string]: boolean } = {};\n\n constructor(\n store: Store<any>,\n public translateService: PryI18nService,\n private tooltipFactoryService: TooltipFactoryService,\n private symbolService: SymbolService,\n private injector: Injector,\n private widgetMapLayerService: WidgetMapLayerService,\n private pryAggregationService: PryAggregationService,\n el: ElementRef,\n @Optional() @Inject(PRY_GEOAUTH_TOKEN) private geoAuthService: PryGeoAuthService\n ) {\n super(store, el);\n\n this.getOlZoomElement();\n\n this.slides = [\n { id: 'all', label: this.translateService.instant('@pry.widget.map.slide.all') },\n { id: 'left', label: this.translateService.instant('@pry.widget.map.slide.left') },\n { id: 'right', label: this.translateService.instant('@pry.widget.map.slide.right') }\n ];\n\n this.widgetMapLayerService.withGeoAuth(this.geoAuthService);\n\n this.basicActions$ = combineLatest([\n this.actions$,\n this.actionMenuOpen$,\n this.interactionManager.selectionInteraction.selectionType$\n ]).pipe(\n map(([actions, menuOpen, selectionType]) =>\n menuOpen\n ? actions.filter((action) => action !== 'export' && action !== 'upload')\n : actions\n .filter((action) => action !== 'export' && action !== 'upload')\n .filter((action) => selectionType === action)\n )\n );\n\n this.classes$ = this.store\n .select(ClassSelectors.classes)\n .pipe(map((classes) => classes.sort((a, b) => a.name.localeCompare(b.name))));\n this.usedClasses$ = combineLatest([this.classes$, this.usedDatasources$]).pipe(\n map(([classes, datasources]) => {\n return classes.filter((classItem) =>\n datasources.some((dataSource) => {\n if (dataSource.sourceType === 'namedQuery' && 'type' in dataSource.request) {\n if (\n dataSource.request.type === NamedQueryTypes.MULTI_CLASS ||\n dataSource.request.type === NamedQueryTypes.FULL_TEXT\n ) {\n return true;\n }\n }\n return dataSource.sourceType === 'dataset'\n ? dataSource.oClass === classItem.id\n : dataSource.sourceType === 'namedQuery' && 'oClass' in dataSource.request\n ? dataSource.request.oClass === classItem.id\n : dataSource.sourceType === 'namedQuery' && 'type' in dataSource.request\n ? dataSource.request.type === NamedQueryTypes.MONO_CLASS\n : false;\n })\n );\n })\n );\n this.fields$ = this.store.select(FieldSelectors.fields);\n\n this.datasourceFilters$ = combineLatest([\n this.store.select(DashboardSelectors.datasourceFilters),\n this.datasourceIds$\n ]).pipe(\n map(\n ([filters, ids]) =>\n Object.keys(filters)\n .filter((filterDsKey) => ids.includes(filterDsKey))\n .reduce((p, c) => ({ ...p, [c]: filters[c] }), {}) as {\n [p: string]: FilterContext[];\n }\n ),\n distinctUntilChanged((p, c) => equal(p, c))\n );\n\n this.styles$ = this.store.select(ConfigSelectors.mapStyles).pipe(\n map((styles) =>\n styles.concat(\n {\n identifier: this.NO_STYLE,\n label: this.translateService.instant('@pry.widget.map.noStyle')\n },\n {\n identifier: this.STYLE_FROM_URL,\n label: this.translateService.instant('@pry.widget.map.styleFromUrl')\n }\n )\n )\n );\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.geoServerLayerDescriptions$ = combineLatest([\n this.usedDatasources$.pipe(\n startWith([]),\n distinctUntilChanged((p, c) => equal(p, c))\n ),\n this.store.select(ConfigSelectors.geoServerUrl).pipe(startWith(undefined))\n ]).pipe(\n debounceTime(100),\n map(([dataSources, geoServerUrl]) => {\n if (!geoServerUrl) return [];\n return dataSources\n .filter((ds) => DatasourceUtils.isGeo(ds))\n .map((ds) => {\n ds = ds as unknown as Dataset;\n const metadatas: {\n [key: string]: string;\n } = {};\n ds.metadata?.forEach((m) => (metadatas[m.metadataDef.name] = m.value));\n return {\n type: 'geoserver',\n url: `${geoServerUrl}/${\n metadatas[GeoMetadata.NAMESPACE].length > 0 ? metadatas[GeoMetadata.NAMESPACE] + '/' : ''\n }wms?SERVICE=WMS&VERSION=1.3.0`,\n paramTiled: true,\n opacity: parseInt(metadatas[GeoMetadata.OPACITY] ?? 100, 10),\n oClass: ds.oClass,\n key: metadatas[GeoMetadata.NAMESPACE] + ':' + metadatas[GeoMetadata.KEY],\n namespace: metadatas[GeoMetadata.NAMESPACE],\n paramLayer: metadatas[GeoMetadata.KEY],\n name: ds.name,\n datasourceId: ds.id,\n group: DEFAULT_LAYER_GROUP\n };\n })\n .map((layer) => layer as MapGeoServerLayerOptions);\n }),\n distinctUntilChanged((p, c) => equal(p, c)),\n startWith([])\n );\n\n this.autoDatasetLayers$ = combineLatest([\n this.classes$,\n this.usedDatasources$.pipe(\n startWith([]),\n map(\n (datasources) =>\n datasources.filter((ds) => ds.sourceType === 'dataset' && !DatasourceUtils.isGeo(ds)) as Dataset[]\n )\n )\n ]).pipe(\n map(\n ([classes, dataSets]) =>\n dataSets\n .map((ds) => {\n const model = classes.find((clazz) => clazz.id === ds.oClass);\n const geoAttributes = (model?.attributes.map((attr) => attr) ?? []).filter((attr) =>\n GeometricFieldTypes.includes(attr.field.type)\n );\n return geoAttributes.map(\n (attr) =>\n ({\n type: 'auto',\n title: `${ds.name}${geoAttributes.length > 1 ? ' - ' + attr.name : ''}`,\n oClass: ds.oClass,\n key: ds.id,\n subType: attr.field!.type,\n classes: [ds.oClass],\n attribute: attr.technicalName,\n group: DEFAULT_LAYER_GROUP\n }) as MapAutoLayerOptions\n );\n })\n .flat() as MapAutoLayerOptions[]\n )\n );\n\n this.subscriptions.add(\n this.manifest$\n .pipe(\n map((manifest) =>\n (\n (((manifest.options ?? { layers: [] }) as MapWidgetOptions).layers ?? []).filter((layer) =>\n ['wms'].includes(layer.type)\n ) as MapWMSLayerLayerOptions[]\n ).map((layer) => layer.url)\n )\n )\n .subscribe((urls) => urls.forEach((url) => this.store.dispatch(DashboardActions.getCapability({ url }))))\n );\n\n this.wmsCapabilities$ = this.store.select(DashboardSelectors.capabilities);\n\n this.options$ = combineLatest([\n this.manifest$,\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.styles$,\n this.geoServerLayerDescriptions$,\n this.wmsCapabilities$,\n this.autoDatasetLayers$\n ]).pipe(\n map(([manifest, resultSet, classes, fields, mapStyles, geoLayers, capabilities, autoDatasetLayers]) => {\n // auto determine layers parameters to provide a working view\n const autoOptions = structuredClone(manifest.options ?? {}) as MapWidgetOptions;\n if (!autoOptions.tooltipMode) {\n autoOptions.tooltipMode = TooltipMode.CLICK;\n }\n\n autoOptions.layers = [\n ...(autoOptions.layers ?? []).filter((layer) => layer.type !== 'auto'),\n ...(autoOptions.automaticLayers\n ? autoDatasetLayers\n .filter(\n (layer) =>\n !autoOptions.ignoreAutoLayer ||\n !autoOptions.ignoreAutoLayer.includes(layer.key + '-' + layer.subType)\n )\n .map((layer) => ({\n ...layer,\n ...((autoOptions.layers ?? []).find(\n // @ts-ignore\n (prevLayer) => prevLayer.key === layer.key && prevLayer.attribute === layer.attribute\n ) ?? {})\n }))\n : [])\n ];\n\n autoOptions.layers?.forEach((layer, i) => {\n WidgetMapUtils.populateLocationAttribute(layer, resultSet, classes, fields);\n WidgetMapUtils.populateIntensityAttribute(layer, resultSet, classes, fields);\n if (autoOptions.attributions) {\n layer.attribution = layer.attribution ?? '';\n }\n });\n\n const actualLayerKeys = (autoOptions.layers ?? [])\n .map((layer) => (layer as MapGeoServerLayerOptions).key ?? null)\n .filter((key) => !!key);\n\n // Get all previous layers, without geoserver layers that are not requested anymore, then add new geoserver layers (potentially with a preconfig from manifest).\n autoOptions.layers = [\n ...(autoOptions.layers ?? []).map((layer) => {\n // @ts-ignore\n const geoLayer = geoLayers.find((geoLayer) => layer.key === geoLayer.key) ?? null;\n return layer.type === 'geoserver'\n ? geoLayer\n ? { ...geoLayer, ...layer, url: geoLayer.url }\n : (null as unknown as MapWidgetLayerOptions)\n : { ...layer };\n }),\n ...geoLayers.filter((layer) => !actualLayerKeys.includes(layer.key))\n ].filter((layer) => !!layer);\n\n autoOptions.layers.forEach((layer, index) => {\n this.setDefaultLayerTitle(layer, index, capabilities);\n });\n\n if (\n !!mapStyles &&\n mapStyles.length > 0 &&\n (!autoOptions.style || !mapStyles.map((style) => style.identifier).includes(autoOptions.style))\n ) {\n const lightStyles = mapStyles.filter((style) => !(style.identifier ?? '-').includes('dark'));\n autoOptions.style = lightStyles.length > 0 ? lightStyles[0].identifier : mapStyles[0].identifier;\n }\n\n if (autoOptions.ignoreAutoLayer) {\n const base = autoOptions.ignoreAutoLayer;\n\n // Remove from ignoreAutoLayers, values that are not necessary\n const possibleIgnoreAutoLayerKeys = autoDatasetLayers.map((layer) => layer.key + '-' + layer.subType);\n autoOptions.ignoreAutoLayer = (autoOptions.ignoreAutoLayer ?? []).filter((key) =>\n possibleIgnoreAutoLayerKeys.includes(key)\n );\n if (autoOptions.ignoreAutoLayer.length === 0) {\n delete autoOptions.ignoreAutoLayer;\n }\n\n if (!autoOptions.ignoreAutoLayer || base.length !== autoOptions.ignoreAutoLayer.length) {\n this.emitManifest();\n }\n }\n\n autoOptions.layers = WidgetMapUtils.assignLayersOrder(autoOptions.layers);\n\n if (autoOptions.fit !== undefined) {\n autoOptions.layers.forEach(\n (layer) => (layer.fit = !NON_MANDATORY_FIT_LAYER_TYPES.includes(layer.type) || autoOptions.fit)\n );\n delete autoOptions.fit;\n }\n\n [\n ...new Set(\n (\n autoOptions.layers.filter((layer) => ['wms', 'geoserver'].includes(layer.type)) as (\n | MapWMSLayerLayerOptions\n | MapGeoServerLayerOptions\n )[]\n ).map((layer) => layer.url)\n )\n ].forEach((url) => {\n if (capabilities && capabilities[url] === undefined) {\n this.store.dispatch(DashboardActions.getCapability({ url: url }));\n }\n });\n\n autoOptions.layers = autoOptions.layers.map((layer) => ({\n ...layer,\n title: layer.title ?? this.translateService.instant(`@pry.widget.map.layerType.${layer.type}`, { ...layer }),\n group: layer.group ?? DEFAULT_LAYER_GROUP\n }));\n\n autoOptions.layerGroups = autoOptions.layerGroups ?? [];\n if (!autoOptions.layerGroups.find((g) => g.name === DEFAULT_LAYER_GROUP)) {\n autoOptions.layerGroups.push({\n name: 'DEFAULT',\n singleLayer: false,\n visibleLayers: autoOptions.layers\n ? autoOptions.layers.filter((layer) => layer.group === DEFAULT_LAYER_GROUP).map((layer) => layer.title)\n : ([] as string[])\n } as LayerGroup);\n }\n\n return autoOptions;\n }),\n distinctUntilChanged((p, c) => equal(p, c))\n );\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = structuredClone(options);\n this.optionsCopy.layers?.forEach(\n (layer) => (this.layerSettingsExpandedState[layer.title ?? 'MISSING TITLE'] = false)\n );\n this.optionsCopy.layers = this.optionsCopy.layers?.map((layer) => ({\n ...layer,\n group: layer.group ?? DEFAULT_LAYER_GROUP\n }));\n })\n );\n\n this.mapUrl$ = this.store.select(ConfigSelectors.mapUrl);\n\n this.bottomLeft$ = this.widgetSize$.pipe(\n map((size) => `translate(10px ,calc(${size.height}px - 100% - 10px))`),\n delay(10)\n );\n\n this.itemStyles$ = combineLatest([this.resultSet$, this.manifest$, this.staticResultSet$]).pipe(\n mergeMap(([rs, manifest, srs]) => {\n if ((manifest.datasource === undefined || manifest.datasource.length === 0) && !srs) {\n return of({});\n } else {\n return from(\n new Promise<{\n [id: string]: {\n classic: Style;\n bordered: Style;\n };\n }>((resolve, reject) => {\n const total = Object.values(rs.items).reduce((p, c) => c.length + p, 0);\n if (total === 0) resolve({});\n const result = {} as {\n [id: string]: {\n classic: Style;\n bordered: Style;\n };\n };\n Object.values(rs.items).forEach((items) => {\n items.forEach((item) =>\n Promise.all([\n this.symbolService.getSymbolAsIconStyle(item),\n this.symbolService.getSymbolAsIconStyle(item, true)\n ]).then(([style, bStyle]) => {\n result[item.id] = { classic: style, bordered: bStyle };\n if (Object.keys(result).length >= total) {\n resolve(result);\n }\n })\n );\n });\n })\n );\n }\n })\n );\n\n this.height$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.displayHeader$]).pipe(\n map(([size, display]) => (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT.value : 0)),\n delay(10)\n );\n\n this.attributions$ = this.options$.pipe(map((options) => !!options.attributions));\n\n this.legendTop$ = combineLatest([this.displayHeader$, this.attributions$]).pipe(\n map(([header, attr]) => 5 + (header ? WIDGET_HEADER_HEIGHT.value : 0) + (attr ? 61 : 0))\n );\n\n this.legendHeight$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.legendTop$]).pipe(\n map(([size, top]) => {\n return (size.height ?? 100) - WIDGET_HEADER_HEIGHT.value - top - 56; // 56px is the popin title height + margin\n }),\n delay(10)\n );\n\n this.subscriptions.add(\n this.wmsCapabilities$\n .pipe(\n map((wmsCapabilities) =>\n wmsCapabilities\n ? Object.keys(wmsCapabilities)\n .map((url) => ({ url, layers: XMLUtils.getPossibleLayerStyles(wmsCapabilities[url]?.doc) }))\n .reduce((p, c) => ({ ...p, [c.url]: c }), {})\n : {}\n ),\n startWith({})\n )\n .subscribe((possibleStyles) => (this.possibleStyles = possibleStyles))\n );\n\n this.hasSlideLayer$ = this.options$.pipe(\n map((options) =>\n (options.layers ?? []).map((layer) => !!layer.slide && layer.slide !== 'all').reduce((a, b) => a || b, false)\n )\n );\n }\n\n initInteractionManager() {\n return this.interactionManager.init(this);\n }\n\n initTooltipManager() {\n return this.tooltipManager.init(\n this.tooltipFactoryService,\n this.injector,\n this.store,\n this.subscriptions,\n this.widgetSize$,\n this.displayHeader$,\n this.map,\n this.popup,\n this.popupContent,\n this.interactionManager,\n this\n );\n }\n\n ngAfterViewInit(): void {\n this.map = new Map({ target: this.mapRef.nativeElement, controls: defaults({ attribution: false }) });\n this.interactionManager = this.initInteractionManager();\n this.layerSlider.init(this.map, this.sliderElement.nativeElement);\n this.tooltipManager = this.initTooltipManager();\n this.mapStyleUrl$ = combineLatest([this.options$, this.mapUrl$]).pipe(\n map(([options, url]) => {\n switch (options.style) {\n case this.NO_STYLE:\n return null;\n case this.STYLE_FROM_URL:\n return options.styleURL ?? '';\n default:\n return `${url}/styles/${options.style}/style.json`;\n }\n }),\n distinctUntilChanged()\n );\n\n this.mapStyleLayer$ = this.mapStyleUrl$.pipe(\n map((styleUrl) => {\n if (!styleUrl) {\n return [];\n }\n return [\n new MapboxVectorLayer({\n properties: { title: 'background' },\n styleUrl\n }) /* ,\n new TileLayer({\n source: new TileDebug()\n }) */\n ];\n })\n );\n\n this.subscriptions.add(\n this.options$\n .pipe(\n map((options) => ({\n center: fromLonLat(options.center ?? WidgetMapUtils.DEFAULT_MAP_CENTER),\n maxZoom: options.zoom?.max ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n minZoom: options.zoom?.min ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n zoom: options.zoom?.start ?? WidgetMapUtils.DEFAULT_ZOOM_START\n })),\n distinctUntilChanged()\n )\n .subscribe((view) => this.map.setView(new View(view)))\n );\n\n this.subscriptions.add(\n this.options$\n .pipe(\n map((options) => options.attributions),\n distinctUntilChanged()\n )\n .subscribe((attributions) => {\n if (!attributions) {\n this.map.removeControl(this.attributions);\n } else {\n this.map.addControl(this.attributions);\n }\n })\n );\n\n this.layers$ = combineLatest([\n this.resultSet$,\n this.options$,\n this.classes$,\n this.additionalLayers$,\n this.itemStyles$,\n this.datasourceFilters$,\n this.fields$\n ]).pipe(\n filter(\n ([resultSet, options, classes, additionalLayers, itemStyles, filters, fields]) =>\n !!resultSet && !!options && !!classes && !!fields\n ),\n map(([resultSet, options, classes, additionalLayers, itemStyles, filters, fields]) => {\n let hasRelationLayer = null as unknown as VectorLayer<VectorSource<any>>;\n\n const layers = (options?.layers || [])\n .filter(\n // @ts-ignore\n (layer) => this.widgetMapLayerService.dontNeedLocation.includes(layer.type) || !!layer.attribute\n )\n .filter(\n // @ts-ignore\n (layer) => this.widgetMapLayerService.dontNeedIntensity.includes(layer.type) || !!layer.intensityAttribute\n )\n .map((layer: MapWidgetLayerOptions, idx, array) => {\n const attributesForClass = Object.keys(resultSet.items)\n .map((classId) => ({\n classId,\n ...this.getAttributesForDrawing(classes, classId, layer)\n }))\n .reduce(\n (p, c) => ({\n ...p,\n [c.classId]: c\n }),\n {} as {\n [key: string]: {\n intensityAttribute: Attribute;\n locationAttribute: Attribute;\n };\n }\n );\n\n let layerClassesId = classes.map((clazz) => clazz.id);\n if ('classes' in layer && !!layer.classes && layer.classes.length > 0) {\n layerClassesId = layer.classes;\n }\n\n let range = { min: 0, max: 0 };\n // @ts-ignore\n if (!!layer.intensityAttribute) {\n const values = Object.keys(resultSet.items)\n .map((classId) =>\n resultSet.items[classId].map((item) =>\n ItemUtils.getAttributeCalculatedValue(item, attributesForClass[item.oClass].intensityAttribute)\n )\n )\n .reduce((p, c) => [...p, ...c], [])\n .filter((value) => !!value && typeof value === 'number') as number[];\n\n range = values.reduce((p, c) => ({ min: Math.min(p.min, c), max: Math.max(p.max, c) }), {\n min: Number.MAX_VALUE,\n max: -Number.MAX_VALUE\n });\n }\n\n const impl = this.widgetMapLayerService.layersImplementation[layer.type];\n if (!!impl) {\n const resultLayer = impl(\n layer as any,\n attributesForClass,\n layerClassesId,\n resultSet,\n range,\n itemStyles,\n this.map\n );\n resultLayer.set('fit', layer.fit);\n resultLayer.set('type', layer.type);\n resultLayer.set('slide', layer.slide);\n resultLayer.set('order', layer.order);\n resultLayer.set('group', layer.group ?? DEFAULT_LAYER_GROUP);\n const maxLayerOrder = Math.max(...array.map((l) => l.order ?? 0));\n resultLayer.setZIndex(maxLayerOrder + 1 - (layer.order ?? idx));\n if (layer.type === 'relation') {\n hasRelationLayer = resultLayer as unknown as VectorLayer<VectorSource>;\n }\n resultLayer.set('title', layer.title);\n\n if (layer.type === 'geoserver') {\n const cql_filter = CqlUtils.getCQLParamsFor(layer.datasourceId, filters, classes, fields);\n\n if (cql_filter) {\n // Adding CQL query to geoserver layers\n (resultLayer as Tile<TileWMS>).getSource()!.updateParams({ cql_filter });\n }\n }\n\n if (layer.slide && layer.slide !== 'all') {\n this.layerSlider.applySlide(\n layer.slide,\n resultLayer as unknown as TileLayer<any> | VectorLayer<any> | Heatmap\n );\n }\n\n return resultLayer;\n } else {\n console.error(`Layer type ${layer.type} is unknown`);\n return null as unknown as BaseLayer;\n }\n })\n .filter((layer) => !!layer);\n\n if (!!hasRelationLayer) {\n const features = layers\n .filter((layer) => !(layer instanceof Tile))\n .map((layer) =>\n layer\n // @ts-ignore\n .getSource()\n .getFeatures()\n .filter((features: Feature<any>) => !!features.get('id') || !!features.get('features'))\n )\n .reduce((p, c) => [...p, ...c], []);\n\n resultSet.relations.forEach((relation) => {\n const source = features.find((f: Feature<Point | Circle>) => f.get('id') === relation.source);\n const dest = features.find((f: Feature<Point | Circle>) => f.get('id') === relation.destination);\n if (!!source && !!dest) {\n hasRelationLayer.getSource()?.addFeature(WidgetMapUtils.getLinkFeature(relation, source, dest));\n }\n });\n }\n layers.push(...additionalLayers);\n\n const visibleLayers = options.layerGroups!.map((group) => group.visibleLayers).flat();\n layers.forEach((layer, idx) => {\n if (!visibleLayers.includes(layer.get('title'))) {\n layer.setVisible(false);\n }\n });\n\n /* Resolve bug drawing webgllayer without nothing underneath: add empty layer below */\n const _layers = this.addEmptyWebGlLayerBelowSlideHeatmaps(layers);\n this.previousLayers.push(..._layers);\n return _layers;\n })\n );\n\n this.fitExtents$ = combineLatest([\n this.options$,\n this.classes$,\n this.datasourceFilters$,\n this.wmsCapabilities$\n ]).pipe(\n debounceTime(100),\n switchMap(([options, classes, filters, wmsCapabilities]) =>\n (options.layers ?? []).find((layer) => ['geoserver', 'wms'].includes(layer.type) && layer.fit)\n ? combineLatest([\n ...((options.layers?.filter((layer) => layer.type === 'geoserver') ?? []) as MapGeoServerLayerOptions[])\n .filter((layer) => layer.fit)\n .map((layer: MapGeoServerLayerOptions) =>\n (\n classes.find((clazz) => clazz.id === layer.oClass) ?? ({ attributes: [] } as unknown as Class)\n ).attributes\n .filter((attr) => GeometricFieldTypes.includes(attr.field.type))\n .map((attr) =>\n this.pryAggregationService\n .aggregate([layer.datasourceId], {\n ordinate: { operation: Operation.EXTENT, attribute: attr.id, label: attr.name, keep0: false }\n } as ChartAggregatedWidgetOptions)\n .pipe(\n map((extentResponse: AggregationResult) =>\n WidgetMapUtils.projectExtentAggregationResponse(\n attr.field!,\n extentResponse,\n layer,\n wmsCapabilities,\n this.map\n )\n ),\n catchError(() => of({ datasource: layer.datasourceId, extent: [], error: true }))\n )\n )\n .flat()\n )\n .flat(),\n ...((options.layers?.filter((layer) => layer.type === 'wms') ?? []) as MapWMSLayerLayerOptions[])\n .filter((layer) => layer.fit)\n .map((layer: MapWMSLayerLayerOptions) => {\n const extent = XMLUtils.getLayerExtent(layer.paramLayer, this.map, wmsCapabilities![layer.url]?.doc);\n return of({\n datasource: `wms-${layer.paramLayer}`,\n extent: extent ?? [],\n error: !extent\n });\n })\n ])\n : of([])\n ),\n startWith(\n [] as {\n datasource: string;\n extent: Coordinate[];\n error: boolean;\n }[]\n )\n );\n\n this.legendLayers$ = this.options$.pipe(\n map(\n (options) =>\n (options.layers ?? []).filter((layer) => ['geoserver', 'wms'].includes(layer.type)) as (\n | MapGeoServerLayerOptions\n | MapWMSLayerLayerOptions\n )[]\n ),\n delay(10)\n );\n\n this.layersTop$ = combineLatest([this.legendTop$, this.legendLayers$]).pipe(\n map(([legendTop, layers]) => legendTop + ((layers.length ?? 0) > 0 ? 50 : 0))\n );\n\n this.layersHeight$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.layersTop$]).pipe(\n map(([size, top]) => {\n return (size.height ?? 100) - WIDGET_HEADER_HEIGHT.value - top - 50; // 50px acts as bottom margin\n })\n );\n\n this.subscriptions.add(\n combineLatest([this.layersTop$, this.legendLayers$, this.olZoomElement$, this.displayHeader$])\n .pipe(withLatestFrom(this.layers$))\n .subscribe(([[layersTop, legend, zoomElement, displayHeader], layers]) => {\n if (zoomElement) {\n zoomElement.style.top = `${\n layersTop +\n ((legend.length ?? 0) > 0 || layers.length > 0 ? 20 : 0) +\n (!displayHeader ? WIDGET_HEADER_HEIGHT.value : 0)\n }px`;\n }\n })\n );\n\n this.subscriptions.add(\n combineLatest([\n this.mapStyleLayer$,\n this.layers$,\n this.selectedIds$.pipe(distinctUntilChanged((p, c) => equal(p, c))),\n this.fitExtents$,\n this.datasourceFilters$,\n fromEvent<CustomEvent>(window, 'wms-layer-refresh').pipe(\n startWith(new CustomEvent(`wms-layer-refresh`, { detail: true }))\n ) as Observable<CustomEvent>\n ]).subscribe(([mapStyleLayer, layers, selectedIds, extents, filters, refreshEvent]) => {\n const neededCalculatedExtents = layers.filter(\n (layer) => ['geoserver', 'wms'].includes(layer.get('type')) && layer.get('fit')\n ).length;\n const nbCalculatedExtents = extents.filter((extent) => !extent.error).length;\n\n if (nbCalculatedExtents >= neededCalculatedExtents) {\n if (!refreshEvent.detail) {\n this.map\n .getAllLayers()\n .filter((l) => l instanceof TileLayer)\n .forEach((l) => {\n l.getSource()!.refresh();\n });\n }\n\n setTimeout(() => {\n const toApplyLayers = [...layers, ...mapStyleLayer];\n this.map.setLayers(toApplyLayers);\n\n this.fitMapForObjects(selectedIds, extents);\n this.map.updateSize();\n\n this.map\n .getAllLayers()\n .filter((layer) => !(layer instanceof Tile))\n .forEach((layer) => {\n const getFeatures = (layer.getSource() as VectorSource)?.getFeatures;\n if (typeof getFeatures === 'function') {\n (layer.getSource() as VectorSource)?.getFeatures().forEach((feature: any) => {\n const type = feature.get('type');\n if (\n ['bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].includes(type)\n ) {\n feature.setStyle(\n feature.get(selectedIds.includes(feature.get('id')) ? 'selectedStyle' : 'classicStyle')\n );\n }\n });\n }\n });\n }, 100);\n } else {\n this.map.setLayers([...mapStyleLayer]);\n }\n })\n );\n }\n\n private addEmptyWebGlLayerBelowSlideHeatmaps(layers: BaseLayer[]) {\n const _layers = [];\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n _layers.push(layer);\n if (layer.get('type') === 'heatmap' && layer.get('slide')) {\n const emptyData = new Uint8Array(256 * 256 * 4);\n const emptyLayer = new WebGLTileLayer({\n source: new DataTile({\n loader() {\n return emptyData;\n },\n maxZoom: 0,\n wrapX: true\n })\n });\n _layers.push(emptyLayer);\n }\n }\n return _layers;\n }\n\n override initResultSet$() {\n return combineLatest([\n this.store.select(DashboardSelectors.resultSets),\n this.datasourceIds$,\n this.staticResultSet$,\n this.store.select(DataSourceSelectors.datasets)\n ]).pipe(\n map(([resultSets, resultSetNamesArray, staticResultSet, definitions]) => {\n if (!!staticResultSet) {\n return staticResultSet;\n }\n const resultSetArray = resultSetNamesArray\n .filter((rsName) => {\n const definition = definitions.find((dsd) => dsd.id === rsName) as Dataset | undefined;\n return !definition || !(definition.metadata ?? []).find((meta) => meta.metadataDef.name === '_geoKey');\n })\n .map((rsName) => resultSets[rsName ?? ''])\n .filter((rsName) => !!rsName);\n return resultSetArray.reduce((rs1, rs2) => ResultsetUtils.mergeResultSets(rs1, rs2), {\n items: {},\n relations: [],\n merged: resultSetArray.length\n });\n }),\n distinctUntilChanged((p, v) => equal(p, v))\n );\n }\n\n setDefaultLayerTitle(\n layer: MapWidgetLayerOptions,\n index: number,\n capabilities:\n | {\n [p: string]: GetCapabilitiesResponse | null;\n }\n | undefined\n ) {\n if (!layer.title) {\n if (['geoserver', 'wms'].includes(layer.type)) {\n const geoLayer = layer as MapGeoServerLayerOptions | MapWMSLayerLayerOptions;\n const layerCapabilities = capabilities ? capabilities[geoLayer.url] : undefined;\n\n if (layerCapabilities) {\n const matchingLayer = XMLUtils.getMatchingLayer(geoLayer.paramLayer, layerCapabilities.doc);\n if (matchingLayer) {\n const matchingTitle = XMLUtils.find(matchingLayer.childNodes, 'Title');\n if (matchingTitle) {\n layer.title =\n !!matchingTitle.textContent && matchingTitle.textContent.length > 0\n ? matchingTitle.textContent\n : undefined;\n }\n }\n } else {\n layer.title = geoLayer.paramLayer;\n }\n } else {\n layer.title = this.translateService.instant(`@pry.widget.map.layerType.${layer.type}`, { ...layer });\n }\n }\n }\n\n fitMapForObjects(\n selectedIds?: string[],\n extents: {\n datasource: string;\n extent: Coordinate[];\n }[] = []\n ) {\n let extent = createEmpty();\n const listOfMarkers = [] as any[];\n\n /* Mandatory fit */\n this.map\n .getAllLayers()\n .filter((layer) => layer.getProperties()['fit'])\n .filter((layer) => !!layer.getSource && !!layer.getSource() && !!(layer.getSource() as VectorSource).getFeatures)\n .forEach((layer) => {\n (layer.getSource() as VectorSource).getFeatures().forEach((feature: any) => {\n const id = feature.get('id');\n if (!selectedIds || selectedIds.length <= 0 || (selectedIds.length > 0 && selectedIds.includes(id))) {\n switch (feature.get('type')) {\n case 'heatpoint':\n case 'point':\n case 'marker':\n listOfMarkers.push(feature.getGeometry().getCoordinates());\n break;\n case 'line':\n case 'link':\n listOfMarkers.push(...feature.getGeometry().getCoordinates());\n break;\n case 'polygon':\n case 'multi-line':\n listOfMarkers.push(...feature.getGeometry().getCoordinates().flat());\n break;\n case 'multi-polygon':\n listOfMarkers.push(...feature.getGeometry().getCoordinates().flat().flat());\n break;\n default:\n listOfMarkers.push(feature.getGeometry().getCenter());\n }\n }\n });\n });\n\n const selectedExtent = boundingExtent(\n listOfMarkers.filter((coord) => !!coord).concat(...extents.map((extent) => extent.extent))\n );\n\n if (\n selectedExtent[0] !== Infinity &&\n selectedExtent[1] !== Infinity &&\n selectedExtent[2] !== -Infinity &&\n selectedExtent[3] !== -Infinity\n ) {\n extent = selectedExtent;\n }\n\n if (extent[0] !== Infinity && extent[1] !== Infinity && extent[2] !== -Infinity && extent[3] !== -Infinity) {\n this.map.getView().fit(extent, { padding: [20, 20, 70, 70], duration: 200 });\n }\n }\n\n private getAttributesForDrawing(classes: Class[], classId: string, layer: MapWidgetLayerOptions) {\n const classObj = classes.find((cl) => cl.id === classId) ?? ({ attributes: [] as Attribute[] } as Class);\n const locationAttribute = this.getLocationAttribute(classObj, layer);\n const intensityAttribute = this.getIntensityAttribute(\n classObj,\n layer as MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions\n );\n return { locationAttribute, intensityAttribute };\n }\n\n private getIntensityAttribute(\n classObj: Class | undefined,\n layer: MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions\n ) {\n return (\n (classObj || { attributes: [] }).attributes.find((attr) => attr.technicalName === layer?.intensityAttribute) ??\n (undefined as unknown as Attribute)\n );\n }\n\n private getLocationAttribute(classObj: Class, layer: MapWidgetLayerOptions): Attribute {\n type layers = MapWidgetHeatMapLayerOptions | MapWidgetMarkerLayerOptions | MapWidgetBubbleLayerOptions;\n const specificLayer = layer as layers;\n return (\n classObj.attributes.find((attr) => attr.technicalName === specificLayer?.attribute) ??\n (undefined as unknown as Attribute)\n );\n }\n\n changeStyle($event: any) {\n this.optionsCopy.style = $event;\n if (this.optionsCopy.style !== this.STYLE_FROM_URL) {\n delete this.optionsCopy.styleURL;\n }\n }\n\n changeStyleURL($event: Event) {\n // @ts-ignore\n this.optionsCopy.styleURL = $event.currentTarget?.value;\n }\n\n changeFit($event: boolean, layer: MapWidgetLayerOptions) {\n layer.fit = $event;\n }\n\n changeSlide($event: undefined | 'left' | 'right', layer: MapWidgetLayerOptions) {\n layer.slide = $event;\n }\n\n changeAttributions($event: boolean) {\n this.optionsCopy.attributions = $event;\n if (this.optionsCopy.attributions) {\n this.optionsCopy.layers?.forEach((layer) => (layer.attribution = ''));\n } else {\n this.optionsCopy.layers?.forEach((layer) => delete layer.attribution);\n }\n }\n\n addLayer(group: LayerGroup) {\n if (!this.optionsCopy.layers) {\n this.optionsCopy.layers = [];\n }\n const title = this.translateService.instant(`@pry.widget.map.layer`, { index: this.optionsCopy.layers.length + 1 });\n\n this.optionsCopy.layers.push({\n attribute: '',\n group: group.name,\n title,\n type: 'marker'\n });\n this.layerSettingsExpandedState[title] = false;\n this.updateLayerGroup(group, undefined, title);\n this.updateLayerOrder();\n }\n\n changeLayerType($event: any, i: number) {\n if (!this.optionsCopy.layers) {\n this.optionsCopy.layers = this.optionsCopy.layers ?? [];\n }\n this.optionsCopy.layers[i].type = $event;\n if (this.optionsCopy.layers[i].type === 'wms') {\n const options = this.optionsCopy.layers[i] as MapWMSLayerLayerOptions;\n options.paramLayer = options.paramLayer ?? '';\n options.url = options.url ?? '';\n }\n if (this.optionsCopy.layers[i].type === 'wmts') {\n const options = this.optionsCopy.layers[i] as MapWMTSLayerLayerOptions;\n options.paramLayer = options.paramLayer ?? '';\n options.style = options.style ?? '';\n options.matrixSet = options.matrixSet ?? '';\n options.url = options.url ?? '';\n }\n if (['featurelayer', 'vectortile', 'rastertile'].includes(this.optionsCopy.layers[i].type)) {\n let options: MapFeatureLayerOptions;\n options = this.optionsCopy.layers[i] as MapFeatureLayerOptions;\n options.url = options.url ?? '';\n }\n }\n\n updateLayerGroupSingleLayer(group: LayerGroup, singleLayer: boolean) {\n this.updateLayerGroup(group, singleLayer, singleLayer ? [group.visibleLayers[0]] : group.visibleLayers);\n }\n\n updateLayerGroup(group: LayerGroup | string, singleLayer?: boolean, visibleLayers?: string[] | string) {\n const layerGroup = typeof group === 'string' ? this.optionsCopy.layerGroups!.find((g) => g.name === group) : group;\n const groupIndex = this.optionsCopy.layerGroups!.findIndex((g) => g.name === layerGroup!.name);\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.map((g, i) =>\n i === groupIndex\n ? {\n ...g,\n singleLayer: singleLayer ?? layerGroup!.singleLayer,\n visibleLayers:\n typeof visibleLayers === 'string'\n ? [...layerGroup!.visibleLayers, visibleLayers]\n : visibleLayers ?? layerGroup!.visibleLayers\n }\n : g\n );\n }\n\n changeTitle($event: Event, layer: MapWidgetLayerOptions, group: LayerGroup) {\n const newTitle = ($event.currentTarget as HTMLInputElement).value;\n this.updateLayerGroup(\n group,\n undefined,\n this.optionsCopy\n .layerGroups!.filter((g) => g.name === group.name)\n .map((g, i) => g.visibleLayers.map((l) => (l === layer.title ? newTitle : l)))\n .flat()\n );\n delete this.layerSettingsExpandedState[layer.title!];\n layer.title = newTitle;\n this.layerSettingsExpandedState[newTitle] = true;\n }\n\n override emitManifest() {\n this.removeEmptyLayerGroups();\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: {\n ...this.manifest,\n options: { ...this.optionsCopy, layers: (this.optionsCopy.layers ?? []).filter((layer) => !!layer.type) }\n }\n });\n }\n\n changeLocationAttributes($event: any, layer: MapWidgetLayerOptions) {\n // @ts-ignore\n layer.attribute = $event;\n }\n\n layerHasIntensity(layer: MapWidgetLayerOptions): MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions {\n return <MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions>layer;\n }\n\n changeIntensityAttributes($event: any, layer: MapWidgetLayerOptions) {\n const layer_ = <MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions>layer;\n layer_.intensityAttribute = $event;\n }\n\n changeClasses($event: string[], layer: MapWidgetLayerOptions) {\n const specificLayer = layer as\n | MapWidgetHeatMapLayerOptions\n | MapWidgetMarkerLayerOptions\n | MapWidgetBubbleLayerOptions;\n specificLayer.classes = $event;\n }\n\n deleteLayer(i: number, layer: MapWidgetLayerOptions, group: LayerGroup) {\n this.optionsCopy?.layers?.splice(i, 1);\n this.updateLayerGroup(\n group,\n undefined,\n group.visibleLayers.filter((l) => l !== layer.title)\n );\n this.removeEmptyLayerGroups();\n if (layer.type === 'auto') {\n this.optionsCopy.ignoreAutoLayer = [...(this.optionsCopy.ignoreAutoLayer ?? []), layer.key + '-' + layer.subType];\n }\n }\n\n changeUrl(\n $event: Event,\n layer:\n | MapWMSLayerLayerOptions\n | MapFeatureLayerOptions\n | MapVectorTileLayerOptions\n | MapRasterTileLayerOptions\n | MapWMTSLayerLayerOptions\n | MapGeoServerLayerOptions\n ) {\n // @ts-ignore\n layer.url = $event.currentTarget?.value;\n }\n\n changeAttribution($event: Event, layer: BaseWidgetMapLayerOptions) {\n // @ts-ignore\n layer.attribution = $event.currentTarget?.value;\n }\n\n changeParamLayer($event: Event, layer: MapWMSLayerLayerOptions | MapWMTSLayerLayerOptions) {\n // @ts-ignore\n layer.paramLayer = $event.currentTarget?.value;\n }\n\n changeParamTiled($event: boolean, layer: MapWMSLayerLayerOptions | MapGeoServerLayerOptions) {\n layer.paramTiled = $event;\n this.tooltipManager.clearTooltip();\n }\n\n changeMatrixSet($event: Event, layer: MapWMTSLayerLayerOptions) {\n // @ts-ignore\n layer.matrixSet = $event.currentTarget?.value;\n }\n\n changeParamStyle($event: Event, layer: MapWMTSLayerLayerOptions) {\n // @ts-ignore\n layer.style = $event.currentTarget?.value;\n }\n\n export() {\n WidgetMapUtils.exportMapAsImage(this.map, 'map.png');\n }\n\n override toImage(): Promise<string> {\n return WidgetMapUtils.getMapAsPng(this.map);\n }\n\n changeClustered(layer: MapWidgetMarkerLayerOptions, $event: boolean) {\n layer.clustered = $event;\n if (layer.clustered) {\n layer.clusterDistance = 10;\n }\n }\n\n changeClusterDistance(layer: MapWidgetMarkerLayerOptions, $event: Event) {\n // @ts-ignore\n layer.clusterDistance = $event.currentTarget?.value;\n }\n\n changeOpacity(layer: MapWidgetLayerOptions, $event: string) {\n // @ts-ignore\n layer.opacity = parseInt($event, 10);\n }\n\n getWMSLayers(): Layer<any>[] {\n return !this.map\n ? []\n : this.map\n .getAllLayers()\n .filter((layer) => layer.getSource() instanceof TileWMS || layer.getSource() instanceof ImageWMS)\n // @ts-ignore\n .filter((layer) => layer.rendered === true);\n }\n\n isLayerRendered(layer: any) {\n return !!this.getWMSLayers().find(\n (wmsLayer) => wmsLayer.get('title') === layer.title && wmsLayer.get('group') === layer.group\n );\n }\n\n changeWmsClass($event: any, layer: MapWMSLayerLayerOptions) {\n layer.oClass = $event;\n }\n\n toggleLegend(index: number) {\n this.legendTabClosed[index] = !this.legendTabClosed[index];\n }\n\n toggleLegendWindow() {\n this.legendTabOpen = !this.legendTabOpen;\n this.layersTabOpen = false;\n }\n\n toggleLayersWindow() {\n this.layersTabOpen = !this.layersTabOpen;\n this.legendTabOpen = false;\n }\n\n get mapLayers() {\n return (this.map ?? { getLayers: () => ({ getArray: () => [] }) })\n .getLayers()\n .getArray()\n .filter((layer) => layer.get('title') !== 'background');\n }\n\n get rightSlideLayers() {\n return this.mapLayers.filter((layer) => layer.get('slide') === 'right');\n }\n\n get leftSlideLayers() {\n return this.mapLayers.filter((layer) => layer.get('slide') === 'left');\n }\n\n changeVisibility(group: LayerGroup, _layer?: MapWidgetLayerOptions) {\n const olLayer = this.mapLayers.find(\n (layer) => layer.getProperties()['title'] === _layer?.title && layer.getProperties()['group'] === group.name\n );\n if (group.singleLayer) {\n const groupLayers =\n this.optionsCopy.layers?.filter((l) => l.group === group.name).map((layer) => layer.title) ?? [];\n\n this.mapLayers\n .filter((layer) => layer.getProperties()['group'] === group.name)\n .forEach((layer) => {\n if (groupLayers.includes(layer.getProperties()['title'])) {\n layer.setVisible(false);\n }\n });\n if (_layer) {\n olLayer?.setVisible(true);\n this.updateLayerVisibility(group.name, [_layer.title!]);\n } else {\n this.updateLayerVisibility(group.name, []);\n }\n } else {\n olLayer?.setVisible(!olLayer?.getVisible());\n\n const visibleLayers = group.visibleLayers.includes(_layer?.title!)\n ? group.visibleLayers.filter((layer) => layer !== _layer?.title)\n : [...group.visibleLayers, _layer?.title!];\n this.updateLayerVisibility(group.name, visibleLayers);\n }\n this.map.updateSize();\n }\n\n isLayerVisible(layer: MapWidgetLayerOptions, group?: LayerGroup): boolean {\n if (group && group.visibleLayers) {\n return group.visibleLayers.includes(layer.title ?? '');\n } else {\n return !!this.optionsCopy\n .layerGroups!.find((g) => g.name === layer.group)\n ?.visibleLayers.includes(layer.title ?? '');\n }\n }\n\n updateLayerVisibility(name: string, visibleLayers: string[] | string) {\n this.optionsCopy.layerGroups = [\n ...(this.optionsCopy.layerGroups ?? []).map((group) =>\n group.name === name\n ? {\n ...group,\n visibleLayers: visibleLayers\n ? typeof visibleLayers === 'string'\n ? [...group.visibleLayers, visibleLayers]\n : visibleLayers\n : group.visibleLayers\n }\n : group\n )\n ];\n }\n\n changeAutoLayer($event: any) {\n this.optionsCopy.automaticLayers = $event;\n if (!this.optionsCopy.automaticLayers) {\n delete this.optionsCopy.ignoreAutoLayer;\n }\n }\n\n get layerVisibleIdx() {\n return this.mapLayers.map((layer, idx) => (layer.getVisible() ? idx : 0)).reduce((a, b) => a + b, 0) || -1;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n\n // Trying to release objects\n this.clearLayers(this.map.getLayers().getArray());\n this.clearLayers(this.previousLayers);\n this.map.getRenderer()!.dispose();\n // @ts-ignore\n delete this.map;\n // @ts-ignore\n this.map = null;\n this.tooltipManager.destroy();\n }\n\n getStyle(_layer: MapWidgetLayerOptions) {\n const layer = _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n if (layer.additionalParameters?.STYLES) {\n return layer.additionalParameters?.STYLES;\n }\n /* Not manifest-defined style: use first in line because it's the default one sent by geoserver */\n const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };\n let possiblesStylesForLayer = possibleStylesForUrl.layers![layer.paramLayer];\n if (!possiblesStylesForLayer) {\n possiblesStylesForLayer = possibleStylesForUrl.layers![(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };\n }\n return possiblesStylesForLayer.styles[0]?.id;\n }\n\n changeLayerStyle($event: any, _layer: MapWidgetLayerOptions) {\n const layer = _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n if (!layer.additionalParameters) {\n layer.additionalParameters = {};\n }\n layer.additionalParameters.STYLES = $event;\n }\n\n getAsWmsType(_layer: MapWidgetLayerOptions) {\n return _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n }\n\n layerStyleOptions(_layer: MapWidgetLayerOptions) {\n const layer = _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };\n let possiblesStylesForLayer = possibleStylesForUrl.layers![layer.paramLayer];\n if (!possiblesStylesForLayer) {\n possiblesStylesForLayer = possibleStylesForUrl.layers![(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };\n }\n return possiblesStylesForLayer.styles;\n }\n\n triggerLayerRender() {\n this.map.render();\n }\n\n changeSlideOption($event: any) {\n this.optionsCopy.slide = $event;\n if ($event === false) {\n this.optionsCopy.layers?.forEach((layer) => (layer.slide = 'all'));\n }\n }\n\n toggleMenu() {\n this.actionMenuOpen$.next(!this.actionMenuOpen$.getValue());\n }\n\n private getOlZoomElement() {\n this.olZoomElement$.next(document.querySelector('.ol-zoom'));\n if (!this.olZoomElement$.getValue()) {\n setTimeout(() => this.getOlZoomElement(), 50);\n } else {\n const zoomIn = document.querySelector('.ol-zoom-in');\n if (zoomIn) {\n zoomIn.setAttribute('data-tooltip', this.translateService.instant('@pry.widget.map.zoomIn'));\n zoomIn.setAttribute('data-tooltip-position', 'left');\n zoomIn.classList.add('a-tooltip', '--nopos');\n zoomIn.removeAttribute('title');\n }\n const zoomOut = document.querySelector('.ol-zoom-out');\n if (zoomOut) {\n zoomOut.setAttribute('data-tooltip', this.translateService.instant('@pry.widget.map.zoomOut'));\n zoomOut.setAttribute('data-tooltip-position', 'left');\n zoomOut.classList.add('a-tooltip', '--nopos');\n zoomOut.removeAttribute('title');\n }\n }\n }\n\n changeSelection(action: 'click' | 'lasso' | 'rectangle' | 'zoom' | 'move' | 'export' | 'upload') {\n this.interactionManager.selectionInteraction.changeSelection(action);\n this.toggleMenu();\n }\n\n private clearLayers(layers: BaseLayer[]) {\n layers.forEach((layer) => {\n this.map.removeLayer(layer);\n if (layer instanceof VectorLayer && (layer as VectorLayer<VectorSource>).getSource()) {\n (layer as VectorLayer<VectorSource>).getSource()!.clear();\n layer.setSource(undefined);\n }\n if (layer instanceof TileLayer && (layer as TileLayer<any>).getSource()) {\n (layer as TileLayer<any>).getSource().clear();\n layer.setSource(undefined);\n }\n layer.dispose();\n });\n }\n\n addLayerGroup() {\n this.optionsCopy.layerGroups = [\n ...this.optionsCopy.layerGroups!,\n {\n name:\n this.translateService.instant('@pry.widget.map.layerSettings.group') +\n ' ' +\n (this.optionsCopy.layerGroups!.length + 1),\n singleLayer: false,\n visibleLayers: []\n }\n ];\n const group = this.optionsCopy.layerGroups[this.optionsCopy.layerGroups.length - 1];\n this.addLayer(group);\n }\n\n updateLayerGroupName(group: LayerGroup, $event: Event) {\n const [name, singleLayer, visibleLayers] = [group.name, group.singleLayer, group.visibleLayers];\n const groupIndex = this.optionsCopy.layerGroups!.findIndex((g) => g.name === group.name);\n const newName = ($event.currentTarget as HTMLInputElement).value;\n\n if (name === DEFAULT_LAYER_GROUP) {\n const layersToTransfer =\n this.optionsCopy.layers?.filter((layer) => layer.group === DEFAULT_LAYER_GROUP).map((l) => l.title) ?? [];\n this.optionsCopy.layerGroups = [\n ...this.optionsCopy.layerGroups!,\n {\n name: newName,\n singleLayer,\n visibleLayers: visibleLayers!.filter((l) => layersToTransfer.includes(l))\n }\n ];\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups.map((g, i) =>\n i === groupIndex\n ? {\n name: DEFAULT_LAYER_GROUP,\n singleLayer,\n visibleLayers: visibleLayers!.filter((l) => !layersToTransfer.includes(l))\n }\n : g\n );\n } else {\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.map((g, i) =>\n i === groupIndex ? { name: newName, singleLayer, visibleLayers } : g\n );\n }\n // update groups on options layers\n if (this.optionsCopy.layers) {\n this.optionsCopy.layers = this.optionsCopy.layers.map((layer) =>\n layer.group === name\n ? {\n ...layer,\n group: newName\n }\n : layer\n );\n }\n // update groups on ol layers\n this.mapLayers.forEach((layer) => {\n if (layer.getProperties()['group'] === name) layer.set('group', newName);\n });\n }\n\n deleteLayerGroup(name: string) {\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.filter((group) => group.name !== name);\n this.optionsCopy.layers = this.optionsCopy.layers?.map((layer) =>\n layer.group == name ? { ...layer, group: DEFAULT_LAYER_GROUP } : layer\n );\n }\n\n drop(event: CdkDragDrop<MapWidgetLayerOptions[]>, group: LayerGroup): void {\n const movedLayer = event.item.data as MapWidgetLayerOptions;\n if (event.previousContainer.id !== event.container.id) {\n this.moveLayerBetweenGroups(\n movedLayer,\n event.container.element.nativeElement.getAttribute('data-layer-group') ?? DEFAULT_LAYER_GROUP\n );\n }\n this.moveLayerInOptions(event.currentIndex, event.item.data as MapWidgetLayerOptions, group);\n }\n\n moveLayerBetweenGroups(movedLayer: MapWidgetLayerOptions, newGroup: string) {\n // remove it from old group\n this.updateLayerGroup(\n movedLayer.group!,\n undefined,\n this.optionsCopy.layerGroups\n ?.find((group) => group.name === movedLayer.group!)\n ?.visibleLayers.filter((layer) => layer !== movedLayer.title)\n );\n\n // add it to new group\n movedLayer.group = newGroup;\n this.updateLayerGroup(newGroup ?? DEFAULT_LAYER_GROUP, undefined, movedLayer.title!);\n this.removeEmptyLayerGroups();\n }\n\n moveLayerInOptions(targetIdxInGroup: number, movedLayer: MapWidgetLayerOptions, group: LayerGroup) {\n if (this.optionsCopy.layers) {\n const groupLayers = this.optionsCopy.layers.filter((layer) => layer.group === group.name);\n // indexes in optionsCopy\n const fromIndex = this.optionsCopy.layers.findIndex((layer) => layer.title === movedLayer.title);\n const toIndex = this.optionsCopy.layers.findIndex((layer) => layer.title === groupLayers[targetIdxInGroup].title);\n\n let newOrder = toIndex;\n this.optionsCopy.layers.splice(fromIndex, 1);\n this.optionsCopy.layers.splice(toIndex, 0, { ...movedLayer, order: newOrder });\n this.updateLayerOrder();\n }\n }\n\n toggleExpandAll(group: LayerGroup) {\n this.layerSettingsExpandedState[group.name] = !this.layerSettingsExpandedState[group.name];\n const layersToExpand =\n this.optionsCopy.layers?.filter((layer) => layer.group === group.name).map((layer) => layer.title) ?? [];\n\n Object.keys(this.layerSettingsExpandedState).forEach((layer) => {\n if (layersToExpand.includes(layer))\n this.layerSettingsExpandedState[layer] = this.layerSettingsExpandedState[group.name];\n });\n }\n\n toggleLayerExpand(layer: MapWidgetLayerOptions, group: LayerGroup) {\n this.layerSettingsExpandedState[layer.title!] = !this.layerSettingsExpandedState[layer.title!];\n if (this.layerSettingsExpandedState[layer.title!]) this.layerSettingsExpandedState[group.name] = true;\n if (group.visibleLayers.every((layerTitle) => !this.layerSettingsExpandedState[layerTitle])) {\n this.layerSettingsExpandedState[group.name] = false;\n }\n }\n\n updateLayerOrder() {\n let order = 1;\n this.optionsCopy.layerGroups?.forEach((group) => {\n const groupLayers = this.optionsCopy.layers?.filter((layer) => layer.group === group.name);\n if (groupLayers) {\n groupLayers.forEach((layer) => (layer.order = order++));\n }\n });\n }\n\n isGroupUsedByWidgetLayers(group: LayerGroup) {\n return this.optionsCopy.layers?.some((layer) => layer.group === group.name);\n }\n\n removeEmptyLayerGroups() {\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.filter(\n (group) =>\n this.optionsCopy.layers?.some((layer) => layer.group === group.name) || group.name === DEFAULT_LAYER_GROUP\n );\n }\n\n protected readonly DEFAULT_LAYER_GROUP = DEFAULT_LAYER_GROUP;\n}\n","<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }} :</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n ></pry-select>\n </div>\n @if (optionsCopy.style === STYLE_FROM_URL) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n }\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n <pry-checkbox (ngModelChange)=\"changeSlideOption($event)\" [ngModel]=\"hasSlideLayer$ | async\">\n {{ '@pry.widget.map.slide.global' | i18n }}\n </pry-checkbox>\n <div class=\"o-layer-settings\" cdkDropListGroup cdkDragBoundary>\n <h4 class=\"a-label\">{{ '@pry.widget.map.layerSettings.title' | i18n }}</h4>\n <div class=\"u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" (click)=\"addLayerGroup()\" type=\"button\">\n {{ '@pry.widget.map.layerSettings.addLayerGroup' | i18n }}\n </button>\n </div>\n @for (group of optionsCopy.layerGroups; track group; let groupIdx = $index) {\n @if (isGroupUsedByWidgetLayers(group)) {\n <div class=\"o-layer-settings__group\">\n <div class=\"m-form-label-field o-layer-settings__group-title\">\n <label class=\"a-label\" for=\"map_layerGroupTitle-{{ groupIdx }}\">\n {{ '@pry.widget.map.layerSettings.layerGroupName' | i18n }}<span class=\"-obligatory-red\">*</span\n >{{ '@pry.widget.map.layerSettings.optionalColon' | i18n }}\n </label>\n <div class=\"u-display-flex\">\n <div class=\"m-form-label-field u-display-flex -row -gap-10\">\n <input\n id=\"map_layerGroupTitle-{{ groupIdx }}\"\n class=\"a-form-field\"\n type=\"text\"\n (change)=\"updateLayerGroupName(group, $event)\"\n [value]=\"group.name === DEFAULT_LAYER_GROUP ? ('@pry.widget.map.noGroup' | i18n) : group.name\"\n />\n @if (group.name !== DEFAULT_LAYER_GROUP) {\n <button\n class=\"a-btn--icon-only a-tooltip o-layer-settings__delete-group\"\n [attr.data-tooltip]=\"'@pry.widget.map.layerSettings.deleteGroup' | i18n\"\n data-tooltip-position=\"left\"\n (click)=\"deleteLayerGroup(group.name)\"\n >\n <pry-icon [height]=\"16\" [width]=\"16\" iconSvg=\"bin_normal\"></pry-icon>\n </button>\n }\n </div>\n </div>\n </div>\n @if (group.name !== DEFAULT_LAYER_GROUP) {\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n type=\"radio\"\n id=\"multiselection-{{ groupIdx }}\"\n [ngModel]=\"group.singleLayer\"\n (ngModelChange)=\"updateLayerGroupSingleLayer(group, $event)\"\n [value]=\"false\"\n [name]=\"group.name\"\n />\n <label class=\"a-label\" for=\"multiselection-{{ groupIdx }}\">{{\n '@pry.widget.map.layerSettings.multipleLayer' | i18n\n }}</label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n type=\"radio\"\n id=\"monoselection-{{ groupIdx }}\"\n [ngModel]=\"group.singleLayer\"\n (ngModelChange)=\"updateLayerGroupSingleLayer(group, $event)\"\n [value]=\"true\"\n [name]=\"group.name\"\n />\n <label class=\"a-label\" for=\"monoselection-{{ groupIdx }}\">{{\n '@pry.widget.map.layerSettings.singleLayer' | i18n\n }}</label>\n </div>\n </div>\n }\n <div class=\"m-btn-group\">\n <div class=\"u-display-flex -align-center\">\n <button (click)=\"addLayer(group)\" class=\"a-btn -link-like\" type=\"button\">\n + {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n <button (click)=\"toggleExpandAll(group)\" class=\"a-btn -link-like\" type=\"button\">\n {{\n layerSettingsExpandedState[group.name]\n ? ('@pry.widget.map.layerSettings.foldAll' | i18n)\n : ('@pry.widget.map.layerSettings.unfoldAll' | i18n)\n }}\n </button>\n </div>\n <div\n cdkDropList\n class=\"o-layer-settings__layers\"\n (cdkDropListDropped)=\"drop($event, group)\"\n [attr.data-layer-group]=\"group.name\"\n >\n @for (layer of optionsCopy?.layers; track layer; let i = $index) {\n @if (layer.group === group.name) {\n <div\n class=\"o-layer-settings__layer-wrapper\"\n cdkDrag\n [cdkDragData]=\"layer\"\n [cdkDragDisabled]=\"layerSettingsExpandedState[layer.title!]\"\n >\n <div class=\"drag-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"o-layer-settings__layer-header\">\n <div class=\"u-display-flex -align-center\">\n <pry-icon\n [class.-disabled]=\"layerSettingsExpandedState[layer.title!]\"\n class=\"drag-handle\"\n [height]=\"16\"\n [width]=\"16\"\n iconSvg=\"drag_indicator\"\n ></pry-icon>\n <button\n class=\"a-btn--icon-only unfold-layer\"\n (click)=\"toggleLayerExpand(layer, group)\"\n type=\"button\"\n >\n <pry-icon\n [height]=\"5\"\n [width]=\"9\"\n [iconSvg]=\"layerSettingsExpandedState[layer.title!] ? 'chevron_top' : 'chevron_bottom'\"\n ></pry-icon>\n </button>\n <h5 class=\"a-h5\">{{ layer.title ?? ('@pry.widget.map.layer' | i18n: { index: i + 1 }) }}</h5>\n </div>\n <button\n class=\"o-layer-settings__delete-layer a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.widget.map.layerSettings.deleteLayer' | i18n\"\n data-tooltip-position=\"left\"\n (click)=\"deleteLayer(i, layer, group)\"\n >\n <pry-icon [height]=\"16\" [width]=\"16\" iconSvg=\"bin_normal\"></pry-icon>\n </button>\n </div>\n @if (layerSettingsExpandedState[layer.title!]) {\n <div class=\"o-layer-settings__layer-content\">\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n <fieldset>\n <legend class=\"u-visually-hidden\">\n {{ '@pry.widget.map.layerOptions' | i18n: { index: i + 1 } }}\n </legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"layer_{{ i + 1 }}_title\">{{\n '@pry.widget.map.layerTitle' | i18n\n }}</label>\n <input\n id=\"layer_{{ i + 1 }}_title\"\n class=\"a-form-field\"\n type=\"text\"\n (change)=\"changeTitle($event, layer, group)\"\n [value]=\"layer.title\"\n />\n </div>\n @if (!['geoserver', 'auto'].includes(layer.type)) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerType\">{{\n '@pry.widget.map.layerType.title' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [items]=\"layerTypes\"\n [ngModel]=\"layer.type\"\n i18nPrefix=\"@pry.widget.map.layerType.\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n }\n @if (['geoserver', 'wms'].includes(layer.type)) {\n <div class=\"m-form-label-field\">\n @if (getAsWmsType(layer); as wmslayer) {\n <label class=\"a-label\" for=\"map_layerStyle\">{{\n '@pry.widget.map.layerStyle' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerStyle($event, layer)\"\n [items]=\"layerStyleOptions(layer)\"\n [ngModel]=\"getStyle(layer)\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"map_layerStyle\"\n ></pry-select>\n }\n </div>\n }\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n </div>\n @if (\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n ) {\n <div\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n }\n </fieldset>\n </div>\n @if (\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n ) {\n <fieldset\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n @if (\n layer\n | geometryFieldsFor: { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async; as fields\n ) {\n @if (\n [\n 'heatmap',\n 'bubble',\n 'marker',\n 'point',\n 'line',\n 'polygon',\n 'multi-line',\n 'multi-polygon'\n ].indexOf(layer.type) >= 0\n ) {\n <div\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n ></pry-select>\n </div>\n </div>\n }\n @if (['heatmap', 'bubble'].indexOf(layer.type) >= 0) {\n <div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n ></pry-select>\n </div>\n </div>\n }\n }\n </fieldset>\n }\n @if (\n layer.type === 'wms' ||\n layer.type === 'geoserver' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n ) {\n <fieldset\n >\n @if (layer.type !== 'geoserver') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n }\n @if (layer.type === 'wms' || layer.type === 'wmts') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{\n '@pry.widget.map.wms.paramLayer' | i18n\n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n }\n @if (layer.type === 'wmts') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{\n '@pry.widget.map.wms.matrixSet' | i18n\n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n }\n @if (layer.type === 'wmts') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n }\n @if (layer.type === 'wms' || layer.type === 'geoserver') {\n <div class=\"m-form-label-field\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <pry-checkbox\n (ngModelChange)=\"changeParamTiled($event, layer)\"\n [ngModel]=\"layer?.paramTiled ?? false\"\n >\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n }\n </fieldset>\n }\n @if (layer.type === 'marker') {\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n @if (layer.clustered) {\n <div>\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n }\n </fieldset>\n }\n @if (optionsCopy.slide ?? false) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"slide_select\">{{ '@pry.widget.map.slide.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSlide($event, layer)\"\n [items]=\"slides\"\n [ngModel]=\"layer.slide ?? 'all'\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"slide_select\"\n ></pry-select>\n </div>\n }\n @if (optionsCopy.attributions) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n }\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n\n <div\n class=\"m-btn-group -map-selection-choice -vertical\"\n [class.-with-header]=\"displayHeader$ | async\"\n [class.-closed]=\"!(actionMenuOpen$ | async)\"\n >\n <div class=\"-vertical\">\n @for (action of basicActions$ | async; track action) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"changeSelection(action)\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n data-tooltip-position=\"right\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip -map-toggle\"\n id=\"open_menu\"\n [attr.aria-expanded]=\"actionMenuOpen$ | async\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu()\"\n >\n <pry-icon\n [iconSvg]=\"(actionMenuOpen$ | async) ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"12\"\n [height]=\"24\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.open' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"m-btn-group -map-selection-choice -map-export\" [class.-with-header]=\"displayHeader$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n data-tooltip-position=\"right\"\n (click)=\"export()\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n @if ((layers$ | async)?.length) {\n <div class=\"ol-control m-map-action m-map-action--layers\" [style.top.px]=\"layersTop$ | async\">\n <button\n class=\"m-map-action__button\"\n [class.a-tooltip]=\"!this.layersTabOpen\"\n [class.-tooltip-no-wrap]=\"!this.layersTabOpen\"\n (click)=\"toggleLayersWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.selectLayers' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n </div>\n <div class=\"m-map-pop-in -max-width-220\" [class.-hidden]=\"!layersTabOpen\" [style.top.px]=\"layersTop$ | async\">\n <h4 class=\"a-h4\">{{ '@pry.widget.map.layerSettings.selectLayers' | i18n }}</h4>\n <div class=\"m-map-pop-in__content\" [style.max-height.px]=\"layersHeight$ | async\">\n @for (group of (options$ | async)?.layerGroups ?? []; track group; let groupIdx = $index) {\n @if (isGroupUsedByWidgetLayers(group)) {\n <div class=\"m-map-pop-in__title m-map-pop-in__group-title\">\n <h5 class=\"a-h5\">\n {{ group.name === DEFAULT_LAYER_GROUP ? ('@pry.widget.map.noGroup' | i18n) : group.name }}\n </h5>\n </div>\n @if (group.singleLayer) {\n <div class=\"m-map-pop-in__radios\">\n <div class=\"m-map-pop-in__title\" [class.-hidden]=\"!layersTabOpen\">\n <input\n type=\"radio\"\n [name]=\"id + '-' + group.name\"\n id=\"{{ id }}-radio-layer-group-{{ groupIdx }}\"\n [ngModel]=\"group.visibleLayers.length\"\n [value]=\"0\"\n (change)=\"changeVisibility(group)\"\n />\n <label class=\"a-label\" for=\"{{ id }}-radio-layer-group-{{ groupIdx }}\">{{\n '@pry.widget.map.layerSettings.noLayer' | i18n\n }}</label>\n </div>\n @for (layer of optionsCopy.layers; track layer; let index = $index) {\n @if (layer.group === group.name) {\n <div class=\"m-map-pop-in__title\" [class.-hidden]=\"!layersTabOpen\">\n <input\n type=\"radio\"\n [name]=\"id + '-' + group.name\"\n id=\"{{ id }}-radio-{{ group.name }}-layer-{{ index }}\"\n [ngModel]=\"group.visibleLayers[0]\"\n [value]=\"layer.title\"\n (change)=\"changeVisibility(group, layer)\"\n />\n <label class=\"a-label\" for=\"{{ id }}-radio-{{ group.name }}-layer-{{ index }}\">{{\n layer.title ?? ('@pry.widget.map.missingTitle' | i18n)\n }}</label>\n </div>\n }\n }\n </div>\n } @else {\n @for (layer of optionsCopy.layers; track layer; let index = $index) {\n @if (layer.group === group.name) {\n <div class=\"m-map-pop-in__title\" [class.-hidden]=\"!layersTabOpen\">\n <pry-checkbox\n [ngModel]=\"isLayerVisible(layer, group)\"\n (change)=\"changeVisibility(group, layer)\"\n id=\"checkbox-layer-{{ index }}\"\n ></pry-checkbox>\n <label class=\"a-label\" for=\"checkbox-layer-{{ index }}\">\n {{ layer.title ?? ('@pry.widget.map.missingTitle' | i18n) }}\n </label>\n </div>\n }\n }\n }\n }\n }\n </div>\n </div>\n }\n @if ((legendLayers$ | async)?.length) {\n <div class=\"ol-control m-map-action m-map-action--legend\" [style.top.px]=\"legendTop$ | async\">\n <button\n [class.a-tooltip]=\"!this.legendTabOpen\"\n [class.-tooltip-no-wrap]=\"!this.legendTabOpen\"\n class=\"m-map-action__button\"\n (click)=\"toggleLegendWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.legends' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"legend\" [width]=\"18\" [height]=\"15\"></pry-icon>\n </button>\n </div>\n <div class=\"m-map-pop-in\" [class.-hidden]=\"!legendTabOpen\" [style.top.px]=\"legendTop$ | async\">\n <h4 class=\"a-h4\">{{ '@pry.widget.map.legendsTitle' | i18n }}</h4>\n <div class=\"m-map-pop-in__content\" [style.max-height.px]=\"layersHeight$ | async\">\n @for (geoLayer of legendLayers$ | async; track geoLayer; let index = $index) {\n @if (isLayerVisible(geoLayer)) {\n <div class=\"m-map-pop-in__title\" (click)=\"toggleLegend(index)\">\n @if (isLayerRendered(geoLayer) && !!geoLayer.title) {\n <pry-icon\n class=\"m-map-pop-in__dropdown-icon\"\n [iconSvg]=\"legendTabClosed[index] ? 'chevron_bottom' : 'chevron_top'\"\n [width]=\"12\"\n [height]=\"12\"\n ></pry-icon>\n }\n <h5 class=\"a-h5\">{{ geoLayer.title }}</h5>\n @if (!isLayerRendered(geoLayer)) {\n <pry-icon\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.widget.map.layerLoadError' | i18n\"\n [iconSvg]=\"'close'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n }\n </div>\n }\n <div\n class=\"m-map-pop-in__image\"\n [class.-hidden]=\"!legendTabOpen || legendTabClosed[index] || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n @if (geoLayer | legendUrl: { capabilities: (wmsCapabilities$ | async) }; as url) {\n <img\n [src]=\"url | getSecuredImage | async\"\n [alt]=\"'@pry.widget.map.legend' | i18n: { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n }\n @if (!(geoLayer | legendUrl: { capabilities: (wmsCapabilities$ | async) })) {\n <p class=\"m-map-pop-in__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n }\n </div>\n }\n </div>\n </div>\n }\n\n @if (leftSlideLayers.length > 0) {\n <div class=\"m-map-slide-legend -left\" [style.top.px]=\"legendTop$ | async\">\n <span class=\"m-map-slide-legend__title\">{{ '@pry.widget.map.slideTitle' | i18n }}:</span>\n @for (layer of leftSlideLayers; track layer) {\n <div>{{ layer.get('title') }}</div>\n }\n </div>\n }\n\n @if (rightSlideLayers.length > 0) {\n <div class=\"m-map-slide-legend -right\" [style.top.px]=\"legendTop$ | async\">\n <span class=\"m-map-slide-legend__title\">{{ '@pry.widget.map.slideTitle' | i18n }}:</span>\n @for (layer of rightSlideLayers; track layer) {\n <div>{{ layer.get('title') }}</div>\n }\n </div>\n }\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"0.01\"\n value=\"50\"\n #sliderElement\n class=\"o-map-slider\"\n [class.-hidden]=\"!(hasSlideLayer$ | async)\"\n (input)=\"triggerLayerRender()\"\n />\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ ((tooltipManager.tooltipDisplayedIndex$ | async) ?? 0) + 1 }} / {{ tooltipManager.tooltipNumber }}</p>\n <button\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n (click)=\"tooltipManager.tooltipMove(-1)\"\n [disabled]=\"!tooltipManager.tooltipCanMove(-1)\"\n >\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n (click)=\"tooltipManager.tooltipMove(1)\"\n [disabled]=\"!tooltipManager.tooltipCanMove(1)\"\n >\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipManager.clearTooltip(true)\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n map: {\n attribution: 'Layer credits',\n attributions: 'Display credits',\n style: 'Map style',\n noStyle: 'Empty map',\n styleFromUrl: 'Style from URL',\n styleUrl: 'URL',\n fit: 'Fit data',\n addLayer: 'Add layer',\n layer: 'Layer n°{{index}}',\n layerOptions: 'Layer options',\n layerTitle: 'Layer Label',\n order: 'Order of the layer',\n layerType: {\n title: 'Type',\n heatmap: 'Heatmap',\n bubble: 'Bubbles map',\n relation: 'Links',\n marker: 'Markers map',\n polygon: 'Shapes map',\n wms: 'WMS API',\n wmts: 'WMTS API',\n featurelayer: 'Feature layer',\n vectortile: 'Vector tile',\n rastertile: 'Raster tile',\n point: 'Points',\n line: 'Lines',\n geoserver: 'Geoserver ({{name}})',\n 'multi-line': 'Multi-lines',\n 'multi-polygon': 'Multi-polygons'\n },\n tooltip: {\n hover: 'Hover',\n click: 'Click',\n title: 'Opening tooltips'\n },\n tile: 'Tile layer options',\n locationAttr: 'Placement options',\n clustering: 'Clustering options',\n wms: {\n url: 'Service Url',\n paramLayer: 'Data identifier',\n paramTiled: 'Tiled',\n style: 'Style',\n matrixSet: 'matrixSet'\n },\n deleteLayer: 'Delete layer',\n locationArray: 'Lat and Lng in separate properties',\n locationAttribute: {\n both: 'Location property',\n lat: 'Latitude property',\n lng: 'Longitude property'\n },\n layerStyle: 'Layer style',\n intensityAttribute: 'Intensity property',\n classes: 'Classes displayed in layer',\n relations: 'Display links',\n clustered: 'Clustered',\n clusterDistance: 'Cluster distance',\n opacity: 'Opacity',\n address: 'Address',\n addressCoords: 'Coordinates',\n active: 'Active',\n inactive: 'Inactive',\n move: 'Move mode',\n lasso: 'Lasso selection',\n rectangle: 'Rectangle selection',\n click: 'Click selection',\n zoom: 'Zoom selection',\n export: 'Export map',\n legend: 'Legend of layer {{layer}}',\n legendNotProvided: 'Legend not provided by server',\n layersTitle: 'Layers',\n selectLayers: 'Select layers',\n legendsTitle: 'Legend',\n legends: 'Display legend',\n singleLayer: 'Single layer mode',\n autoLayer: 'Automatic datasource layers configuration',\n slide: {\n global: 'Use a slider',\n title: 'Display on slider',\n all: 'Everywhere',\n left: 'To the left',\n right: 'To the right'\n },\n open: 'Open/Close menu',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n slideTitle: 'Displayed data',\n layerLoadError: 'Error loading in layer data',\n layerSettings: {\n title: 'Configure layers',\n addLayerGroup: 'Add layer group',\n layerGroupName: 'Layer group title',\n optionalColon: '',\n singleLayer: 'Single layer selection',\n multipleLayer: 'Multi layer selection',\n unfoldAll: 'Unfold all layers',\n foldAll: 'Fold all layers',\n noLayer: 'No layer',\n selectLayers: 'Select layers to display',\n group: 'Group',\n deleteGroup: 'Delete group',\n deleteLayer: 'Delete layer',\n editLayerTitle: 'Edit layer title',\n editGroupName: 'Edit group name'\n },\n missingTitle: 'Missing title',\n noGroup: 'Without group'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n map: {\n attribution: 'Crédits de cette couche',\n attributions: 'Afficher les crédits',\n style: 'Style du fond de carte',\n noStyle: 'Aucun fond de carte',\n styleFromUrl: 'Style depuis une URL absolue',\n styleUrl: 'URL',\n fit: 'Adapter la taille aux données',\n addLayer: 'Ajouter une couche',\n layer: 'Couche n°{{index}}',\n layerOptions: 'Options de la couche',\n layerTitle: 'Libellé de la couche',\n order: 'Ordre de la couche',\n layerType: {\n title: 'Type',\n heatmap: 'Chaleur',\n relation: 'Relations',\n bubble: 'Bulles',\n marker: 'Marqueurs',\n polygon: 'Formes',\n wms: 'Service WMS',\n wmts: 'Service WMTS',\n featurelayer: 'Feature layer',\n vectortile: 'Vector tile',\n rastertile: 'Raster tile',\n point: 'Points',\n line: 'Lignes',\n geoserver: 'Geoserver ({{name}})',\n 'multi-line': 'Multi-lignes',\n 'multi-polygon': 'Multi-polygone'\n },\n tooltip: {\n hover: 'Survol',\n click: 'Clic',\n title: 'Ouverture des tooltips'\n },\n tile: 'Option de couche tuile',\n locationAttr: 'Options de positionnement',\n clustering: 'Options de regroupement',\n wms: {\n url: 'Url du service',\n paramLayer: 'Identifiant de donnnées',\n paramTiled: 'Sous forme de tuiles',\n style: 'Style',\n matrixSet: 'matrixSet'\n },\n deleteLayer: 'Supprimer la couche',\n locationArray: 'Latitude et Longitude séparées',\n locationAttribute: {\n both: 'Propriété des coordonnées',\n lat: 'Propriété de la latitude',\n lng: 'Propriété de la longitude'\n },\n layerStyle: 'Style de la couche',\n intensityAttribute: \"Propriété de l'intensité\",\n classes: 'Classes affichées dans cette couche',\n relations: 'Afficher les relations',\n clustered: 'Regroupement',\n clusterDistance: 'Distance de regroupement',\n opacity: 'Opacité',\n address: 'Adresse',\n addressCoords: 'Coordonnées',\n active: 'Active',\n inactive: 'Inactive',\n move: 'Mode déplacement',\n lasso: 'Sélection par lasso',\n rectangle: 'Sélection par rectangle',\n click: 'Sélectionner par clic',\n zoom: 'Zoom par rectangle',\n export: 'Exporter la carte',\n legendsTitle: 'Légende',\n legend: 'Légende de la couche {{layer}}',\n legendNotProvided: 'Légende non fournie par le serveur',\n layersTitle: 'Couches',\n selectLayers: 'Sélectionner les couches',\n legends: 'Afficher la légende',\n singleLayer: 'Mode mono-couche',\n autoLayer: 'Configuration automatique des sources de données',\n slide: {\n global: 'Utiliser un curseur',\n title: 'Afficher selon un curseur',\n all: 'Partout',\n left: 'Uniquement à gauche',\n right: 'Uniquement à droite'\n },\n open: 'Ouverture/Fermeture menu',\n zoomIn: 'Zoomer',\n zoomOut: 'Dézoomer',\n slideTitle: 'Données affichées',\n layerLoadError: 'Erreur de chargement de la couche',\n layerSettings: {\n title: 'Paramétrer les couches :',\n addLayerGroup: 'Ajouter un groupe de couche',\n layerGroupName: 'Titre du groupe de couche',\n optionalColon: ' :',\n singleLayer: 'Mono sélection',\n multipleLayer: 'Multi sélection',\n unfoldAll: 'Tout déplier',\n foldAll: 'Tout réplier',\n noLayer: 'Aucune couche',\n selectLayers: 'Sélectionnez les couches à afficher :',\n group: 'Groupe',\n deleteGroup: 'Supprimer le groupe',\n deleteLayer: 'Supprimer la couche',\n confirmDelete: 'Est-ce que vous êtes sûr de vouloir supprimer ce groupe de couches ?',\n editLayerTitle: 'Modifier le titre de la couche',\n editGroupName: 'Modifier le nom du groupe'\n },\n missingTitle: 'Titre manquant',\n noGroup: 'Sans groupe'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryEditInputModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryOverlayModule,\n PryRangeModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetMapComponent } from './component/widget-map.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { GeometryFieldsForPipe } from './pipe/widget-map-geometry-fields-for.pipe';\nimport { WidgetMapLegendUrlPipe } from './pipe/widget-map-legend-url.pipe';\nimport { PryWidgetMapCssComponent } from './style/css.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nconst components = [WidgetMapComponent, GeometryFieldsForPipe, PryWidgetMapCssComponent, WidgetMapLegendUrlPipe];\n\n@NgModule({\n declarations: [...components],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryOverlayModule,\n PryI18nModule,\n PryRangeModule,\n PryEditInputModule,\n DragDropModule\n ],\n exports: [...components]\n})\nexport class WidgetMapModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-map', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-map', enTranslations);\n }\n\n override getComponent() {\n return WidgetMapComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getProjection","Circle","i7.PryWidgetMapCssComponent","i9.GeometryFieldsForPipe","i10.WidgetMapLegendUrlPipe","i1"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-map.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-map/interaction/selection-interaction.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/interaction/interaction-manager.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/cql-utils.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/xml-utils.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map-layer.service.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/widget-map.utils.ts","../../../../projects/provoly/dashboard/widgets/widget-map/interaction/layer-slider.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/interaction/tooltip-manager.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-map/pipe/widget-map-legend-url.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map.component.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map.component.html","../../../../projects/provoly/dashboard/widgets/widget-map/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-map/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-map/widget-map.module.ts","../../../../projects/provoly/dashboard/widgets/widget-map/provoly-dashboard-widgets-widget-map.ts"],"sourcesContent":["import { Store } from '@ngrx/store';\nimport { DashboardActions, widgetMapConfig } from '@provoly/dashboard';\nimport { Feature, Map, MapBrowserEvent } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\nimport { Geometry, Polygon } from 'ol/geom';\nimport PointerInteraction from 'ol/interaction/Pointer';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport RenderBox from 'ol/render/Box';\nimport VectorSource from 'ol/source/Vector';\nimport { Fill, Style } from 'ol/style';\nimport { BehaviorSubject } from 'rxjs';\n\nexport class SelectionInteraction extends PointerInteraction {\n private coordinates: number[] | null;\n private features: string[];\n selectionType$ = new BehaviorSubject<'click' | 'lasso' | 'rectangle' | 'zoom' | 'move'>('move');\n private store?: Store;\n private currentRectangle = new RenderBox('ol-rectangle-selection');\n private overlayForLasso: VectorLayer<any>;\n private lassoCoordinates: number[][] = [];\n private currentLassoFeature: Feature<Polygon> | null = null;\n private actions: ('click' | 'lasso' | 'rectangle' | 'zoom' | 'move')[] = [];\n\n selectionStyle = new Style({\n fill: new Fill({\n color: 'rgba(251, 198, 199, 0.5)'\n })\n });\n\n constructor() {\n super({});\n\n this.coordinates = null;\n this.features = [];\n widgetMapConfig.actions$.subscribe((actions) => {\n // @ts-ignore\n this.actions = actions.filter((action) => action !== 'export' && action !== 'upload');\n this.selectionType$.next(this.actions[0]);\n });\n this.overlayForLasso = new VectorLayer({\n source: new VectorSource({\n useSpatialIndex: false,\n wrapX: false,\n features: []\n }),\n style: this.selectionStyle,\n updateWhileInteracting: true\n });\n }\n\n init(store: Store) {\n this.store = store;\n return this;\n }\n\n override handleDownEvent(evt: MapBrowserEvent<MouseEvent>) {\n const map = evt.map;\n\n if (this.selectionType$.getValue() === 'move') {\n return false;\n }\n\n if (this.selectionType$.getValue() === 'click') {\n this.features = [\n ...new Set(\n map\n .getFeaturesAtPixel(evt.pixel)\n .map((feature) => feature.get('id'))\n .filter((id) => !!id)\n )\n ];\n // Click and move are collisionning. Need to make another button if needed right now click is aborted\n return true;\n }\n\n if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {\n this.coordinates = evt.pixel;\n this.currentRectangle.setMap(evt.map);\n this.currentRectangle.setPixels(this.coordinates, this.coordinates);\n }\n\n if (this.selectionType$.getValue() === 'lasso') {\n this.getMap()?.addLayer(this.overlayForLasso);\n this.lassoCoordinates = [evt.coordinate];\n if (!this.currentLassoFeature) {\n this.currentLassoFeature = new Feature(new Polygon(this.getPolygonCoordinates(this.lassoCoordinates)));\n this.overlayForLasso.getSource().addFeature(this.currentLassoFeature);\n }\n }\n\n return true;\n }\n\n getPolygonCoordinates(coordinates: number[][]) {\n return [coordinates.concat(coordinates[0])];\n }\n\n override handleDragEvent(evt: MapBrowserEvent<MouseEvent>) {\n if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {\n this.currentRectangle.setPixels(this.coordinates ?? [0, 0], evt.pixel);\n return true;\n }\n if (this.selectionType$.getValue() === 'lasso') {\n this.lassoCoordinates.push(evt.coordinate);\n this.currentLassoFeature?.getGeometry()?.setCoordinates(this.getPolygonCoordinates(this.lassoCoordinates));\n return true;\n }\n return false;\n }\n\n override handleUpEvent() {\n if (this.selectionType$.getValue() === 'click' && this.features.length > 0) {\n this.store?.dispatch(DashboardActions.selectMany({ ids: this.features }));\n }\n\n if (this.selectionType$.getValue() === 'lasso') {\n const geometry = this.currentLassoFeature?.getGeometry();\n\n const boxFeatures = this.getMap()\n ?.getAllLayers()\n .filter(\n (layer) =>\n !(layer instanceof VectorTileLayer) &&\n !(layer instanceof TileLayer) &&\n layer?.getSource() instanceof VectorSource\n )\n .map((layer) =>\n (layer?.getSource() as VectorSource)\n ?.getFeatures()\n .filter((features: Feature<any>) => !!features.get('id'))\n .filter((feature: Feature<any>) => {\n switch (feature.get('type')) {\n case 'point':\n case 'marker':\n return geometry?.intersectsCoordinate(feature.getGeometry().getCoordinates());\n case 'bubble':\n return feature\n .getGeometry()\n .getCenter()\n .map((coords: Coordinate) => geometry?.intersectsCoordinate(coords))\n .reduce((a: boolean, b: boolean) => a || b, false);\n case 'line':\n return feature\n .getGeometry()\n .getCoordinates()\n .map((coords: Coordinate) => geometry?.intersectsCoordinate(coords))\n .reduce((a: boolean, b: boolean) => a || b, false);\n case 'polygon':\n return feature\n .getGeometry()\n .getCoordinates()[0]\n .map((coords: Coordinate) => geometry?.intersectsCoordinate(coords))\n .reduce((a: boolean, b: boolean) => a || b, false);\n default:\n return false;\n }\n })\n )\n .reduce((p, c) => [...p, ...c], []);\n\n const ids = [\n ...new Set(\n boxFeatures?.map((feature: Feature<Geometry>) => feature.get('id') as string).filter((id: string) => !!id)\n )\n ] as string[];\n\n this.store?.dispatch(DashboardActions.selectMany({ ids }));\n\n this.getMap()?.removeLayer(this.overlayForLasso);\n this.lassoCoordinates = [];\n }\n\n if (this.selectionType$.getValue() === 'rectangle') {\n this.currentRectangle.setMap(null as unknown as Map);\n\n const extent = this.currentRectangle.getGeometry().getExtent();\n const boxFeatures = this.getMap()\n ?.getLayers()\n .getArray()\n // @ts-ignore\n .map((layer) => layer.getSource())\n .map((source) => (source.getFeaturesInExtent ? source.getFeaturesInExtent(extent) : []))\n .reduce((p, c) => [...p, ...c], [])\n .filter(\n (feature: any) => !!feature.getGeometry().intersectsExtent && feature.getGeometry().intersectsExtent(extent)\n );\n\n const ids = [\n ...new Set(\n boxFeatures.map((feature: Feature<Geometry>) => feature.get('id') as string).filter((id: string) => !!id)\n )\n ] as string[];\n\n this.store?.dispatch(DashboardActions.selectMany({ ids }));\n }\n\n if (this.selectionType$.getValue() === 'zoom') {\n this.currentRectangle.setMap(null as unknown as Map);\n\n const extent = this.currentRectangle.getGeometry().getExtent();\n this.getMap()\n ?.getView()\n .fit(extent, { padding: [20, 20, 70, 70], duration: 200 });\n }\n\n if (this.selectionType$.getValue() === 'lasso') {\n this.getMap()?.removeLayer(this.overlayForLasso);\n }\n\n this.changeSelection(this.actions[0]);\n this.coordinates = null;\n this.features = [];\n\n return false;\n }\n\n changeSelection(type: string) {\n this.selectionType$.next(type as 'click' | 'lasso' | 'rectangle' | 'zoom' | 'move');\n }\n}\n","import { ContextMenuActions } from '@provoly/dashboard';\nimport { ScaleLine } from 'ol/control';\nimport { toLonLat } from 'ol/proj';\n// This is not a circular dependency\nimport type { WidgetMapComponent } from '../component/widget-map.component';\nimport { SelectionInteraction } from './selection-interaction.class';\n\nexport class InteractionManager {\n scaleControl?: ScaleLine;\n selectionInteraction = new SelectionInteraction();\n private component!: WidgetMapComponent;\n\n init(component: WidgetMapComponent) {\n this.component = component;\n this.addContextMenuInteraction();\n this.addScaleControl();\n this.addUpdateZoomAndCenter();\n this.component.map.addInteraction(this.selectionInteraction.init(this.component.store));\n return this;\n }\n\n listeners = {\n contextMenu: (e: MouseEvent) => {\n if (this.component.manifest.contextMenu !== false) {\n const mapCoordinates = this.component.map.getEventPixel(e);\n const itemId = this.component.map.forEachFeatureAtPixel(mapCoordinates, (feature: any) => feature.get('id'));\n this.component.store.dispatch(\n ContextMenuActions.open({\n itemId,\n clientX: e.clientX,\n clientY: e.clientY,\n resultSet: Array.isArray(this.component.manifest.datasource)\n ? this.component.manifest.datasource[0]\n : this.component.manifest.datasource,\n from: 'map',\n coordinates: toLonLat(\n this.component.map.getCoordinateFromPixel(mapCoordinates),\n this.component.map.getView().getProjection()\n ).reverse(),\n allowObjectCreation: false\n })\n );\n e.preventDefault();\n }\n }\n };\n\n private addContextMenuInteraction() {\n this.component.map.getViewport().addEventListener('contextmenu', this.listeners.contextMenu);\n }\n\n private addScaleControl() {\n if (!this.scaleControl) {\n this.scaleControl = new ScaleLine({\n units: 'metric',\n bar: true,\n steps: 4,\n text: true,\n minWidth: 140,\n dpi: 90\n });\n this.component.map.addControl(this.scaleControl);\n }\n }\n\n private addUpdateZoomAndCenter() {\n this.component.map.on('moveend', () => {\n this.component.optionsCopy.zoom = {\n start:\n this.component.map.getView().getZoom() ??\n this.component.optionsCopy.zoom?.start ??\n this.component.map.getView().getMinZoom(),\n min: this.component.map.getView().getMinZoom(),\n max: this.component.map.getView().getMaxZoom()\n };\n this.component.optionsCopy.center =\n toLonLat(this.component.map.getView().getCenter() ?? [0, 0]) ?? this.component.optionsCopy.center;\n this.component.zoomAndCenter$.next({\n zoom: this.component.optionsCopy.zoom,\n center: this.component.optionsCopy.center\n });\n });\n }\n}\n","import { Class, Field, FilterContext, TextFieldTypes } from '@provoly/dashboard';\n\nexport class CqlUtils {\n static getCQLParamsFor(\n datasourceId: string,\n filters: { [p: string]: FilterContext[] },\n classes: Class[],\n fields: Field[]\n ): string | null {\n if (!filters || !datasourceId || !filters[datasourceId] || filters[datasourceId].length === 0) {\n return null;\n }\n\n const attributesReference = classes.map((clazz) => clazz.attributes).flat();\n\n return filters[datasourceId]\n .map((cond) => {\n const attribute = attributesReference.find((attr) => attr.id === cond.attribute);\n const field = attribute?.field;\n const attributeName = attribute?.technicalName;\n\n return this.getConditionsForValue(attributeName, cond, field, datasourceId);\n })\n .filter((conds) => !!conds && conds.length > 0)\n .join(' AND ');\n }\n\n static getConditionsForValue(\n attributeName: string | undefined,\n cond: FilterContext,\n field: Field | undefined,\n datasourceId: string\n ) {\n let conditions: string[] = [];\n\n const values = (Array.isArray(cond.value) ? cond.value : [cond.value]) as string[] | number[];\n\n if (attributeName) {\n values.forEach((value) => {\n if (value !== undefined && (typeof value !== 'string' || value.length > 0)) {\n const quoteSafeValue = `${value}`.replace(/'/g, \"''\");\n switch (cond.operator) {\n case 'EQUALS':\n if (!field || TextFieldTypes.includes(field?.type)) {\n conditions.push(`${attributeName}='${quoteSafeValue}'`);\n } else {\n conditions.push(`${attributeName}=${value}`);\n }\n break;\n case 'CONTAINS':\n conditions.push(`${attributeName} LIKE '%${quoteSafeValue}%'`);\n break;\n case 'START_WITH':\n conditions.push(`${attributeName} LIKE '${quoteSafeValue}%'`);\n break;\n case 'END_WITH':\n conditions.push(`${attributeName} LIKE '%${quoteSafeValue}'`);\n break;\n case 'GREATER_THAN':\n conditions.push(`${attributeName}>${value}`);\n break;\n case 'LOWER_THAN':\n conditions.push(`${attributeName}<${value}`);\n break;\n case 'OUTSIDE':\n const splitI = (value as string)?.split(',');\n if (splitI && splitI.length > 1) {\n conditions.push(`( ${attributeName}<${splitI[0]} AND ${attributeName}>${splitI[1]} )`);\n }\n break;\n case 'INSIDE':\n const splitO = (value as string)?.split(',');\n if (splitO && splitO.length > 1) {\n conditions.push(`( ${attributeName}>${splitO[0]} AND ${attributeName}<${splitO[1]} )`);\n }\n break;\n }\n }\n });\n } else {\n console.warn(\n `Cannot add cql filter on datasource ${datasourceId} because ${cond.attribute} attribute not found in classes`\n );\n }\n\n return conditions.length > 1 ? '( ' + conditions.join(' OR ') + ' )' : conditions[0];\n }\n}\n","import { DEFAULT_PROJECTION } from '@provoly/dashboard';\nimport { Map } from 'ol';\nimport { get as getProjection, transform } from 'ol/proj';\n\nexport class XMLUtils {\n static find(childs: NodeListOf<ChildNode>, name: string) {\n if (!!childs) {\n for (let i = 0; i < childs.length; i++) {\n const node = childs[i];\n if (node.nodeName === name) {\n return node;\n }\n }\n }\n return null;\n }\n\n static findAll(childs: NodeListOf<ChildNode>, name: string) {\n const result = [];\n for (let i = 0; i < childs.length; i++) {\n const node = childs[i];\n if (node.nodeName === name) {\n result.push(node);\n }\n }\n return result;\n }\n\n static findWith(childs: NodeListOf<ChildNode>, attribute: string, value: string) {\n for (let i = 0; i < childs.length; i++) {\n const node = childs[i];\n const attrNode = XMLUtils.find(node.childNodes, attribute);\n if (attrNode?.textContent === value) {\n return node;\n }\n }\n return null;\n }\n\n static getMatchingLayer(paramLayer: string, doc?: Document) {\n if (doc) {\n const WMSCapability = XMLUtils.find(doc.childNodes, 'WMS_Capabilities');\n if (WMSCapability) {\n const Capabilities = XMLUtils.find(WMSCapability.childNodes, 'Capability');\n if (Capabilities) {\n const Layer = XMLUtils.find(Capabilities.childNodes, 'Layer');\n if (Layer) {\n let matchingLayer = XMLUtils.findWith(Layer.childNodes, 'Name', paramLayer);\n const split = paramLayer.split(':');\n if (!matchingLayer && split.length >= 2) {\n // Try again, splitting on \":\" in the name to ignore namespace if present\n matchingLayer = XMLUtils.findWith(Layer.childNodes, 'Name', split[split.length - 1]);\n }\n return matchingLayer;\n }\n }\n }\n }\n return null;\n }\n\n static allLayers(doc?: Document) {\n const result = [];\n if (doc) {\n const WMSCapability = XMLUtils.find(doc.childNodes, 'WMS_Capabilities');\n if (WMSCapability) {\n const Capabilities = XMLUtils.find(WMSCapability.childNodes, 'Capability');\n if (Capabilities) {\n const layerBloc = XMLUtils.find(Capabilities.childNodes, 'Layer');\n if (layerBloc && layerBloc.childNodes) {\n for (let i = 0; i < layerBloc.childNodes.length; i++) {\n const node = layerBloc.childNodes[i];\n if (node.nodeName === 'Layer') {\n result.push(node);\n }\n }\n }\n }\n }\n }\n return result;\n }\n\n static getLayerExtent(paramLayer: string, map: Map, doc?: Document) {\n if (!doc) {\n return null;\n }\n const matchingLayer = XMLUtils.getMatchingLayer(paramLayer, doc);\n if (matchingLayer) {\n const boundingBox = XMLUtils.find(matchingLayer.childNodes, 'BoundingBox');\n if (boundingBox) {\n // @ts-ignore\n const attributes = boundingBox.attributes;\n const projBox = getProjection(attributes.CRS.textContent ?? DEFAULT_PROJECTION);\n if (projBox) {\n return [\n transform(\n [parseFloat(attributes.minx.textContent), parseFloat(attributes.miny.textContent)],\n projBox,\n map.getView().getProjection()\n ),\n transform(\n [parseFloat(attributes.maxx.textContent), parseFloat(attributes.maxy.textContent)],\n projBox,\n map.getView().getProjection()\n )\n ];\n }\n }\n }\n return null;\n }\n\n static getPossibleLayerStyles(doc?: Document): {\n [param: string]: { param: string; styles: { id: string; label: string }[] };\n } | null {\n if (!doc) {\n return {};\n }\n const layers = XMLUtils.allLayers(doc);\n return (\n layers.map((layer) => {\n const layerName = XMLUtils.find(layer.childNodes, 'Name')?.textContent ?? '';\n const styles = XMLUtils.findAll(layer.childNodes, 'Style');\n const stylesArray = styles.map((style) => ({\n id: XMLUtils.find(style.childNodes, 'Name')?.textContent,\n label:\n XMLUtils.find(style.childNodes, 'Title')?.textContent ??\n XMLUtils.find(style.childNodes, 'Name')?.textContent\n })) as { id: string; label: string }[];\n const uniquesStyles = [...new Set(stylesArray.map((style) => style.id))].map((styleId) =>\n stylesArray.find((styleInArray) => styleInArray.id === styleId)\n );\n return {\n param: layerName,\n styles: uniquesStyles\n };\n }) as { param: string; styles: { id: string; label: string }[] }[]\n ).reduce((p, c) => ({ ...p, [c.param]: c }), {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Attribute,\n FieldType,\n ItemUtils,\n MapAutoLayerOptions,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetRelationLayerOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\n PryGeoAuthService,\n ResultSet\n} from '@provoly/dashboard';\nimport { Feature, Map } from 'ol';\nimport { getTopLeft, getWidth } from 'ol/extent';\nimport { GeoJSON, MVT } from 'ol/format';\nimport { Geometry } from 'ol/geom';\nimport { Heatmap, Tile } from 'ol/layer';\nimport BaseLayer from 'ol/layer/Base';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport { Cluster, ImageWMS, TileWMS, Vector, WMTS, XYZ } from 'ol/source';\nimport VectorSource from 'ol/source/Vector';\nimport VectorTile from 'ol/source/VectorTile';\nimport { Circle, Fill, Stroke, Style, Text } from 'ol/style';\nimport CircleStyle from 'ol/style/Circle';\nimport WMTSTileGrid from 'ol/tilegrid/WMTS';\nimport { ProjectionLike } from 'ol/proj';\nimport { WidgetMapUtils } from '../utils/widget-map.utils';\nimport ImageLayer from 'ol/layer/Image';\n\nexport type AttributesForClass = {\n [key: string]: {\n intensityAttribute: Attribute;\n locationAttribute: Attribute;\n };\n};\n\nexport type ItemStyles = { [id: string]: { classic: Style; bordered: Style } };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WidgetMapLayerService {\n styleCache: any = {};\n\n circleStyle = new Style({\n fill: new Fill({\n color: 'rgba(37,89,163,0.24)'\n }),\n stroke: new Stroke({\n color: 'rgb(37,89,163)',\n width: 2\n })\n });\n selectedCircleStyle = new Style({\n fill: new Fill({\n color: 'rgba(37,163,58,0.24)'\n }),\n stroke: new Stroke({\n color: 'rgb(37,163,58)',\n width: 2\n })\n });\n\n pointStyle = new Style({\n image: new Circle({\n fill: new Fill({ color: 'rgba(37,89,163,0.24)' }),\n stroke: new Stroke({ color: 'rgb(37,89,163)', width: 2 }),\n radius: 10\n })\n });\n selectedPointStyle = new Style({\n image: new Circle({\n fill: new Fill({ color: 'rgba(37,163,58,0.24)' }),\n stroke: new Stroke({ color: 'rgb(37,163,58)', width: 2 }),\n radius: 10\n })\n });\n geoAuthService?: PryGeoAuthService;\n\n withGeoAuth(geoAuthService: PryGeoAuthService) {\n this.geoAuthService = geoAuthService;\n }\n\n get implementationList() {\n return Object.keys(this.layersImplementation).filter((implementation) => implementation !== 'geoserver');\n }\n\n dontNeedLocation = ['relation', 'wms', 'wmts', 'geoserver', 'featurelayer', 'vectortile', 'rastertile'];\n dontNeedIntensity = [\n ...this.dontNeedLocation,\n 'marker',\n 'point',\n 'line',\n 'polygon',\n 'multi-line',\n 'multi-polygon',\n 'auto'\n ];\n\n layersImplementation = {\n auto: (\n layer: MapAutoLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layersImplementation[WidgetMapLayerService.translateFieldTypeToLayerType(layer.subType)](\n // @ts-ignore\n layer,\n attributesForClass,\n layerClassesId,\n resultSet,\n range,\n itemStyles,\n map\n ) as BaseLayer;\n },\n heatmap: (\n layer: MapWidgetHeatMapLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const heatmap = new Heatmap({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new Vector({ attributions: [layer.attribution ?? ''] }),\n blur: (layer.radius ?? WidgetMapUtils.DEFAULT_HEATMAP_RADIUS) / 2,\n radius: layer.radius ?? WidgetMapUtils.DEFAULT_HEATMAP_RADIUS,\n weight: (feature: any) => {\n const value = ItemUtils.getAttributeCalculatedValue(\n feature,\n attributesForClass[feature.get('oClass') as string].intensityAttribute\n ) as number;\n const atScale = (value - range.min) / (range.max - range.min);\n return layer.intensityAsc ? atScale : 1 - atScale;\n }\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .filter((item) => {\n const location = WidgetMapUtils.readGeometry(\n map.getView().getProjection(),\n item,\n 'point',\n attributesForClass[classId].locationAttribute\n );\n return !!location;\n })\n .forEach((item) => {\n heatmap\n .getSource()\n ?.addFeature(\n WidgetMapUtils.getFeatureFromItem(\n map.getView().getProjection(),\n item,\n 'heatpoint',\n attributesForClass[item.oClass].locationAttribute\n )\n );\n });\n });\n\n return heatmap as BaseLayer;\n },\n marker: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const vectorLayer = new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .filter((item) => {\n const location = WidgetMapUtils.readGeometry(\n map.getView().getProjection(),\n item,\n 'point',\n attributesForClass[item.oClass].locationAttribute\n );\n return !!location;\n })\n .forEach(async (item): Promise<void> => {\n const itemFeature = WidgetMapUtils.getFeatureFromItem(\n map.getView().getProjection(),\n item,\n 'marker',\n attributesForClass[item.oClass].locationAttribute,\n itemStyles[item.id]?.classic,\n itemStyles[item.id]?.bordered\n );\n itemFeature.setStyle(itemFeature.get('classicStyle'));\n vectorLayer.getSource()?.addFeature(itemFeature);\n });\n });\n\n return this.makeClustered(vectorLayer, layer);\n },\n point: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'point'\n );\n },\n line: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'line'\n );\n },\n 'multi-line': (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'multi-line'\n );\n },\n polygon: (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'polygon'\n );\n },\n 'multi-polygon': (\n layer: MapWidgetMarkerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return this.layerFromGeoJsonGeometry(\n map.getView().getProjection(),\n layer,\n layerClassesId,\n resultSet,\n attributesForClass,\n 'multi-polygon'\n );\n },\n bubble: (\n layer: MapWidgetBubbleLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const bubbleLayer = new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .filter((item) => {\n const location = WidgetMapUtils.readGeometry(\n map.getView().getProjection(),\n item,\n 'point',\n attributesForClass[item.oClass].locationAttribute\n );\n return !!location;\n })\n .forEach((item) => {\n const value = ItemUtils.getAttributeCalculatedValue(\n item,\n attributesForClass[item.oClass].intensityAttribute\n ) as number;\n const atScale = (value - range.min) / (range.max - range.min);\n const itemFeature = WidgetMapUtils.getCircleFeatureFromItem(\n map.getView().getProjection(),\n item,\n attributesForClass[item.oClass].locationAttribute,\n (layer.intensityAsc ? atScale : 1 - atScale) *\n (layer.radiusFactor ?? WidgetMapUtils.DEFAULT_RADIUS_INTENSITY_FACTOR),\n this.circleStyle,\n this.selectedCircleStyle\n );\n itemFeature.setStyle(itemFeature.get('classicStyle'));\n bubbleLayer.getSource()?.addFeature(itemFeature);\n });\n });\n\n return bubbleLayer;\n },\n relation: (\n layer: MapWidgetRelationLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n },\n wms: (\n layer: MapWMSLayerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const impl =\n layer.paramTiled === undefined || layer.paramTiled\n ? new Tile({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new TileWMS({\n attributions: [layer.attribution ?? ''],\n crossOrigin: 'anonymous',\n url: layer.url,\n tileLoadFunction: (tile: any, str: string) => this.geoAuthService?.customLoader(tile, str),\n params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled, ...(layer.additionalParameters ?? {}) }\n })\n })\n : new ImageLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new ImageWMS({\n attributions: [layer.attribution ?? ''],\n crossOrigin: 'anonymous',\n url: layer.url,\n imageLoadFunction: (tile: any, str: string) => this.geoAuthService?.customLoader(tile, str),\n params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled, ...(layer.additionalParameters ?? {}) }\n })\n });\n impl.set('url', layer.url);\n impl.set('paramLayer', layer.paramLayer);\n impl.set('oClass', layer.oClass);\n impl.set('getFeatureInfoAdditionalParameters', layer.getFeatureInfoAdditionalParameters ?? {});\n return impl;\n },\n wmts: (\n layer: MapWMTSLayerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const projection = map.getView().getProjection();\n const projectionExtent = projection.getExtent();\n const size = getWidth(projectionExtent) / 256;\n const resolutions = new Array(19);\n const matrixIds = new Array(19);\n for (let z = 0; z < 19; ++z) {\n // generate resolutions and matrixIds arrays for this WMTS\n resolutions[z] = size / Math.pow(2, z);\n matrixIds[z] = z;\n }\n return new Tile({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new WMTS({\n attributions: [layer.attribution ?? ''],\n crossOrigin: 'anonymous',\n url: layer.url,\n layer: layer.paramLayer,\n matrixSet: layer.matrixSet,\n projection,\n tileGrid: new WMTSTileGrid({\n origin: getTopLeft(projectionExtent),\n resolutions: resolutions,\n matrixIds: matrixIds\n }),\n style: layer.style\n })\n });\n },\n geoserver: (\n layer: MapGeoServerLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n const impl = this.layersImplementation['wms'](\n { ...layer, type: 'wms', oClass: layer.oClass },\n attributesForClass,\n layerClassesId,\n resultSet,\n range,\n itemStyles,\n map\n );\n impl.set('title', layer.title);\n impl.set('oClass', layer.oClass);\n impl.set('datasourceId', layer.datasourceId);\n impl.set('geomPropName', layer.geomPropName);\n return impl;\n },\n featurelayer: (\n layer: MapFeatureLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({\n attributions: [layer.attribution ?? ''],\n format: new GeoJSON(),\n url: layer.url\n })\n });\n },\n vectortile: (\n layer: MapVectorTileLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new VectorTileLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorTile({\n attributions: [layer.attribution ?? ''],\n format: new MVT(),\n url: layer.url\n })\n });\n },\n rastertile: (\n layer: MapRasterTileLayerOptions,\n attributesForClass: AttributesForClass,\n layerClassesId: string[],\n resultSet: ResultSet,\n range: { min: number; max: number },\n itemStyles: ItemStyles,\n map: Map\n ) => {\n return new Tile({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new XYZ({\n url: layer.url,\n attributions: [layer.attribution ?? '']\n })\n });\n }\n };\n\n private layerFromGeoJsonGeometry(\n projection: ProjectionLike,\n layer: MapWidgetMarkerLayerOptions,\n layerClassesId: string[],\n resultSet: ResultSet,\n attributesForClass: AttributesForClass,\n type: 'point' | 'line' | 'multi-line' | 'polygon' | 'multi-polygon'\n ) {\n const vectorLayer = new VectorLayer({\n minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new VectorSource({ attributions: [layer.attribution ?? ''] })\n });\n\n layerClassesId.forEach((classId) => {\n (resultSet.items[classId] || [])\n .map((item) => ({\n item,\n location: WidgetMapUtils.readGeometry(\n projection,\n item,\n type,\n attributesForClass[item.oClass].locationAttribute\n )\n }))\n .filter(({ location }) => !!location)\n .forEach(async (subItem): Promise<void> => {\n const itemFeature = new Feature({\n ...subItem.item,\n type,\n geometry: subItem.location ?? undefined,\n classicStyle: type === 'point' ? this.pointStyle : this.circleStyle,\n selectedStyle: type === 'point' ? this.selectedPointStyle : this.selectedCircleStyle\n });\n itemFeature.setStyle(itemFeature.get('classicStyle'));\n vectorLayer.getSource()?.addFeature(itemFeature);\n });\n });\n\n return this.makeClustered(vectorLayer, layer);\n }\n\n private makeClustered(layer: BaseLayer, layerOptions: MapWidgetLayerOptions) {\n if (!['marker', 'bubble'].includes(layerOptions.type) || !('clustered' in layerOptions && layerOptions.clustered)) {\n return layer;\n }\n // Clustering source\n const vectorLayer = layer as VectorLayer<VectorSource<Geometry>>;\n vectorLayer.setSource(\n new Cluster({\n distance: layerOptions.clusterDistance,\n minDistance: 10,\n source: vectorLayer.getSource() as VectorSource\n })\n );\n\n vectorLayer.setStyle((feature) => {\n const size = feature.get('features').length;\n if (size > 1) {\n let style = this.styleCache[size];\n if (!style) {\n style = new Style({\n image: new CircleStyle({\n radius: 10,\n stroke: new Stroke({\n color: '#fff'\n }),\n fill: new Fill({\n color: '#3399CC'\n })\n }),\n text: new Text({ text: `${size}` })\n });\n this.styleCache[size] = style;\n }\n return style;\n } else {\n return size === 1 ? feature.get('features')[0].get('classicStyle') : null;\n }\n });\n\n return layer;\n }\n\n static translateFieldTypeToLayerType(subType: string) {\n switch (subType) {\n case FieldType.POINT:\n return 'marker';\n case FieldType.LINE:\n return 'line';\n case FieldType.POLYGON:\n return 'polygon';\n case FieldType.MULTILINE:\n return 'multi-line';\n case FieldType.MULTIPOLYGON:\n return 'multi-polygon';\n default:\n console.warn(`wrong type ${subType} for auto options`);\n return 'marker';\n }\n }\n}\n","import {\n AggregationResult,\n Attribute,\n Class,\n DEFAULT_PROJECTION,\n Field,\n FieldType,\n GetCapabilitiesResponse,\n Item,\n ItemUtils,\n MapGeoServerLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n Relation,\n ResultSet\n} from '@provoly/dashboard';\nimport { Feature, Map } from 'ol';\nimport { Circle, LineString, Point } from 'ol/geom';\nimport { Style } from 'ol/style';\nimport { WidgetMapLayerService } from '../component/widget-map-layer.service';\nimport { get as getProjection, ProjectionLike, transform } from 'ol/proj';\nimport Geometry from 'ol/geom/Geometry';\nimport { GeoJSON } from 'ol/format';\nimport { XMLUtils } from './xml-utils.class';\n\nexport class WidgetMapUtils {\n static geoJSON = new GeoJSON();\n static populateLocationAttribute(\n layer: MapWidgetLayerOptions,\n resultSet: ResultSet,\n classesNotFiltered: Class[],\n fields: Field[]\n ) {\n if (\n ['heatmap', 'marker', 'bubble', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon', 'auto'].includes(\n layer.type\n ) &&\n !!resultSet &&\n !!classesNotFiltered &&\n classesNotFiltered.length > 0\n ) {\n const specificLayer = layer as\n | MapWidgetHeatMapLayerOptions\n | MapWidgetMarkerLayerOptions\n | MapWidgetBubbleLayerOptions;\n\n const classes = classesNotFiltered.filter(\n (cl) => specificLayer.classes?.includes(cl.id) || !specificLayer.classes || specificLayer.classes.length === 0\n );\n\n if (!specificLayer.attribute) {\n // No location attribute available, then try to guess one that will be ok\n\n const geometry = WidgetMapUtils.geometryForLayer(layer);\n\n let candidates: Attribute[] = [];\n if (Object.keys(resultSet.items).length > 0) {\n // Based on items that we have to display\n\n candidates = Object.keys(resultSet.items)\n .map((key) => ({ items: resultSet.items[key], oClass: classes.find((cl) => cl.id === key) }))\n .map(({ items, oClass }) =>\n (oClass ?? { attributes: [] }).attributes.filter((attr) => attr.field?.type === geometry)\n )\n .reduce((p, c) => [...p, ...c], []);\n } else {\n // We don't have any items to display, so allow all corresponding geometry fields\n candidates = classesNotFiltered\n .map((clazz) => clazz.attributes)\n .flat()\n .filter((attr) => attr.field.type === geometry);\n }\n\n if (candidates.length > 0) {\n specificLayer.attribute = candidates[0].technicalName;\n }\n }\n }\n }\n\n static populateIntensityAttribute(\n layer: MapWidgetLayerOptions,\n resultSet: ResultSet,\n classesNotFiltered: Class[],\n fields: Field[]\n ) {\n if (\n ['heatmap', 'bubble'].includes(layer.type) &&\n !!resultSet &&\n !!classesNotFiltered &&\n classesNotFiltered.length > 0\n ) {\n const specificLayer = layer as MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions;\n\n const classes = classesNotFiltered.filter(\n (cl) =>\n (specificLayer.classes?.includes(cl.id) || !specificLayer.classes || specificLayer.classes.length === 0) &&\n cl.attributes.find((attr) => attr.technicalName === (specificLayer?.attribute ?? []))\n );\n\n if (!specificLayer.intensityAttribute) {\n // No intensity attribute available, then take the maximum intensity matching attribute\n const candidatesDry = Object.keys(resultSet.items)\n .map((key) => ({ items: resultSet.items[key], oClass: classes.find((cl) => cl.id === key) }))\n .map(({ items, oClass }) => {\n return (oClass ?? { attributes: [] }).attributes\n .filter((attr) => attr.field?.type === FieldType.DECIMAL || attr.field?.type === FieldType.INTEGER)\n .map((attr) => {\n const attrValues = ItemUtils.pertinentValue(items, attr);\n return {\n min: Math.min(...attrValues),\n max: Math.max(...attrValues),\n technicalName: attr.technicalName\n };\n });\n })\n .reduce((p, c) => [...p, ...c], [])\n .sort((a, b) => b.max - a.max);\n\n if (candidatesDry.length > 0) {\n specificLayer.intensityAttribute = candidatesDry[0].technicalName;\n specificLayer.intensityAsc = true;\n }\n }\n }\n }\n\n static getFeatureFromItem(\n projection: ProjectionLike,\n item: Item,\n type: string,\n locationAttribute: Attribute,\n iconStyle?: Style,\n selectedIconStyle?: Style\n ) {\n return new Feature({\n ...item,\n type,\n geometry: WidgetMapUtils.readGeometry(projection, item, 'point', locationAttribute) ?? undefined,\n classicStyle: iconStyle ?? null,\n selectedStyle: selectedIconStyle ?? null\n });\n }\n\n static getCircleFeatureFromItem(\n projection: ProjectionLike,\n item: Item,\n locationAttribute: Attribute,\n radius: number,\n iconStyle: Style,\n selectedIconStyle: Style\n ) {\n return new Feature({\n ...item,\n geometry: new Circle(\n (WidgetMapUtils.readGeometry(projection, item, 'point', locationAttribute) as Point).getCoordinates(),\n radius\n ),\n classicStyle: iconStyle,\n selectedStyle: selectedIconStyle,\n type: 'bubble'\n });\n }\n\n static getLinkFeature(relation: Relation, featureSource: Feature<Point>, featureDestination: Feature<Point>) {\n return new Feature({\n ...relation,\n geometry: new LineString([\n // @ts-ignore\n featureSource.getGeometry()?.getCoordinates() ?? featureSource.getGeometry()?.getCenter() ?? [0, 0],\n // @ts-ignore\n featureDestination.getGeometry()?.getCoordinates() ?? featureDestination.getGeometry()?.getCenter() ?? [0, 0]\n ]),\n source: featureSource,\n destination: featureDestination,\n type: 'link'\n });\n }\n\n static getMapAsPng(map: Map) {\n return new Promise<string>((resolve, reject) => {\n map.once('rendercomplete', function () {\n const mapCanvas = document.createElement('canvas');\n const size = map.getSize() || [100, 100];\n mapCanvas.width = size[0];\n mapCanvas.height = size[1];\n const mapContext = mapCanvas.getContext('2d') || (null as unknown as CanvasRenderingContext2D);\n Array.prototype.forEach.call(document.querySelectorAll('.ol-layer canvas, canvas.ol-layer'), (canvas) => {\n if (canvas.width > 0) {\n const opacity = canvas.parentNode.style.opacity || canvas.style.opacity;\n mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\n\n const backgroundColor = canvas.parentNode.style.backgroundColor;\n if (backgroundColor) {\n mapContext.fillStyle = backgroundColor;\n mapContext.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n let matrix;\n const transform = canvas.style.transform;\n if (transform) {\n // Get the transform parameters from the style's transform matrix\n matrix = transform\n .match(/^matrix\\(([^(]*)\\)$/)[1]\n .split(',')\n .map(Number);\n } else {\n matrix = [\n parseFloat(canvas.style.width) / canvas.width,\n 0,\n 0,\n parseFloat(canvas.style.height) / canvas.height,\n 0,\n 0\n ];\n }\n // Apply the transform to the export map context\n CanvasRenderingContext2D.prototype.setTransform.apply(mapContext, matrix);\n mapContext.drawImage(canvas, 0, 0);\n }\n });\n mapContext.globalAlpha = 1;\n resolve(mapCanvas.toDataURL('image/png'));\n });\n map.renderSync();\n });\n }\n\n static exportMapAsImage(map: Map, filename: string) {\n WidgetMapUtils.getMapAsPng(map).then((data) => {\n const link = document.createElement('a');\n link.download = filename;\n link.href = data;\n link.click();\n });\n }\n\n static geometryForLayer(layer: MapWidgetLayerOptions): string {\n switch (layer.type) {\n case 'marker':\n case 'heatmap':\n case 'bubble':\n case 'point':\n return FieldType.POINT;\n case 'line':\n return FieldType.LINE;\n case 'polygon':\n return FieldType.POLYGON;\n case 'multi-line':\n return FieldType.MULTILINE;\n case 'multi-polygon':\n return FieldType.MULTIPOLYGON;\n case 'auto':\n return WidgetMapUtils.geometryForLayer({\n type: WidgetMapLayerService.translateFieldTypeToLayerType(layer.subType)\n } as MapWidgetLayerOptions);\n default:\n return FieldType.POINT;\n }\n }\n\n static assignLayersOrder(_layers: MapWidgetLayerOptions[]) {\n const layers = structuredClone(_layers) as MapWidgetLayerOptions[];\n\n layers.sort((l1, l2) => (l2.background ? 0 : 1) - (l1.background ? 0 : 1));\n\n // Assign sure things\n layers.forEach((layer, index) => {\n if (layer.background) {\n layer.order = WidgetMapUtils.BACKGROUND_ORDER;\n }\n if (index === 0 && !layer.order) {\n layer.order = 0;\n }\n });\n\n layers.forEach((layer, index) => {\n if (layer.order === undefined) {\n let [distanceToFirstPreviousOrder, distanceToFirstNextOrder] = [\n layers\n .slice(0, index)\n .reverse()\n .findIndex((element) => element.order !== undefined) + 1,\n layers.slice(index + 1).findIndex((element) => element.order !== undefined)\n ];\n\n let [previousOrderIndex, nextOrderIndex] = [\n distanceToFirstPreviousOrder > -1 ? index - distanceToFirstPreviousOrder : 0,\n distanceToFirstNextOrder + index + 1\n ];\n let [previousOrder, nextOrder] = [\n distanceToFirstPreviousOrder > -1 ? layers[previousOrderIndex].order! : 0,\n distanceToFirstNextOrder > -1 ? layers[nextOrderIndex].order! : -1\n ];\n\n if (nextOrder > 0 && nextOrder < previousOrder) {\n const newOrder = previousOrder + (nextOrderIndex - previousOrderIndex);\n console.warn(\n `the order property of layer no ${index + 2} was preset but doesn't follow the order of the other layers`\n );\n nextOrder = newOrder;\n }\n\n if (nextOrder > 0) {\n let relativeIndex = index - previousOrderIndex;\n layer.order =\n previousOrder + ((nextOrder - previousOrder) / (nextOrderIndex - previousOrderIndex)) * relativeIndex;\n } else {\n layer.order = previousOrder + distanceToFirstPreviousOrder;\n }\n }\n });\n\n return layers.sort((l1, l2) => (l1.order ?? 1) - (l2.order! ?? 1));\n }\n\n static readGeometry<T extends 'point' | 'line' | 'multi-line' | 'polygon' | 'multi-polygon'>(\n projection: ProjectionLike,\n item: Item,\n type: T,\n attribute: Attribute | undefined\n ) {\n if (!attribute) {\n // @ts-ignore\n return null;\n }\n\n let value = item.attributes[attribute.technicalName];\n if (!value) {\n console.warn(`Geometry attribute excluded for item ${item.id}`);\n return;\n }\n if (value.type === 'MULTI') {\n value = value.values[0];\n }\n\n if (value.visible === false) {\n console.warn(`Geometry not visible for item ${item.id}`);\n return;\n }\n\n let geometry;\n try {\n geometry = WidgetMapUtils.geoJSON.readGeometry(value.value as any, {\n featureProjection: projection\n }) as Geometry;\n } catch (e) {\n console.warn('error reading Geometry', value.value, e);\n }\n\n return geometry;\n }\n\n static projectExtentAggregationResponse(\n field: Field,\n extentResponse: AggregationResult,\n layer: MapGeoServerLayerOptions,\n wmsCapabilities: { [p: string]: GetCapabilitiesResponse | null } | undefined,\n map: Map\n ) {\n const projBox = getProjection(field!.crs ?? DEFAULT_PROJECTION);\n const response = extentResponse.values as {\n value: {\n top_left: {\n lon: string;\n lat: string;\n };\n bottom_right: {\n lon: string;\n lat: string;\n };\n };\n }[];\n if (\n projBox &&\n response.length > 0 &&\n response[0].value &&\n response[0].value.top_left &&\n response[0].value.top_left.lat !== undefined &&\n response[0].value.top_left.lon !== undefined &&\n response[0].value.bottom_right &&\n response[0].value.bottom_right.lat !== undefined &&\n response[0].value.bottom_right.lon !== undefined\n ) {\n return {\n datasource: layer.datasourceId,\n error: false,\n extent: [\n transform(\n [\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n top_left: {\n lon: string;\n };\n };\n }\n ).value.top_left.lon\n ),\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n top_left: {\n lat: string;\n };\n };\n }\n ).value.top_left.lat\n )\n ],\n projBox,\n map.getView().getProjection()\n ),\n transform(\n [\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n bottom_right: {\n lon: string;\n };\n };\n }\n ).value.bottom_right.lon\n ),\n parseFloat(\n (\n extentResponse.values[0] as {\n value: {\n bottom_right: {\n lat: string;\n };\n };\n }\n ).value.bottom_right.lat\n )\n ],\n projBox,\n map.getView().getProjection()\n )\n ]\n };\n }\n\n return {\n datasource: layer.datasourceId,\n extent: XMLUtils.getLayerExtent(layer.paramLayer, map, wmsCapabilities![layer.url]?.doc) ?? [],\n error: false\n };\n }\n\n static DEFAULT_HEATMAP_RADIUS = 25;\n static DEFAULT_RADIUS_INTENSITY_FACTOR = 10000;\n static DEFAULT_ZOOM_MIN = 3;\n static DEFAULT_ZOOM_START = 10;\n static DEFAULT_ZOOM_MAX = 18;\n static DEFAULT_MAP_CENTER = [2.2827217347381525, 48.864706031557716];\n\n static BACKGROUND_ORDER = 9999;\n}\n","import { Map } from 'ol';\nimport RenderEvent from 'ol/render/Event';\nimport { getRenderPixel } from 'ol/render';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport { Heatmap } from 'ol/layer';\n\nexport class LayerSlider {\n map!: Map;\n slider!: HTMLInputElement;\n\n init(map: Map, slider: HTMLInputElement) {\n this.map = map;\n this.slider = slider;\n return this;\n }\n\n applySlide(type: 'left' | 'right' | 'all', layer: TileLayer<any> | VectorLayer<any> | Heatmap) {\n layer.on('prerender', (event: RenderEvent) => {\n const mapSize = this.map.getSize();\n if (mapSize) {\n if (event.context instanceof CanvasRenderingContext2D) {\n const width = mapSize[0] * (parseFloat(this.slider.value) / 100);\n let tl = getRenderPixel(event, [0, 0]);\n let tr = getRenderPixel(event, [width, 0]);\n let bl = getRenderPixel(event, [0, mapSize[1]]);\n let br = getRenderPixel(event, [width, mapSize[1]]);\n if (type === 'right') {\n tl = getRenderPixel(event, [width, 0]);\n tr = getRenderPixel(event, [mapSize[0], 0]);\n bl = getRenderPixel(event, [width, mapSize[1]]);\n br = getRenderPixel(event, mapSize);\n }\n const ctx = event.context as CanvasRenderingContext2D;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(tl[0], tl[1]);\n ctx.lineTo(bl[0], bl[1]);\n ctx.lineTo(br[0], br[1]);\n ctx.lineTo(tr[0], tr[1]);\n ctx.closePath();\n ctx.clip();\n } else {\n const gl = event.context as unknown as WebGL2RenderingContext;\n const bottomLeft = getRenderPixel(event, [0, mapSize[1]]);\n const topRight = getRenderPixel(event, [mapSize[0], 0]);\n const leftWidth = (topRight[0] - bottomLeft[0]) * (parseFloat(this.slider.value) / 100);\n const rightWidth = (topRight[0] - bottomLeft[0]) * (1 - parseFloat(this.slider.value) / 100);\n const height = topRight[1] - bottomLeft[1];\n gl.enable(gl.SCISSOR_TEST);\n if (type === 'right') {\n gl.scissor(bottomLeft[0] + leftWidth, bottomLeft[1], rightWidth, height);\n } else {\n gl.scissor(bottomLeft[0], bottomLeft[1], leftWidth, height);\n }\n }\n }\n });\n layer.on('postrender', (event) => {\n if (event.context instanceof CanvasRenderingContext2D) {\n const ctx = event.context as CanvasRenderingContext2D;\n ctx.restore();\n } else {\n const gl = event.context as WebGL2RenderingContext;\n gl.disable(gl.SCISSOR_TEST);\n }\n });\n }\n}\n","import { Pixel } from 'ol/pixel';\nimport { ComponentRef, ElementRef, Injector, ViewContainerRef } from '@angular/core';\nimport {\n BaseTooltipComponent,\n DashboardActions,\n DashboardSelectors,\n MapGeoServerLayerOptions,\n Size,\n TooltipFactoryService,\n TooltipMode,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, debounceTime, Observable, Subscription, withLatestFrom } from 'rxjs';\nimport { Feature, Map, MapBrowserEvent, Overlay } from 'ol';\nimport { Store } from '@ngrx/store';\nimport { TOOLTIP_PADDING, WidgetMapComponent } from '../component/widget-map.component';\nimport { InteractionManager } from './interaction-manager.class';\nimport { Layer } from 'ol/layer';\nimport { Coordinate } from 'ol/coordinate';\n\nexport class TooltipManager {\n private tooltipFactoryService!: TooltipFactoryService;\n private injector!: Injector;\n private store!: Store;\n wmsFeatures$!: Observable<any[]>;\n classicFeatures$: BehaviorSubject<any> = new BehaviorSubject([]);\n popupOverlay?: Overlay;\n map!: Map;\n popup!: ElementRef;\n popupContent!: ViewContainerRef;\n public tooltipNumber = 0;\n interactionManager!: InteractionManager;\n previousTooltip?: ComponentRef<BaseTooltipComponent>;\n previousTooltipSub?: Subscription;\n public tooltipEvent?: MapBrowserEvent<MouseEvent>;\n parent!: WidgetMapComponent;\n interactionPopupOverlay!: Overlay;\n tooltipDisplayedIndex$ = new BehaviorSubject(0);\n private calculatedTooltipPosition?: Coordinate;\n\n init(\n tooltipFactoryService: TooltipFactoryService,\n injector: Injector,\n store: Store,\n subscriptions: Subscription,\n widgetSize$: Observable<Size>,\n displayHeader$: Observable<boolean | { [p: string]: boolean }>,\n map: Map,\n popup: ElementRef,\n popupContent: ViewContainerRef,\n interactionManager: InteractionManager,\n parent: WidgetMapComponent\n ) {\n this.tooltipFactoryService = tooltipFactoryService;\n this.injector = injector;\n this.store = store;\n this.parent = parent;\n this.map = map;\n this.popupContent = popupContent;\n this.popup = popup;\n this.interactionManager = interactionManager;\n this.wmsFeatures$ = this.store.select(DashboardSelectors.wmsFeatures(this.parent.id));\n\n subscriptions.add(\n combineLatest([this.wmsFeatures$, this.classicFeatures$, this.tooltipDisplayedIndex$])\n .pipe(debounceTime(50), withLatestFrom(widgetSize$, displayHeader$))\n .subscribe(([[wmsFeatures, classicFeatures, tooltipIndex], size, header]) => {\n if (map) {\n if (this.popupOverlay !== null) {\n this.clearTooltip();\n }\n this.popupOverlay = new Overlay({\n element: popup.nativeElement,\n offset: [9, 9]\n });\n this.map.addOverlay(this.popupOverlay);\n\n const allTooltipValues = [...wmsFeatures, ...classicFeatures.map((cf: any) => cf.values)];\n\n if (allTooltipValues[tooltipIndex]) {\n this.popupContent.clear();\n\n this.generateTooltip(allTooltipValues[tooltipIndex]).then((component) => {\n this.tooltipNumber = allTooltipValues.length;\n if (!component) {\n popup.nativeElement.hidden = true;\n this.popupOverlay?.setPosition([-9999999999, -9999999999]);\n } else {\n popup.nativeElement.hidden = false;\n // Do not go outside the map\n const rect = {\n height: 200 + (header ? WIDGET_HEADER_HEIGHT.value : 0) + TOOLTIP_PADDING,\n width: 300 + TOOLTIP_PADDING\n };\n if (!this.calculatedTooltipPosition) {\n let pixel = this.tooltipEvent?.pixel;\n if (!!pixel && pixel[0] + rect.width > size.width) {\n pixel[0] = size.width - rect.width;\n }\n if (!!pixel && pixel[1] + rect.height > size.height) {\n pixel[1] = size.height - rect.height;\n }\n this.calculatedTooltipPosition = this.map.getCoordinateFromPixel(pixel ?? [0, 0]);\n }\n this.popupOverlay?.setPosition(this.calculatedTooltipPosition);\n }\n });\n }\n }\n })\n );\n\n window.addEventListener('forceCloseMapTooltip', () => {\n this.clearTooltip();\n });\n\n this.addOverlayOnInteraction();\n\n return this;\n }\n\n private addOverlayOnInteraction() {\n if (!this.interactionPopupOverlay) {\n this.interactionPopupOverlay = new Overlay({\n element: this.popup.nativeElement,\n offset: [9, 9]\n });\n this.map.addOverlay(this.interactionPopupOverlay);\n }\n\n const popupListener = (event: MapBrowserEvent<MouseEvent>) => {\n const values = this.map.getFeaturesAtPixel(event.pixel, { hitTolerance: 5 });\n const valuesToDisplay = [...new Set(values.map((value) => value.get('id')).filter((id) => !!id))]\n .map((id) => values.find((value) => value.get('id') === id))\n .map((value) => ({\n oClass: value?.get('oClass'),\n coordinates: event.coordinate,\n values:\n value instanceof Feature ? value.getKeys().reduce((p, c) => ({ ...p, [c]: value?.get(c) }), {}) : undefined\n }))\n .filter((value) => value.oClass);\n this.classicFeatures$.next(valuesToDisplay);\n const wmsLayers = this.parent.getWMSLayers();\n if (wmsLayers) {\n this.getFeatureFromServer(wmsLayers, event.coordinate);\n }\n this.tooltipEvent = event;\n this.calculatedTooltipPosition = undefined;\n this.tooltipDisplayedIndex$.next(0);\n };\n\n if (this.parent.optionsCopy.tooltipMode !== TooltipMode.NONE) {\n this.parent.map.un('singleclick', popupListener);\n this.parent.map.on('singleclick', popupListener);\n }\n }\n\n generateTooltip(value: {\n oClass: string;\n coordinates: Pixel;\n values: any;\n }): Promise<ComponentRef<BaseTooltipComponent> | null> {\n if (value) {\n return new Promise((resolve) => {\n const component$ = this.tooltipFactoryService.generateTooltip(value.oClass, this.injector, this.popupContent);\n this.previousTooltipSub?.unsubscribe();\n this.previousTooltipSub = component$.subscribe((component) => {\n if (component) {\n if (this.previousTooltip) {\n this.previousTooltip.destroy();\n }\n component.instance.data.item = value;\n component.instance.popup = this.popup;\n resolve(component);\n }\n resolve(null);\n });\n });\n } else {\n return Promise.resolve(null);\n }\n }\n\n public clearTooltip(empty = false) {\n if (this.popupOverlay) this.map?.removeOverlay(this.popupOverlay);\n this.popupContent?.clear();\n this.previousTooltip?.destroy();\n this.previousTooltipSub?.unsubscribe();\n if (empty) {\n this.store.dispatch(DashboardActions.resetWmsFeatures({ componentId: this.parent.id }));\n this.classicFeatures$.next([]);\n }\n }\n\n public tooltipMove(number: number) {\n if (this.tooltipCanMove(number)) {\n this.tooltipDisplayedIndex$.next(this.tooltipDisplayedIndex$.getValue() + number);\n }\n }\n\n public tooltipCanMove(number: number) {\n return (\n this.tooltipDisplayedIndex$.getValue() + number >= 0 &&\n this.tooltipDisplayedIndex$.getValue() + number < this.tooltipNumber\n );\n }\n\n getFeatureFromServer(wmsLayers: Layer<any>[], pixel: Pixel) {\n for (const layer of wmsLayers) {\n let url = layer\n .getSource()\n .getFeatureInfoUrl(pixel, this.map.getView().getResolution(), this.map.getView().getProjection(), {\n INFO_FORMAT: 'application/json',\n FEATURE_COUNT: 10,\n ...layer.getProperties()['getFeatureInfoAdditionalParameters'],\n cql_filter: layer.getSource().getParams()['cql_filter']\n });\n if (\n (\n this.parent.optionsCopy.layers?.find((l) => {\n return l.title === layer.getProperties()['title'];\n }) as MapGeoServerLayerOptions\n )?.getWfsFeaturesForTooltips\n ) {\n this.store.dispatch(\n DashboardActions.getWfsFeaturesForPointStackTooltips({\n url,\n oClass: layer.getProperties()['oClass'] ?? '',\n coordinates: pixel,\n componentId: this.parent.id,\n geomPropName: layer.getProperties()['geomPropName']\n })\n );\n } else {\n if (url && url.indexOf('I=-1') === -1 && url.indexOf('J=-1') === -1) {\n this.store.dispatch(\n DashboardActions.getWmsFeatures({\n url,\n oClass: layer.getProperties()['oClass'] ?? '',\n coordinates: pixel,\n componentId: this.parent.id\n })\n );\n }\n }\n }\n }\n\n destroy() {\n this.store.dispatch(DashboardActions.resetWmsFeatures({ componentId: this.parent.id }));\n this.previousTooltipSub?.unsubscribe();\n this.previousTooltip?.destroy();\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-map-css',\n template: '',\n styleUrls: ['./_o-widget-map.scss', './_m-layer-legend.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetMapCssComponent {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassSelectors,\n Field,\n FieldSelectors,\n MapWidgetBubbleLayerOptions,\n MapWidgetGeometryLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable } from 'rxjs';\nimport { WidgetMapUtils } from '../utils/widget-map.utils';\n\n@Pipe({\n name: 'geometryFieldsFor'\n})\nexport class GeometryFieldsForPipe implements PipeTransform {\n classes$: Observable<Class[]>;\n fields$: Observable<Field[]>;\n\n constructor(private store: Store<any>) {\n this.classes$ = this.store\n .select(ClassSelectors.classes)\n .pipe(map((classes) => classes.sort((a, b) => a.name.localeCompare(b.name))));\n this.fields$ = this.store.select(FieldSelectors.fields);\n }\n\n transform(value: MapWidgetLayerOptions, ...args: any[]): Observable<Attribute[]> {\n const specificLayer = value as\n | MapWidgetHeatMapLayerOptions\n | MapWidgetMarkerLayerOptions\n | MapWidgetBubbleLayerOptions\n | MapWidgetGeometryLayerOptions;\n\n const limitToClasses = args[0].classes as string[];\n const type = WidgetMapUtils.geometryForLayer({ type: args[0].type });\n\n return combineLatest([this.classes$, this.fields$]).pipe(\n filter(([classes, fields]) => !!classes && !!fields && classes.length > 0 && fields.length > 0),\n map(([classes, fields]) => {\n const potentialFields = classes\n .map((cl) => cl.id)\n .filter(\n (oClassId) =>\n !specificLayer.classes ||\n specificLayer.classes.length === 0 ||\n !!specificLayer.classes?.find((cl) => oClassId === cl)\n )\n .filter((classId) => !limitToClasses || limitToClasses.length === 0 || limitToClasses.includes(classId))\n .map((oClassId) => classes.find((cl) => cl.id === oClassId) ?? { attributes: [] as Attribute[] })\n .map((oClass) => oClass.attributes)\n .reduce((prev, curr) => [...prev, ...curr], [])\n .filter((attr) => attr.field.type === type)\n .sort((a, b) => a.technicalName.localeCompare(b.technicalName));\n\n const resArr = [] as Attribute[];\n potentialFields.forEach(function (attr) {\n if (resArr.findIndex((x) => x.technicalName == attr.technicalName) <= -1) {\n resArr.push(attr);\n }\n });\n return resArr;\n })\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GetCapabilitiesResponse, MapGeoServerLayerOptions, MapWMSLayerLayerOptions } from '@provoly/dashboard';\nimport { XMLUtils } from '../utils/xml-utils.class';\n\n@Pipe({\n name: 'legendUrl'\n})\nexport class WidgetMapLegendUrlPipe implements PipeTransform {\n constructor() {}\n\n parser = new DOMParser();\n\n transform(\n geoLayer: MapGeoServerLayerOptions | MapWMSLayerLayerOptions,\n ...args: [{ capabilities: { [p: string]: GetCapabilitiesResponse | null } | undefined | null }]\n ): string {\n const capability = (args[0].capabilities ?? {})[geoLayer.url];\n if (capability) {\n const matchingLayer = XMLUtils.getMatchingLayer(geoLayer.paramLayer, capability.doc);\n if (matchingLayer) {\n const styles = XMLUtils.findAll(matchingLayer.childNodes, 'Style');\n if (geoLayer.additionalParameters && geoLayer.additionalParameters['STYLES'] !== undefined) {\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n const styleName = XMLUtils.find(style.childNodes, 'Name')?.textContent ?? '--';\n if (styleName === geoLayer.additionalParameters['STYLES']) {\n return this.returnStyleForLayer(style);\n }\n }\n } else {\n return this.returnStyleForLayer(styles[0]);\n }\n }\n }\n return '';\n }\n\n returnStyleForLayer(style: ChildNode): string {\n const legendUrl = XMLUtils.find(style.childNodes, 'LegendURL');\n if (legendUrl) {\n const resource = XMLUtils.find(legendUrl.childNodes, 'OnlineResource');\n if (resource) {\n // @ts-ignore\n return decodeURIComponent(resource.getAttribute('xlink:href')) + '&LEGEND_OPTIONS=forceLabels:on';\n }\n }\n return '';\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Inject,\n Injector,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n AggregationResult,\n Attribute,\n BaseWidgetMapLayerOptions,\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n ConfigSelectors,\n DashboardActions,\n DashboardSelectors,\n Dataset,\n DataSourceSelectors,\n DatasourceUtils,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FilterContext,\n GeoMetadata,\n GeometricFieldTypes,\n GetCapabilitiesResponse,\n ItemUtils,\n LayerGroup,\n MapAutoLayerOptions,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\n NamedQueryTypes,\n Operation,\n PRY_GEOAUTH_TOKEN,\n PryAggregationService,\n PryGeoAuthService,\n PryI18nService,\n ResultsetUtils,\n SymbolService,\n TooltipFactoryService,\n TooltipMode,\n WIDGET_HEADER_HEIGHT,\n widgetMapConfig\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { Feature, Map, View } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\nimport { boundingExtent, createEmpty } from 'ol/extent';\nimport { Circle, Geometry, Point } from 'ol/geom';\nimport { Heatmap, Layer, Tile } from 'ol/layer';\nimport BaseLayer from 'ol/layer/Base';\nimport VectorLayer from 'ol/layer/Vector';\nimport { fromLonLat } from 'ol/proj';\nimport { register } from 'ol/proj/proj4';\nimport { DataTile, ImageWMS, TileWMS } from 'ol/source';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\nimport proj4 from 'proj4';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n delay,\n distinctUntilChanged,\n filter,\n from,\n fromEvent,\n map,\n mergeMap,\n Observable,\n of,\n startWith,\n switchMap,\n withLatestFrom\n} from 'rxjs';\nimport { InteractionManager } from '../interaction/interaction-manager.class';\nimport { CqlUtils } from '../utils/cql-utils.class';\nimport { XMLUtils } from '../utils/xml-utils.class';\nimport { WidgetMapLayerService } from './widget-map-layer.service';\nimport MapboxVectorLayer from 'ol/layer/MapboxVector';\nimport { WidgetMapUtils } from '../utils/widget-map.utils';\nimport { LayerSlider } from '../interaction/layer-slider.class';\nimport TileLayer from 'ol/layer/Tile';\nimport WebGLTileLayer from 'ol/layer/WebGLTile';\nimport { Attribution, defaults } from 'ol/control';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { TooltipManager } from '../interaction/tooltip-manager.class';\nimport ImageLayer from 'ol/layer/Image';\n\nexport const TOOLTIP_PADDING = 15;\nexport const NON_MANDATORY_FIT_LAYER_TYPES = ['wms', 'geoserver'];\nexport const DEFAULT_LAYER_GROUP = 'DEFAULT';\n\n// Define Lambert Projection\nproj4.defs(\n 'EPSG:2154',\n '+proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +type=crs'\n);\nregister(proj4);\n\n@Component({\n selector: 'pry-widget-map',\n templateUrl: './widget-map.component.html'\n})\nexport class WidgetMapComponent extends DataWidgetComponent implements AfterViewInit, OnDestroy {\n static idCounter = 0;\n id = `${WidgetMapComponent.idCounter++}`;\n mapUrl$: Observable<string>;\n @ViewChild('mapRef') mapRef!: ElementRef;\n @ViewChild('popup') popup!: ElementRef;\n @ViewChild('popupContent', { read: ViewContainerRef }) popupContent!: ViewContainerRef;\n @ViewChild('exportTypeTemplate', { read: TemplateRef }) exportTypeTemplate!: TemplateRef<any>;\n @ViewChild('sliderElement') sliderElement!: ElementRef<HTMLInputElement>;\n options$: Observable<MapWidgetOptions>;\n layerTypes = this.widgetMapLayerService.implementationList\n .filter((type) => type !== 'auto')\n .sort((a, b) =>\n this.translateService\n .instant('@pry.widget.map.layerType.' + a)\n .localeCompare(this.translateService.instant('@pry.widget.map.layerType.' + b))\n );\n optionsCopy: MapWidgetOptions = {} as MapWidgetOptions;\n classes$: Observable<Class[]>;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n bottomLeft$: Observable<string>;\n layers$!: Observable<BaseLayer[]>;\n map!: Map;\n additionalLayers$ = new BehaviorSubject<VectorLayer<VectorSource<Geometry>>[]>([]);\n styles$: Observable<\n {\n identifier: string;\n label: string;\n }[]\n >;\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n i = 0;\n itemStyles$!: Observable<{\n [id: string]: {\n classic: Style;\n bordered: Style;\n };\n }>;\n height$: Observable<number>;\n actions$ = widgetMapConfig.actions$;\n geoServerLayerDescriptions$: Observable<MapGeoServerLayerOptions[]>;\n legendTabOpen = false;\n layersTabOpen = false;\n legendTabClosed: boolean[] = [];\n legendLayers$!: Observable<(MapGeoServerLayerOptions | MapWMSLayerLayerOptions)[]>;\n legendTop$: Observable<number>;\n layersTop$!: Observable<number>;\n legendHeight$: Observable<number>;\n layersHeight$!: Observable<number>;\n imageNotProvided: boolean[] = [];\n basicActions$: Observable<('click' | 'lasso' | 'rectangle' | 'zoom' | 'move' | 'export' | 'upload')[]>;\n zoomAndCenter$ = new BehaviorSubject<{\n zoom?: {\n start: number;\n min: number;\n max: number;\n };\n center?: number[];\n }>({});\n mapStyleUrl$!: Observable<string | null>;\n interactionManager: InteractionManager = new InteractionManager();\n tooltipManager: TooltipManager = new TooltipManager();\n mapStyleLayer$!: Observable<(VectorTileLayer | TileLayer<any>)[]>;\n STYLE_FROM_URL = '_url';\n NO_STYLE = 'none';\n wmsCapabilities$: Observable<\n | {\n [p: string]: GetCapabilitiesResponse | null;\n }\n | undefined\n >;\n autoDatasetLayers$: Observable<MapAutoLayerOptions[]>;\n fitExtents$!: Observable<\n {\n datasource: string;\n extent: Coordinate[];\n error: boolean;\n }[]\n >;\n datasourceFilters$: Observable<any>;\n usedClasses$: Observable<any>;\n layerSlider = new LayerSlider();\n hasSlideLayer$: Observable<boolean>;\n slides: { id: undefined | string; label: string }[];\n possibleStyles: {\n [p: string]: {\n layers: { [p: string]: { param: string; styles: { id: string; label: string }[] } } | null;\n url: string;\n };\n } = {};\n attributions = new Attribution();\n actionMenuOpen$ = new BehaviorSubject(false);\n attributions$: Observable<boolean>;\n olZoomElement$ = new BehaviorSubject<HTMLDivElement | null>(null);\n previousLayers: BaseLayer[] = [];\n layerSettingsExpandedState: { [key: string]: boolean } = {};\n\n constructor(\n store: Store<any>,\n public translateService: PryI18nService,\n private tooltipFactoryService: TooltipFactoryService,\n private symbolService: SymbolService,\n private injector: Injector,\n private widgetMapLayerService: WidgetMapLayerService,\n private pryAggregationService: PryAggregationService,\n el: ElementRef,\n @Optional() @Inject(PRY_GEOAUTH_TOKEN) private geoAuthService: PryGeoAuthService\n ) {\n super(store, el);\n\n this.getOlZoomElement();\n\n this.slides = [\n { id: 'all', label: this.translateService.instant('@pry.widget.map.slide.all') },\n { id: 'left', label: this.translateService.instant('@pry.widget.map.slide.left') },\n { id: 'right', label: this.translateService.instant('@pry.widget.map.slide.right') }\n ];\n\n this.widgetMapLayerService.withGeoAuth(this.geoAuthService);\n\n this.basicActions$ = combineLatest([\n this.actions$,\n this.actionMenuOpen$,\n this.interactionManager.selectionInteraction.selectionType$\n ]).pipe(\n map(([actions, menuOpen, selectionType]) =>\n menuOpen\n ? actions.filter((action) => action !== 'export' && action !== 'upload')\n : actions\n .filter((action) => action !== 'export' && action !== 'upload')\n .filter((action) => selectionType === action)\n )\n );\n\n this.classes$ = this.store\n .select(ClassSelectors.classes)\n .pipe(map((classes) => classes.sort((a, b) => a.name.localeCompare(b.name))));\n this.usedClasses$ = combineLatest([this.classes$, this.usedDatasources$]).pipe(\n map(([classes, datasources]) => {\n return classes.filter((classItem) =>\n datasources.some((dataSource) => {\n if (dataSource.sourceType === 'namedQuery' && 'type' in dataSource.request) {\n if (\n dataSource.request.type === NamedQueryTypes.MULTI_CLASS ||\n dataSource.request.type === NamedQueryTypes.FULL_TEXT\n ) {\n return true;\n }\n }\n return dataSource.sourceType === 'dataset'\n ? dataSource.oClass === classItem.id\n : dataSource.sourceType === 'namedQuery' && 'oClass' in dataSource.request\n ? dataSource.request.oClass === classItem.id\n : dataSource.sourceType === 'namedQuery' && 'type' in dataSource.request\n ? dataSource.request.type === NamedQueryTypes.MONO_CLASS\n : false;\n })\n );\n })\n );\n this.fields$ = this.store.select(FieldSelectors.fields);\n\n this.datasourceFilters$ = combineLatest([\n this.store.select(DashboardSelectors.datasourceFilters),\n this.datasourceIds$\n ]).pipe(\n map(\n ([filters, ids]) =>\n Object.keys(filters)\n .filter((filterDsKey) => ids.includes(filterDsKey))\n .reduce((p, c) => ({ ...p, [c]: filters[c] }), {}) as {\n [p: string]: FilterContext[];\n }\n ),\n distinctUntilChanged((p, c) => equal(p, c))\n );\n\n this.styles$ = this.store.select(ConfigSelectors.mapStyles).pipe(\n map((styles) =>\n styles.concat(\n {\n identifier: this.NO_STYLE,\n label: this.translateService.instant('@pry.widget.map.noStyle')\n },\n {\n identifier: this.STYLE_FROM_URL,\n label: this.translateService.instant('@pry.widget.map.styleFromUrl')\n }\n )\n )\n );\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.geoServerLayerDescriptions$ = combineLatest([\n this.usedDatasources$.pipe(\n startWith([]),\n distinctUntilChanged((p, c) => equal(p, c))\n ),\n this.store.select(ConfigSelectors.geoServerUrl).pipe(startWith(undefined))\n ]).pipe(\n debounceTime(100),\n map(([dataSources, geoServerUrl]) => {\n if (!geoServerUrl) return [];\n return dataSources\n .filter((ds) => DatasourceUtils.isGeo(ds))\n .map((ds) => {\n ds = ds as unknown as Dataset;\n const metadatas: {\n [key: string]: string;\n } = {};\n ds.metadata?.forEach((m) => (metadatas[m.metadataDef.name] = m.value));\n return {\n type: 'geoserver',\n url: `${geoServerUrl}/${\n metadatas[GeoMetadata.NAMESPACE].length > 0 ? metadatas[GeoMetadata.NAMESPACE] + '/' : ''\n }wms?SERVICE=WMS&VERSION=1.3.0`,\n paramTiled: true,\n opacity: parseInt(metadatas[GeoMetadata.OPACITY] ?? 100, 10),\n oClass: ds.oClass,\n key: metadatas[GeoMetadata.NAMESPACE] + ':' + metadatas[GeoMetadata.KEY],\n namespace: metadatas[GeoMetadata.NAMESPACE],\n paramLayer: metadatas[GeoMetadata.KEY],\n name: ds.name,\n datasourceId: ds.id,\n group: DEFAULT_LAYER_GROUP\n };\n })\n .map((layer) => layer as MapGeoServerLayerOptions);\n }),\n distinctUntilChanged((p, c) => equal(p, c)),\n startWith([])\n );\n\n this.autoDatasetLayers$ = combineLatest([\n this.classes$,\n this.usedDatasources$.pipe(\n startWith([]),\n map(\n (datasources) =>\n datasources.filter((ds) => ds.sourceType === 'dataset' && !DatasourceUtils.isGeo(ds)) as Dataset[]\n )\n )\n ]).pipe(\n map(\n ([classes, dataSets]) =>\n dataSets\n .map((ds) => {\n const model = classes.find((clazz) => clazz.id === ds.oClass);\n const geoAttributes = (model?.attributes.map((attr) => attr) ?? []).filter((attr) =>\n GeometricFieldTypes.includes(attr.field.type)\n );\n return geoAttributes.map(\n (attr) =>\n ({\n type: 'auto',\n title: `${ds.name}${geoAttributes.length > 1 ? ' - ' + attr.name : ''}`,\n oClass: ds.oClass,\n key: ds.id,\n subType: attr.field!.type,\n classes: [ds.oClass],\n attribute: attr.technicalName,\n group: DEFAULT_LAYER_GROUP\n }) as MapAutoLayerOptions\n );\n })\n .flat() as MapAutoLayerOptions[]\n )\n );\n\n this.subscriptions.add(\n this.manifest$\n .pipe(\n map((manifest) =>\n (\n (((manifest.options ?? { layers: [] }) as MapWidgetOptions).layers ?? []).filter((layer) =>\n ['wms'].includes(layer.type)\n ) as MapWMSLayerLayerOptions[]\n ).map((layer) => layer.url)\n )\n )\n .subscribe((urls) => urls.forEach((url) => this.store.dispatch(DashboardActions.getCapability({ url }))))\n );\n\n this.wmsCapabilities$ = this.store.select(DashboardSelectors.capabilities);\n\n this.options$ = combineLatest([\n this.manifest$,\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.styles$,\n this.geoServerLayerDescriptions$,\n this.wmsCapabilities$,\n this.autoDatasetLayers$\n ]).pipe(\n map(([manifest, resultSet, classes, fields, mapStyles, geoLayers, capabilities, autoDatasetLayers]) => {\n // auto determine layers parameters to provide a working view\n const autoOptions = structuredClone(manifest.options ?? {}) as MapWidgetOptions;\n if (!autoOptions.tooltipMode) {\n autoOptions.tooltipMode = TooltipMode.CLICK;\n }\n\n autoOptions.layers = [\n ...(autoOptions.layers ?? []).filter((layer) => layer.type !== 'auto'),\n ...(autoOptions.automaticLayers\n ? autoDatasetLayers\n .filter(\n (layer) =>\n !autoOptions.ignoreAutoLayer ||\n !autoOptions.ignoreAutoLayer.includes(layer.key + '-' + layer.subType)\n )\n .map((layer) => ({\n ...layer,\n ...((autoOptions.layers ?? []).find(\n // @ts-ignore\n (prevLayer) => prevLayer.key === layer.key && prevLayer.attribute === layer.attribute\n ) ?? {})\n }))\n : [])\n ];\n\n autoOptions.layers?.forEach((layer, i) => {\n WidgetMapUtils.populateLocationAttribute(layer, resultSet, classes, fields);\n WidgetMapUtils.populateIntensityAttribute(layer, resultSet, classes, fields);\n if (autoOptions.attributions) {\n layer.attribution = layer.attribution ?? '';\n }\n });\n\n const actualLayerKeys = (autoOptions.layers ?? [])\n .map((layer) => (layer as MapGeoServerLayerOptions).key ?? null)\n .filter((key) => !!key);\n\n // Get all previous layers, without geoserver layers that are not requested anymore, then add new geoserver layers (potentially with a preconfig from manifest).\n autoOptions.layers = [\n ...(autoOptions.layers ?? []).map((layer) => {\n // @ts-ignore\n const geoLayer = geoLayers.find((geoLayer) => layer.key === geoLayer.key) ?? null;\n return layer.type === 'geoserver'\n ? geoLayer\n ? { ...geoLayer, ...layer, url: geoLayer.url }\n : (null as unknown as MapWidgetLayerOptions)\n : { ...layer };\n }),\n ...geoLayers.filter((layer) => !actualLayerKeys.includes(layer.key))\n ].filter((layer) => !!layer);\n\n autoOptions.layers.forEach((layer, index) => {\n this.setDefaultLayerTitle(layer, index, capabilities);\n });\n\n if (\n !!mapStyles &&\n mapStyles.length > 0 &&\n (!autoOptions.style || !mapStyles.map((style) => style.identifier).includes(autoOptions.style))\n ) {\n const lightStyles = mapStyles.filter((style) => !(style.identifier ?? '-').includes('dark'));\n autoOptions.style = lightStyles.length > 0 ? lightStyles[0].identifier : mapStyles[0].identifier;\n }\n\n if (autoOptions.ignoreAutoLayer) {\n const base = autoOptions.ignoreAutoLayer;\n\n // Remove from ignoreAutoLayers, values that are not necessary\n const possibleIgnoreAutoLayerKeys = autoDatasetLayers.map((layer) => layer.key + '-' + layer.subType);\n autoOptions.ignoreAutoLayer = (autoOptions.ignoreAutoLayer ?? []).filter((key) =>\n possibleIgnoreAutoLayerKeys.includes(key)\n );\n if (autoOptions.ignoreAutoLayer.length === 0) {\n delete autoOptions.ignoreAutoLayer;\n }\n\n if (!autoOptions.ignoreAutoLayer || base.length !== autoOptions.ignoreAutoLayer.length) {\n this.emitManifest();\n }\n }\n\n autoOptions.layers = WidgetMapUtils.assignLayersOrder(autoOptions.layers);\n\n if (autoOptions.fit !== undefined) {\n autoOptions.layers.forEach(\n (layer) => (layer.fit = !NON_MANDATORY_FIT_LAYER_TYPES.includes(layer.type) || autoOptions.fit)\n );\n delete autoOptions.fit;\n }\n\n [\n ...new Set(\n (\n autoOptions.layers.filter((layer) => ['wms', 'geoserver'].includes(layer.type)) as (\n | MapWMSLayerLayerOptions\n | MapGeoServerLayerOptions\n )[]\n ).map((layer) => layer.url)\n )\n ].forEach((url) => {\n if (capabilities && capabilities[url] === undefined) {\n this.store.dispatch(DashboardActions.getCapability({ url: url }));\n }\n });\n\n autoOptions.layers = autoOptions.layers.map((layer) => ({\n ...layer,\n title: layer.title ?? this.translateService.instant(`@pry.widget.map.layerType.${layer.type}`, { ...layer }),\n group: layer.group ?? DEFAULT_LAYER_GROUP\n }));\n\n autoOptions.layerGroups = autoOptions.layerGroups ?? [];\n if (!autoOptions.layerGroups.find((g) => g.name === DEFAULT_LAYER_GROUP)) {\n autoOptions.layerGroups.push({\n name: 'DEFAULT',\n singleLayer: false,\n visibleLayers: autoOptions.layers\n ? autoOptions.layers.filter((layer) => layer.group === DEFAULT_LAYER_GROUP).map((layer) => layer.title)\n : ([] as string[])\n } as LayerGroup);\n }\n\n return autoOptions;\n }),\n distinctUntilChanged((p, c) => equal(p, c))\n );\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = structuredClone(options);\n this.optionsCopy.layers?.forEach(\n (layer) => (this.layerSettingsExpandedState[layer.title ?? 'MISSING TITLE'] = false)\n );\n this.optionsCopy.layers = this.optionsCopy.layers?.map((layer) => ({\n ...layer,\n group: layer.group ?? DEFAULT_LAYER_GROUP\n }));\n })\n );\n\n this.mapUrl$ = this.store.select(ConfigSelectors.mapUrl);\n\n this.bottomLeft$ = this.widgetSize$.pipe(\n map((size) => `translate(10px ,calc(${size.height}px - 100% - 10px))`),\n delay(10)\n );\n\n this.itemStyles$ = combineLatest([this.resultSet$, this.manifest$, this.staticResultSet$]).pipe(\n mergeMap(([rs, manifest, srs]) => {\n if ((manifest.datasource === undefined || manifest.datasource.length === 0) && !srs) {\n return of({});\n } else {\n return from(\n new Promise<{\n [id: string]: {\n classic: Style;\n bordered: Style;\n };\n }>((resolve, reject) => {\n const total = Object.values(rs.items).reduce((p, c) => c.length + p, 0);\n if (total === 0) resolve({});\n const result = {} as {\n [id: string]: {\n classic: Style;\n bordered: Style;\n };\n };\n Object.values(rs.items).forEach((items) => {\n items.forEach((item) =>\n Promise.all([\n this.symbolService.getSymbolAsIconStyle(item),\n this.symbolService.getSymbolAsIconStyle(item, true)\n ]).then(([style, bStyle]) => {\n result[item.id] = { classic: style, bordered: bStyle };\n if (Object.keys(result).length >= total) {\n resolve(result);\n }\n })\n );\n });\n })\n );\n }\n })\n );\n\n this.height$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.displayHeader$]).pipe(\n map(([size, display]) => (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT.value : 0)),\n delay(10)\n );\n\n this.attributions$ = this.options$.pipe(map((options) => !!options.attributions));\n\n this.legendTop$ = combineLatest([this.displayHeader$, this.attributions$]).pipe(\n map(([header, attr]) => 5 + (header ? WIDGET_HEADER_HEIGHT.value : 0) + (attr ? 61 : 0))\n );\n\n this.legendHeight$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.legendTop$]).pipe(\n map(([size, top]) => {\n return (size.height ?? 100) - WIDGET_HEADER_HEIGHT.value - top - 56; // 56px is the popin title height + margin\n }),\n delay(10)\n );\n\n this.subscriptions.add(\n this.wmsCapabilities$\n .pipe(\n map((wmsCapabilities) =>\n wmsCapabilities\n ? Object.keys(wmsCapabilities)\n .map((url) => ({ url, layers: XMLUtils.getPossibleLayerStyles(wmsCapabilities[url]?.doc) }))\n .reduce((p, c) => ({ ...p, [c.url]: c }), {})\n : {}\n ),\n startWith({})\n )\n .subscribe((possibleStyles) => (this.possibleStyles = possibleStyles))\n );\n\n this.hasSlideLayer$ = this.options$.pipe(\n map((options) =>\n (options.layers ?? []).map((layer) => !!layer.slide && layer.slide !== 'all').reduce((a, b) => a || b, false)\n )\n );\n }\n\n initInteractionManager() {\n return this.interactionManager.init(this);\n }\n\n initTooltipManager() {\n return this.tooltipManager.init(\n this.tooltipFactoryService,\n this.injector,\n this.store,\n this.subscriptions,\n this.widgetSize$,\n this.displayHeader$,\n this.map,\n this.popup,\n this.popupContent,\n this.interactionManager,\n this\n );\n }\n\n ngAfterViewInit(): void {\n this.map = new Map({ target: this.mapRef.nativeElement, controls: defaults({ attribution: false }) });\n this.interactionManager = this.initInteractionManager();\n this.layerSlider.init(this.map, this.sliderElement.nativeElement);\n this.tooltipManager = this.initTooltipManager();\n this.mapStyleUrl$ = combineLatest([this.options$, this.mapUrl$]).pipe(\n map(([options, url]) => {\n switch (options.style) {\n case this.NO_STYLE:\n return null;\n case this.STYLE_FROM_URL:\n return options.styleURL ?? '';\n default:\n return `${url}/styles/${options.style}/style.json`;\n }\n }),\n distinctUntilChanged()\n );\n\n this.mapStyleLayer$ = this.mapStyleUrl$.pipe(\n map((styleUrl) => {\n if (!styleUrl) {\n return [];\n }\n return [\n new MapboxVectorLayer({\n properties: { title: 'background' },\n styleUrl\n }) /* ,\n new TileLayer({\n source: new TileDebug()\n }) */\n ];\n })\n );\n\n this.subscriptions.add(\n this.options$\n .pipe(\n map((options) => ({\n center: fromLonLat(options.center ?? WidgetMapUtils.DEFAULT_MAP_CENTER),\n maxZoom: options.zoom?.max ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,\n minZoom: options.zoom?.min ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,\n zoom: options.zoom?.start ?? WidgetMapUtils.DEFAULT_ZOOM_START\n })),\n distinctUntilChanged()\n )\n .subscribe((view) => this.map.setView(new View(view)))\n );\n\n this.subscriptions.add(\n this.options$\n .pipe(\n map((options) => options.attributions),\n distinctUntilChanged()\n )\n .subscribe((attributions) => {\n if (!attributions) {\n this.map.removeControl(this.attributions);\n } else {\n this.map.addControl(this.attributions);\n }\n })\n );\n\n this.layers$ = combineLatest([\n this.resultSet$,\n this.options$,\n this.classes$,\n this.additionalLayers$,\n this.itemStyles$,\n this.datasourceFilters$,\n this.fields$\n ]).pipe(\n filter(\n ([resultSet, options, classes, additionalLayers, itemStyles, filters, fields]) =>\n !!resultSet && !!options && !!classes && !!fields\n ),\n map(([resultSet, options, classes, additionalLayers, itemStyles, filters, fields]) => {\n let hasRelationLayer = null as unknown as VectorLayer<VectorSource<any>>;\n\n const layers = (options?.layers || [])\n .filter(\n // @ts-ignore\n (layer) => this.widgetMapLayerService.dontNeedLocation.includes(layer.type) || !!layer.attribute\n )\n .filter(\n // @ts-ignore\n (layer) => this.widgetMapLayerService.dontNeedIntensity.includes(layer.type) || !!layer.intensityAttribute\n )\n .map((layer: MapWidgetLayerOptions, idx, array) => {\n const attributesForClass = Object.keys(resultSet.items)\n .map((classId) => ({\n classId,\n ...this.getAttributesForDrawing(classes, classId, layer)\n }))\n .reduce(\n (p, c) => ({\n ...p,\n [c.classId]: c\n }),\n {} as {\n [key: string]: {\n intensityAttribute: Attribute;\n locationAttribute: Attribute;\n };\n }\n );\n\n let layerClassesId = classes.map((clazz) => clazz.id);\n if ('classes' in layer && !!layer.classes && layer.classes.length > 0) {\n layerClassesId = layer.classes;\n }\n\n let range = { min: 0, max: 0 };\n // @ts-ignore\n if (!!layer.intensityAttribute) {\n const values = Object.keys(resultSet.items)\n .map((classId) =>\n resultSet.items[classId].map((item) =>\n ItemUtils.getAttributeCalculatedValue(item, attributesForClass[item.oClass].intensityAttribute)\n )\n )\n .reduce((p, c) => [...p, ...c], [])\n .filter((value) => !!value && typeof value === 'number') as number[];\n\n range = values.reduce((p, c) => ({ min: Math.min(p.min, c), max: Math.max(p.max, c) }), {\n min: Number.MAX_VALUE,\n max: -Number.MAX_VALUE\n });\n }\n\n const impl = this.widgetMapLayerService.layersImplementation[layer.type];\n if (!!impl) {\n const resultLayer = impl(\n layer as any,\n attributesForClass,\n layerClassesId,\n resultSet,\n range,\n itemStyles,\n this.map\n );\n resultLayer.set('fit', layer.fit);\n resultLayer.set('type', layer.type);\n resultLayer.set('slide', layer.slide);\n resultLayer.set('order', layer.order);\n resultLayer.set('group', layer.group ?? DEFAULT_LAYER_GROUP);\n const maxLayerOrder = Math.max(...array.map((l) => l.order ?? 0));\n resultLayer.setZIndex(maxLayerOrder + 1 - (layer.order ?? idx));\n if (layer.type === 'relation') {\n hasRelationLayer = resultLayer as unknown as VectorLayer<VectorSource>;\n }\n resultLayer.set('title', layer.title);\n\n if (layer.type === 'geoserver') {\n const cql_filter = CqlUtils.getCQLParamsFor(layer.datasourceId, filters, classes, fields);\n\n if (cql_filter) {\n // Adding CQL query to geoserver layers\n (resultLayer as Tile<TileWMS>).getSource()!.updateParams({ cql_filter });\n }\n }\n\n if (layer.slide && layer.slide !== 'all') {\n this.layerSlider.applySlide(\n layer.slide,\n resultLayer as unknown as TileLayer<any> | VectorLayer<any> | Heatmap\n );\n }\n\n return resultLayer;\n } else {\n console.error(`Layer type ${layer.type} is unknown`);\n return null as unknown as BaseLayer;\n }\n })\n .filter((layer) => !!layer);\n\n if (!!hasRelationLayer) {\n const features = layers\n .filter((layer) => !(layer instanceof Tile))\n .map((layer) =>\n layer\n // @ts-ignore\n .getSource()\n .getFeatures()\n .filter((features: Feature<any>) => !!features.get('id') || !!features.get('features'))\n )\n .reduce((p, c) => [...p, ...c], []);\n\n resultSet.relations.forEach((relation) => {\n const source = features.find((f: Feature<Point | Circle>) => f.get('id') === relation.source);\n const dest = features.find((f: Feature<Point | Circle>) => f.get('id') === relation.destination);\n if (!!source && !!dest) {\n hasRelationLayer.getSource()?.addFeature(WidgetMapUtils.getLinkFeature(relation, source, dest));\n }\n });\n }\n layers.push(...additionalLayers);\n\n const visibleLayers = options.layerGroups!.map((group) => group.visibleLayers).flat();\n layers.forEach((layer, idx) => {\n if (!visibleLayers.includes(layer.get('title'))) {\n layer.setVisible(false);\n }\n });\n\n /* Resolve bug drawing webgllayer without nothing underneath: add empty layer below */\n const _layers = this.addEmptyWebGlLayerBelowSlideHeatmaps(layers);\n this.previousLayers.push(..._layers);\n return _layers;\n })\n );\n\n this.fitExtents$ = combineLatest([\n this.options$,\n this.classes$,\n this.datasourceFilters$,\n this.wmsCapabilities$\n ]).pipe(\n debounceTime(100),\n switchMap(([options, classes, filters, wmsCapabilities]) =>\n (options.layers ?? []).find((layer) => ['geoserver', 'wms'].includes(layer.type) && layer.fit)\n ? combineLatest([\n ...((options.layers?.filter((layer) => layer.type === 'geoserver') ?? []) as MapGeoServerLayerOptions[])\n .filter((layer) => layer.fit)\n .map((layer: MapGeoServerLayerOptions) =>\n (\n classes.find((clazz) => clazz.id === layer.oClass) ?? ({ attributes: [] } as unknown as Class)\n ).attributes\n .filter((attr) => GeometricFieldTypes.includes(attr.field.type))\n .map((attr) =>\n this.pryAggregationService\n .aggregate([layer.datasourceId], {\n ordinate: { operation: Operation.EXTENT, attribute: attr.id, label: attr.name, keep0: false }\n } as ChartAggregatedWidgetOptions)\n .pipe(\n map((extentResponse: AggregationResult) =>\n WidgetMapUtils.projectExtentAggregationResponse(\n attr.field!,\n extentResponse,\n layer,\n wmsCapabilities,\n this.map\n )\n ),\n catchError(() => of({ datasource: layer.datasourceId, extent: [], error: true }))\n )\n )\n .flat()\n )\n .flat(),\n ...((options.layers?.filter((layer) => layer.type === 'wms') ?? []) as MapWMSLayerLayerOptions[])\n .filter((layer) => layer.fit)\n .map((layer: MapWMSLayerLayerOptions) => {\n const extent = XMLUtils.getLayerExtent(layer.paramLayer, this.map, wmsCapabilities![layer.url]?.doc);\n return of({\n datasource: `wms-${layer.paramLayer}`,\n extent: extent ?? [],\n error: !extent\n });\n })\n ])\n : of([])\n ),\n startWith(\n [] as {\n datasource: string;\n extent: Coordinate[];\n error: boolean;\n }[]\n )\n );\n\n this.legendLayers$ = this.options$.pipe(\n map(\n (options) =>\n (options.layers ?? []).filter((layer) => ['geoserver', 'wms'].includes(layer.type)) as (\n | MapGeoServerLayerOptions\n | MapWMSLayerLayerOptions\n )[]\n ),\n delay(10)\n );\n\n this.layersTop$ = combineLatest([this.legendTop$, this.legendLayers$]).pipe(\n map(([legendTop, layers]) => legendTop + ((layers.length ?? 0) > 0 ? 50 : 0))\n );\n\n this.layersHeight$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.layersTop$]).pipe(\n map(([size, top]) => {\n return (size.height ?? 100) - WIDGET_HEADER_HEIGHT.value - top - 50; // 50px acts as bottom margin\n })\n );\n\n this.subscriptions.add(\n combineLatest([this.layersTop$, this.legendLayers$, this.olZoomElement$, this.displayHeader$])\n .pipe(withLatestFrom(this.layers$))\n .subscribe(([[layersTop, legend, zoomElement, displayHeader], layers]) => {\n if (zoomElement) {\n zoomElement.style.top = `${\n layersTop +\n ((legend.length ?? 0) > 0 || layers.length > 0 ? 20 : 0) +\n (!displayHeader ? WIDGET_HEADER_HEIGHT.value : 0)\n }px`;\n }\n })\n );\n\n this.subscriptions.add(\n combineLatest([\n this.mapStyleLayer$,\n this.layers$,\n this.selectedIds$.pipe(distinctUntilChanged((p, c) => equal(p, c))),\n this.fitExtents$,\n this.datasourceFilters$,\n fromEvent<CustomEvent>(window, 'wms-layer-refresh').pipe(\n startWith(new CustomEvent(`wms-layer-refresh`, { detail: true }))\n ) as Observable<CustomEvent>\n ]).subscribe(([mapStyleLayer, layers, selectedIds, extents, filters, refreshEvent]) => {\n const neededCalculatedExtents = layers.filter(\n (layer) => ['geoserver', 'wms'].includes(layer.get('type')) && layer.get('fit')\n ).length;\n const nbCalculatedExtents = extents.filter((extent) => !extent.error).length;\n\n if (nbCalculatedExtents >= neededCalculatedExtents) {\n if (!refreshEvent.detail) {\n this.map\n .getAllLayers()\n .filter((l) => l instanceof TileLayer || l instanceof ImageLayer)\n .forEach((l) => {\n l.getSource()!.refresh();\n });\n }\n\n setTimeout(() => {\n const toApplyLayers = [...layers, ...mapStyleLayer];\n this.map.setLayers(toApplyLayers);\n\n this.fitMapForObjects(selectedIds, extents);\n this.map.updateSize();\n\n this.map\n .getAllLayers()\n .filter((layer) => !(layer instanceof Tile))\n .forEach((layer) => {\n const getFeatures = (layer.getSource() as VectorSource)?.getFeatures;\n if (typeof getFeatures === 'function') {\n (layer.getSource() as VectorSource)?.getFeatures().forEach((feature: any) => {\n const type = feature.get('type');\n if (\n ['bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].includes(type)\n ) {\n feature.setStyle(\n feature.get(selectedIds.includes(feature.get('id')) ? 'selectedStyle' : 'classicStyle')\n );\n }\n });\n }\n });\n }, 100);\n } else {\n this.map.setLayers([...mapStyleLayer]);\n }\n })\n );\n }\n\n private addEmptyWebGlLayerBelowSlideHeatmaps(layers: BaseLayer[]) {\n const _layers = [];\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n _layers.push(layer);\n if (layer.get('type') === 'heatmap' && layer.get('slide')) {\n const emptyData = new Uint8Array(256 * 256 * 4);\n const emptyLayer = new WebGLTileLayer({\n source: new DataTile({\n loader() {\n return emptyData;\n },\n maxZoom: 0,\n wrapX: true\n })\n });\n _layers.push(emptyLayer);\n }\n }\n return _layers;\n }\n\n override initResultSet$() {\n return combineLatest([\n this.store.select(DashboardSelectors.resultSets),\n this.datasourceIds$,\n this.staticResultSet$,\n this.store.select(DataSourceSelectors.datasets)\n ]).pipe(\n map(([resultSets, resultSetNamesArray, staticResultSet, definitions]) => {\n if (!!staticResultSet) {\n return staticResultSet;\n }\n const resultSetArray = resultSetNamesArray\n .filter((rsName) => {\n const definition = definitions.find((dsd) => dsd.id === rsName) as Dataset | undefined;\n return !definition || !(definition.metadata ?? []).find((meta) => meta.metadataDef.name === '_geoKey');\n })\n .map((rsName) => resultSets[rsName ?? ''])\n .filter((rsName) => !!rsName);\n return resultSetArray.reduce((rs1, rs2) => ResultsetUtils.mergeResultSets(rs1, rs2), {\n items: {},\n relations: [],\n merged: resultSetArray.length\n });\n }),\n distinctUntilChanged((p, v) => equal(p, v))\n );\n }\n\n setDefaultLayerTitle(\n layer: MapWidgetLayerOptions,\n index: number,\n capabilities:\n | {\n [p: string]: GetCapabilitiesResponse | null;\n }\n | undefined\n ) {\n if (!layer.title) {\n if (['geoserver', 'wms'].includes(layer.type)) {\n const geoLayer = layer as MapGeoServerLayerOptions | MapWMSLayerLayerOptions;\n const layerCapabilities = capabilities ? capabilities[geoLayer.url] : undefined;\n\n if (layerCapabilities) {\n const matchingLayer = XMLUtils.getMatchingLayer(geoLayer.paramLayer, layerCapabilities.doc);\n if (matchingLayer) {\n const matchingTitle = XMLUtils.find(matchingLayer.childNodes, 'Title');\n if (matchingTitle) {\n layer.title =\n !!matchingTitle.textContent && matchingTitle.textContent.length > 0\n ? matchingTitle.textContent\n : undefined;\n }\n }\n } else {\n layer.title = geoLayer.paramLayer;\n }\n } else {\n layer.title = this.translateService.instant(`@pry.widget.map.layerType.${layer.type}`, { ...layer });\n }\n }\n }\n\n fitMapForObjects(\n selectedIds?: string[],\n extents: {\n datasource: string;\n extent: Coordinate[];\n }[] = []\n ) {\n let extent = createEmpty();\n const listOfMarkers = [] as any[];\n\n /* Mandatory fit */\n this.map\n .getAllLayers()\n .filter((layer) => layer.getProperties()['fit'])\n .filter((layer) => !!layer.getSource && !!layer.getSource() && !!(layer.getSource() as VectorSource).getFeatures)\n .forEach((layer) => {\n (layer.getSource() as VectorSource).getFeatures().forEach((feature: any) => {\n const id = feature.get('id');\n if (!selectedIds || selectedIds.length <= 0 || (selectedIds.length > 0 && selectedIds.includes(id))) {\n switch (feature.get('type')) {\n case 'heatpoint':\n case 'point':\n case 'marker':\n listOfMarkers.push(feature.getGeometry().getCoordinates());\n break;\n case 'line':\n case 'link':\n listOfMarkers.push(...feature.getGeometry().getCoordinates());\n break;\n case 'polygon':\n case 'multi-line':\n listOfMarkers.push(...feature.getGeometry().getCoordinates().flat());\n break;\n case 'multi-polygon':\n listOfMarkers.push(...feature.getGeometry().getCoordinates().flat().flat());\n break;\n default:\n listOfMarkers.push(feature.getGeometry().getCenter());\n }\n }\n });\n });\n\n const selectedExtent = boundingExtent(\n listOfMarkers.filter((coord) => !!coord).concat(...extents.map((extent) => extent.extent))\n );\n\n if (\n selectedExtent[0] !== Infinity &&\n selectedExtent[1] !== Infinity &&\n selectedExtent[2] !== -Infinity &&\n selectedExtent[3] !== -Infinity\n ) {\n extent = selectedExtent;\n }\n\n if (extent[0] !== Infinity && extent[1] !== Infinity && extent[2] !== -Infinity && extent[3] !== -Infinity) {\n this.map.getView().fit(extent, { padding: [20, 20, 70, 70], duration: 200 });\n }\n }\n\n private getAttributesForDrawing(classes: Class[], classId: string, layer: MapWidgetLayerOptions) {\n const classObj = classes.find((cl) => cl.id === classId) ?? ({ attributes: [] as Attribute[] } as Class);\n const locationAttribute = this.getLocationAttribute(classObj, layer);\n const intensityAttribute = this.getIntensityAttribute(\n classObj,\n layer as MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions\n );\n return { locationAttribute, intensityAttribute };\n }\n\n private getIntensityAttribute(\n classObj: Class | undefined,\n layer: MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions\n ) {\n return (\n (classObj || { attributes: [] }).attributes.find((attr) => attr.technicalName === layer?.intensityAttribute) ??\n (undefined as unknown as Attribute)\n );\n }\n\n private getLocationAttribute(classObj: Class, layer: MapWidgetLayerOptions): Attribute {\n type layers = MapWidgetHeatMapLayerOptions | MapWidgetMarkerLayerOptions | MapWidgetBubbleLayerOptions;\n const specificLayer = layer as layers;\n return (\n classObj.attributes.find((attr) => attr.technicalName === specificLayer?.attribute) ??\n (undefined as unknown as Attribute)\n );\n }\n\n changeStyle($event: any) {\n this.optionsCopy.style = $event;\n if (this.optionsCopy.style !== this.STYLE_FROM_URL) {\n delete this.optionsCopy.styleURL;\n }\n }\n\n changeStyleURL($event: Event) {\n // @ts-ignore\n this.optionsCopy.styleURL = $event.currentTarget?.value;\n }\n\n changeFit($event: boolean, layer: MapWidgetLayerOptions) {\n layer.fit = $event;\n }\n\n changeSlide($event: undefined | 'left' | 'right', layer: MapWidgetLayerOptions) {\n layer.slide = $event;\n }\n\n changeAttributions($event: boolean) {\n this.optionsCopy.attributions = $event;\n if (this.optionsCopy.attributions) {\n this.optionsCopy.layers?.forEach((layer) => (layer.attribution = ''));\n } else {\n this.optionsCopy.layers?.forEach((layer) => delete layer.attribution);\n }\n }\n\n addLayer(group: LayerGroup) {\n if (!this.optionsCopy.layers) {\n this.optionsCopy.layers = [];\n }\n const title = this.translateService.instant(`@pry.widget.map.layer`, { index: this.optionsCopy.layers.length + 1 });\n\n this.optionsCopy.layers.push({\n attribute: '',\n group: group.name,\n title,\n type: 'marker'\n });\n this.layerSettingsExpandedState[title] = false;\n this.updateLayerGroup(group, undefined, title);\n this.updateLayerOrder();\n }\n\n changeLayerType($event: any, i: number) {\n if (!this.optionsCopy.layers) {\n this.optionsCopy.layers = this.optionsCopy.layers ?? [];\n }\n this.optionsCopy.layers[i].type = $event;\n if (this.optionsCopy.layers[i].type === 'wms') {\n const options = this.optionsCopy.layers[i] as MapWMSLayerLayerOptions;\n options.paramLayer = options.paramLayer ?? '';\n options.url = options.url ?? '';\n }\n if (this.optionsCopy.layers[i].type === 'wmts') {\n const options = this.optionsCopy.layers[i] as MapWMTSLayerLayerOptions;\n options.paramLayer = options.paramLayer ?? '';\n options.style = options.style ?? '';\n options.matrixSet = options.matrixSet ?? '';\n options.url = options.url ?? '';\n }\n if (['featurelayer', 'vectortile', 'rastertile'].includes(this.optionsCopy.layers[i].type)) {\n let options: MapFeatureLayerOptions;\n options = this.optionsCopy.layers[i] as MapFeatureLayerOptions;\n options.url = options.url ?? '';\n }\n }\n\n updateLayerGroupSingleLayer(group: LayerGroup, singleLayer: boolean) {\n this.updateLayerGroup(group, singleLayer, singleLayer ? [group.visibleLayers[0]] : group.visibleLayers);\n }\n\n updateLayerGroup(group: LayerGroup | string, singleLayer?: boolean, visibleLayers?: string[] | string) {\n const layerGroup = typeof group === 'string' ? this.optionsCopy.layerGroups!.find((g) => g.name === group) : group;\n const groupIndex = this.optionsCopy.layerGroups!.findIndex((g) => g.name === layerGroup!.name);\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.map((g, i) =>\n i === groupIndex\n ? {\n ...g,\n singleLayer: singleLayer ?? layerGroup!.singleLayer,\n visibleLayers:\n typeof visibleLayers === 'string'\n ? [...layerGroup!.visibleLayers, visibleLayers]\n : visibleLayers ?? layerGroup!.visibleLayers\n }\n : g\n );\n }\n\n changeTitle($event: Event, layer: MapWidgetLayerOptions, group: LayerGroup) {\n const newTitle = ($event.currentTarget as HTMLInputElement).value;\n this.updateLayerGroup(\n group,\n undefined,\n this.optionsCopy\n .layerGroups!.filter((g) => g.name === group.name)\n .map((g, i) => g.visibleLayers.map((l) => (l === layer.title ? newTitle : l)))\n .flat()\n );\n delete this.layerSettingsExpandedState[layer.title!];\n layer.title = newTitle;\n this.layerSettingsExpandedState[newTitle] = true;\n }\n\n override emitManifest() {\n this.removeEmptyLayerGroups();\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: {\n ...this.manifest,\n options: { ...this.optionsCopy, layers: (this.optionsCopy.layers ?? []).filter((layer) => !!layer.type) }\n }\n });\n }\n\n changeLocationAttributes($event: any, layer: MapWidgetLayerOptions) {\n // @ts-ignore\n layer.attribute = $event;\n }\n\n layerHasIntensity(layer: MapWidgetLayerOptions): MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions {\n return <MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions>layer;\n }\n\n changeIntensityAttributes($event: any, layer: MapWidgetLayerOptions) {\n const layer_ = <MapWidgetHeatMapLayerOptions | MapWidgetBubbleLayerOptions>layer;\n layer_.intensityAttribute = $event;\n }\n\n changeClasses($event: string[], layer: MapWidgetLayerOptions) {\n const specificLayer = layer as\n | MapWidgetHeatMapLayerOptions\n | MapWidgetMarkerLayerOptions\n | MapWidgetBubbleLayerOptions;\n specificLayer.classes = $event;\n }\n\n deleteLayer(i: number, layer: MapWidgetLayerOptions, group: LayerGroup) {\n this.optionsCopy?.layers?.splice(i, 1);\n this.updateLayerGroup(\n group,\n undefined,\n group.visibleLayers.filter((l) => l !== layer.title)\n );\n this.removeEmptyLayerGroups();\n if (layer.type === 'auto') {\n this.optionsCopy.ignoreAutoLayer = [...(this.optionsCopy.ignoreAutoLayer ?? []), layer.key + '-' + layer.subType];\n }\n }\n\n changeUrl(\n $event: Event,\n layer:\n | MapWMSLayerLayerOptions\n | MapFeatureLayerOptions\n | MapVectorTileLayerOptions\n | MapRasterTileLayerOptions\n | MapWMTSLayerLayerOptions\n | MapGeoServerLayerOptions\n ) {\n // @ts-ignore\n layer.url = $event.currentTarget?.value;\n }\n\n changeAttribution($event: Event, layer: BaseWidgetMapLayerOptions) {\n // @ts-ignore\n layer.attribution = $event.currentTarget?.value;\n }\n\n changeParamLayer($event: Event, layer: MapWMSLayerLayerOptions | MapWMTSLayerLayerOptions) {\n // @ts-ignore\n layer.paramLayer = $event.currentTarget?.value;\n }\n\n changeParamTiled($event: boolean, layer: MapWMSLayerLayerOptions | MapGeoServerLayerOptions) {\n layer.paramTiled = $event;\n this.tooltipManager.clearTooltip();\n }\n\n changeMatrixSet($event: Event, layer: MapWMTSLayerLayerOptions) {\n // @ts-ignore\n layer.matrixSet = $event.currentTarget?.value;\n }\n\n changeParamStyle($event: Event, layer: MapWMTSLayerLayerOptions) {\n // @ts-ignore\n layer.style = $event.currentTarget?.value;\n }\n\n export() {\n WidgetMapUtils.exportMapAsImage(this.map, 'map.png');\n }\n\n override toImage(): Promise<string> {\n return WidgetMapUtils.getMapAsPng(this.map);\n }\n\n changeClustered(layer: MapWidgetMarkerLayerOptions, $event: boolean) {\n layer.clustered = $event;\n if (layer.clustered) {\n layer.clusterDistance = 10;\n }\n }\n\n changeClusterDistance(layer: MapWidgetMarkerLayerOptions, $event: Event) {\n // @ts-ignore\n layer.clusterDistance = $event.currentTarget?.value;\n }\n\n changeOpacity(layer: MapWidgetLayerOptions, $event: string) {\n // @ts-ignore\n layer.opacity = parseInt($event, 10);\n }\n\n getWMSLayers(): Layer<any>[] {\n return !this.map\n ? []\n : this.map\n .getAllLayers()\n .filter((layer) => layer.getSource() instanceof TileWMS || layer.getSource() instanceof ImageWMS)\n // @ts-ignore\n .filter((layer) => layer.rendered === true);\n }\n\n isLayerRendered(layer: any) {\n return !!this.getWMSLayers().find(\n (wmsLayer) => wmsLayer.get('title') === layer.title && wmsLayer.get('group') === layer.group\n );\n }\n\n changeWmsClass($event: any, layer: MapWMSLayerLayerOptions) {\n layer.oClass = $event;\n }\n\n toggleLegend(index: number) {\n this.legendTabClosed[index] = !this.legendTabClosed[index];\n }\n\n toggleLegendWindow() {\n this.legendTabOpen = !this.legendTabOpen;\n this.layersTabOpen = false;\n }\n\n toggleLayersWindow() {\n this.layersTabOpen = !this.layersTabOpen;\n this.legendTabOpen = false;\n }\n\n get mapLayers() {\n return (this.map ?? { getLayers: () => ({ getArray: () => [] }) })\n .getLayers()\n .getArray()\n .filter((layer) => layer.get('title') !== 'background');\n }\n\n get rightSlideLayers() {\n return this.mapLayers.filter((layer) => layer.get('slide') === 'right');\n }\n\n get leftSlideLayers() {\n return this.mapLayers.filter((layer) => layer.get('slide') === 'left');\n }\n\n changeVisibility(group: LayerGroup, _layer?: MapWidgetLayerOptions) {\n const olLayer = this.mapLayers.find(\n (layer) => layer.getProperties()['title'] === _layer?.title && layer.getProperties()['group'] === group.name\n );\n if (group.singleLayer) {\n const groupLayers =\n this.optionsCopy.layers?.filter((l) => l.group === group.name).map((layer) => layer.title) ?? [];\n\n this.mapLayers\n .filter((layer) => layer.getProperties()['group'] === group.name)\n .forEach((layer) => {\n if (groupLayers.includes(layer.getProperties()['title'])) {\n layer.setVisible(false);\n }\n });\n if (_layer) {\n olLayer?.setVisible(true);\n this.updateLayerVisibility(group.name, [_layer.title!]);\n } else {\n this.updateLayerVisibility(group.name, []);\n }\n } else {\n olLayer?.setVisible(!olLayer?.getVisible());\n\n const visibleLayers = group.visibleLayers.includes(_layer?.title!)\n ? group.visibleLayers.filter((layer) => layer !== _layer?.title)\n : [...group.visibleLayers, _layer?.title!];\n this.updateLayerVisibility(group.name, visibleLayers);\n }\n this.map.updateSize();\n }\n\n isLayerVisible(layer: MapWidgetLayerOptions, group?: LayerGroup): boolean {\n if (group && group.visibleLayers) {\n return group.visibleLayers.includes(layer.title ?? '');\n } else {\n return !!this.optionsCopy\n .layerGroups!.find((g) => g.name === layer.group)\n ?.visibleLayers.includes(layer.title ?? '');\n }\n }\n\n updateLayerVisibility(name: string, visibleLayers: string[] | string) {\n this.optionsCopy.layerGroups = [\n ...(this.optionsCopy.layerGroups ?? []).map((group) =>\n group.name === name\n ? {\n ...group,\n visibleLayers: visibleLayers\n ? typeof visibleLayers === 'string'\n ? [...group.visibleLayers, visibleLayers]\n : visibleLayers\n : group.visibleLayers\n }\n : group\n )\n ];\n }\n\n changeAutoLayer($event: any) {\n this.optionsCopy.automaticLayers = $event;\n if (!this.optionsCopy.automaticLayers) {\n delete this.optionsCopy.ignoreAutoLayer;\n }\n }\n\n get layerVisibleIdx() {\n return this.mapLayers.map((layer, idx) => (layer.getVisible() ? idx : 0)).reduce((a, b) => a + b, 0) || -1;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n\n // Trying to release objects\n this.clearLayers(this.map.getLayers().getArray());\n this.clearLayers(this.previousLayers);\n this.map.getRenderer()!.dispose();\n // @ts-ignore\n delete this.map;\n // @ts-ignore\n this.map = null;\n this.tooltipManager.destroy();\n }\n\n getStyle(_layer: MapWidgetLayerOptions) {\n const layer = _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n if (layer.additionalParameters?.STYLES) {\n return layer.additionalParameters?.STYLES;\n }\n /* Not manifest-defined style: use first in line because it's the default one sent by geoserver */\n const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };\n let possiblesStylesForLayer = possibleStylesForUrl.layers![layer.paramLayer];\n if (!possiblesStylesForLayer) {\n possiblesStylesForLayer = possibleStylesForUrl.layers![(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };\n }\n return possiblesStylesForLayer.styles[0]?.id;\n }\n\n changeLayerStyle($event: any, _layer: MapWidgetLayerOptions) {\n const layer = _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n if (!layer.additionalParameters) {\n layer.additionalParameters = {};\n }\n layer.additionalParameters.STYLES = $event;\n }\n\n getAsWmsType(_layer: MapWidgetLayerOptions) {\n return _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n }\n\n layerStyleOptions(_layer: MapWidgetLayerOptions) {\n const layer = _layer as MapWMSLayerLayerOptions | MapGeoServerLayerOptions;\n const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };\n let possiblesStylesForLayer = possibleStylesForUrl.layers![layer.paramLayer];\n if (!possiblesStylesForLayer) {\n possiblesStylesForLayer = possibleStylesForUrl.layers![(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };\n }\n return possiblesStylesForLayer.styles;\n }\n\n triggerLayerRender() {\n this.map.render();\n }\n\n changeSlideOption($event: any) {\n this.optionsCopy.slide = $event;\n if ($event === false) {\n this.optionsCopy.layers?.forEach((layer) => (layer.slide = 'all'));\n }\n }\n\n toggleMenu() {\n this.actionMenuOpen$.next(!this.actionMenuOpen$.getValue());\n }\n\n private getOlZoomElement() {\n this.olZoomElement$.next(document.querySelector('.ol-zoom'));\n if (!this.olZoomElement$.getValue()) {\n setTimeout(() => this.getOlZoomElement(), 50);\n } else {\n const zoomIn = document.querySelector('.ol-zoom-in');\n if (zoomIn) {\n zoomIn.setAttribute('data-tooltip', this.translateService.instant('@pry.widget.map.zoomIn'));\n zoomIn.setAttribute('data-tooltip-position', 'left');\n zoomIn.classList.add('a-tooltip', '--nopos');\n zoomIn.removeAttribute('title');\n }\n const zoomOut = document.querySelector('.ol-zoom-out');\n if (zoomOut) {\n zoomOut.setAttribute('data-tooltip', this.translateService.instant('@pry.widget.map.zoomOut'));\n zoomOut.setAttribute('data-tooltip-position', 'left');\n zoomOut.classList.add('a-tooltip', '--nopos');\n zoomOut.removeAttribute('title');\n }\n }\n }\n\n changeSelection(action: 'click' | 'lasso' | 'rectangle' | 'zoom' | 'move' | 'export' | 'upload') {\n this.interactionManager.selectionInteraction.changeSelection(action);\n this.toggleMenu();\n }\n\n private clearLayers(layers: BaseLayer[]) {\n layers.forEach((layer) => {\n this.map.removeLayer(layer);\n if (layer instanceof VectorLayer && (layer as VectorLayer<VectorSource>).getSource()) {\n (layer as VectorLayer<VectorSource>).getSource()!.clear();\n layer.setSource(undefined);\n }\n if (layer instanceof TileLayer && (layer as TileLayer<any>).getSource()) {\n (layer as TileLayer<any>).getSource().clear();\n layer.setSource(undefined);\n }\n layer.dispose();\n });\n }\n\n addLayerGroup() {\n this.optionsCopy.layerGroups = [\n ...this.optionsCopy.layerGroups!,\n {\n name:\n this.translateService.instant('@pry.widget.map.layerSettings.group') +\n ' ' +\n (this.optionsCopy.layerGroups!.length + 1),\n singleLayer: false,\n visibleLayers: []\n }\n ];\n const group = this.optionsCopy.layerGroups[this.optionsCopy.layerGroups.length - 1];\n this.addLayer(group);\n }\n\n updateLayerGroupName(group: LayerGroup, $event: Event) {\n const [name, singleLayer, visibleLayers] = [group.name, group.singleLayer, group.visibleLayers];\n const groupIndex = this.optionsCopy.layerGroups!.findIndex((g) => g.name === group.name);\n const newName = ($event.currentTarget as HTMLInputElement).value;\n\n if (name === DEFAULT_LAYER_GROUP) {\n const layersToTransfer =\n this.optionsCopy.layers?.filter((layer) => layer.group === DEFAULT_LAYER_GROUP).map((l) => l.title) ?? [];\n this.optionsCopy.layerGroups = [\n ...this.optionsCopy.layerGroups!,\n {\n name: newName,\n singleLayer,\n visibleLayers: visibleLayers!.filter((l) => layersToTransfer.includes(l))\n }\n ];\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups.map((g, i) =>\n i === groupIndex\n ? {\n name: DEFAULT_LAYER_GROUP,\n singleLayer,\n visibleLayers: visibleLayers!.filter((l) => !layersToTransfer.includes(l))\n }\n : g\n );\n } else {\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.map((g, i) =>\n i === groupIndex ? { name: newName, singleLayer, visibleLayers } : g\n );\n }\n // update groups on options layers\n if (this.optionsCopy.layers) {\n this.optionsCopy.layers = this.optionsCopy.layers.map((layer) =>\n layer.group === name\n ? {\n ...layer,\n group: newName\n }\n : layer\n );\n }\n // update groups on ol layers\n this.mapLayers.forEach((layer) => {\n if (layer.getProperties()['group'] === name) layer.set('group', newName);\n });\n }\n\n deleteLayerGroup(name: string) {\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.filter((group) => group.name !== name);\n this.optionsCopy.layers = this.optionsCopy.layers?.map((layer) =>\n layer.group == name ? { ...layer, group: DEFAULT_LAYER_GROUP } : layer\n );\n }\n\n drop(event: CdkDragDrop<MapWidgetLayerOptions[]>, group: LayerGroup): void {\n const movedLayer = event.item.data as MapWidgetLayerOptions;\n if (event.previousContainer.id !== event.container.id) {\n this.moveLayerBetweenGroups(\n movedLayer,\n event.container.element.nativeElement.getAttribute('data-layer-group') ?? DEFAULT_LAYER_GROUP\n );\n }\n this.moveLayerInOptions(event.currentIndex, event.item.data as MapWidgetLayerOptions, group);\n }\n\n moveLayerBetweenGroups(movedLayer: MapWidgetLayerOptions, newGroup: string) {\n // remove it from old group\n this.updateLayerGroup(\n movedLayer.group!,\n undefined,\n this.optionsCopy.layerGroups\n ?.find((group) => group.name === movedLayer.group!)\n ?.visibleLayers.filter((layer) => layer !== movedLayer.title)\n );\n\n // add it to new group\n movedLayer.group = newGroup;\n this.updateLayerGroup(newGroup ?? DEFAULT_LAYER_GROUP, undefined, movedLayer.title!);\n this.removeEmptyLayerGroups();\n }\n\n moveLayerInOptions(targetIdxInGroup: number, movedLayer: MapWidgetLayerOptions, group: LayerGroup) {\n if (this.optionsCopy.layers) {\n const groupLayers = this.optionsCopy.layers.filter((layer) => layer.group === group.name);\n // indexes in optionsCopy\n const fromIndex = this.optionsCopy.layers.findIndex((layer) => layer.title === movedLayer.title);\n const toIndex = this.optionsCopy.layers.findIndex((layer) => layer.title === groupLayers[targetIdxInGroup].title);\n\n let newOrder = toIndex;\n this.optionsCopy.layers.splice(fromIndex, 1);\n this.optionsCopy.layers.splice(toIndex, 0, { ...movedLayer, order: newOrder });\n this.updateLayerOrder();\n }\n }\n\n toggleExpandAll(group: LayerGroup) {\n this.layerSettingsExpandedState[group.name] = !this.layerSettingsExpandedState[group.name];\n const layersToExpand =\n this.optionsCopy.layers?.filter((layer) => layer.group === group.name).map((layer) => layer.title) ?? [];\n\n Object.keys(this.layerSettingsExpandedState).forEach((layer) => {\n if (layersToExpand.includes(layer))\n this.layerSettingsExpandedState[layer] = this.layerSettingsExpandedState[group.name];\n });\n }\n\n toggleLayerExpand(layer: MapWidgetLayerOptions, group: LayerGroup) {\n this.layerSettingsExpandedState[layer.title!] = !this.layerSettingsExpandedState[layer.title!];\n if (this.layerSettingsExpandedState[layer.title!]) this.layerSettingsExpandedState[group.name] = true;\n if (group.visibleLayers.every((layerTitle) => !this.layerSettingsExpandedState[layerTitle])) {\n this.layerSettingsExpandedState[group.name] = false;\n }\n }\n\n updateLayerOrder() {\n let order = 1;\n this.optionsCopy.layerGroups?.forEach((group) => {\n const groupLayers = this.optionsCopy.layers?.filter((layer) => layer.group === group.name);\n if (groupLayers) {\n groupLayers.forEach((layer) => (layer.order = order++));\n }\n });\n }\n\n isGroupUsedByWidgetLayers(group: LayerGroup) {\n return this.optionsCopy.layers?.some((layer) => layer.group === group.name);\n }\n\n removeEmptyLayerGroups() {\n this.optionsCopy.layerGroups = this.optionsCopy.layerGroups!.filter(\n (group) =>\n this.optionsCopy.layers?.some((layer) => layer.group === group.name) || group.name === DEFAULT_LAYER_GROUP\n );\n }\n\n protected readonly DEFAULT_LAYER_GROUP = DEFAULT_LAYER_GROUP;\n}\n","<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }} :</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n ></pry-select>\n </div>\n @if (optionsCopy.style === STYLE_FROM_URL) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n }\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n <pry-checkbox (ngModelChange)=\"changeSlideOption($event)\" [ngModel]=\"hasSlideLayer$ | async\">\n {{ '@pry.widget.map.slide.global' | i18n }}\n </pry-checkbox>\n <div class=\"o-layer-settings\" cdkDropListGroup cdkDragBoundary>\n <h4 class=\"a-label\">{{ '@pry.widget.map.layerSettings.title' | i18n }}</h4>\n <div class=\"u-display-flex -justify-center\">\n <button class=\"a-btn a-btn--primary\" (click)=\"addLayerGroup()\" type=\"button\">\n {{ '@pry.widget.map.layerSettings.addLayerGroup' | i18n }}\n </button>\n </div>\n @for (group of optionsCopy.layerGroups; track group; let groupIdx = $index) {\n @if (isGroupUsedByWidgetLayers(group)) {\n <div class=\"o-layer-settings__group\">\n <div class=\"m-form-label-field o-layer-settings__group-title\">\n <label class=\"a-label\" for=\"map_layerGroupTitle-{{ groupIdx }}\">\n {{ '@pry.widget.map.layerSettings.layerGroupName' | i18n }}<span class=\"-obligatory-red\">*</span\n >{{ '@pry.widget.map.layerSettings.optionalColon' | i18n }}\n </label>\n <div class=\"u-display-flex\">\n <div class=\"m-form-label-field u-display-flex -row -gap-10\">\n <input\n id=\"map_layerGroupTitle-{{ groupIdx }}\"\n class=\"a-form-field\"\n type=\"text\"\n (change)=\"updateLayerGroupName(group, $event)\"\n [value]=\"group.name === DEFAULT_LAYER_GROUP ? ('@pry.widget.map.noGroup' | i18n) : group.name\"\n />\n @if (group.name !== DEFAULT_LAYER_GROUP) {\n <button\n class=\"a-btn--icon-only a-tooltip o-layer-settings__delete-group\"\n [attr.data-tooltip]=\"'@pry.widget.map.layerSettings.deleteGroup' | i18n\"\n data-tooltip-position=\"left\"\n (click)=\"deleteLayerGroup(group.name)\"\n >\n <pry-icon [height]=\"16\" [width]=\"16\" iconSvg=\"bin_normal\"></pry-icon>\n </button>\n }\n </div>\n </div>\n </div>\n @if (group.name !== DEFAULT_LAYER_GROUP) {\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n type=\"radio\"\n id=\"multiselection-{{ groupIdx }}\"\n [ngModel]=\"group.singleLayer\"\n (ngModelChange)=\"updateLayerGroupSingleLayer(group, $event)\"\n [value]=\"false\"\n [name]=\"group.name\"\n />\n <label class=\"a-label\" for=\"multiselection-{{ groupIdx }}\">{{\n '@pry.widget.map.layerSettings.multipleLayer' | i18n\n }}</label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n type=\"radio\"\n id=\"monoselection-{{ groupIdx }}\"\n [ngModel]=\"group.singleLayer\"\n (ngModelChange)=\"updateLayerGroupSingleLayer(group, $event)\"\n [value]=\"true\"\n [name]=\"group.name\"\n />\n <label class=\"a-label\" for=\"monoselection-{{ groupIdx }}\">{{\n '@pry.widget.map.layerSettings.singleLayer' | i18n\n }}</label>\n </div>\n </div>\n }\n <div class=\"m-btn-group\">\n <div class=\"u-display-flex -align-center\">\n <button (click)=\"addLayer(group)\" class=\"a-btn -link-like\" type=\"button\">\n + {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n <button (click)=\"toggleExpandAll(group)\" class=\"a-btn -link-like\" type=\"button\">\n {{\n layerSettingsExpandedState[group.name]\n ? ('@pry.widget.map.layerSettings.foldAll' | i18n)\n : ('@pry.widget.map.layerSettings.unfoldAll' | i18n)\n }}\n </button>\n </div>\n <div\n cdkDropList\n class=\"o-layer-settings__layers\"\n (cdkDropListDropped)=\"drop($event, group)\"\n [attr.data-layer-group]=\"group.name\"\n >\n @for (layer of optionsCopy?.layers; track layer; let i = $index) {\n @if (layer.group === group.name) {\n <div\n class=\"o-layer-settings__layer-wrapper\"\n cdkDrag\n [cdkDragData]=\"layer\"\n [cdkDragDisabled]=\"layerSettingsExpandedState[layer.title!]\"\n >\n <div class=\"drag-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"o-layer-settings__layer-header\">\n <div class=\"u-display-flex -align-center\">\n <pry-icon\n [class.-disabled]=\"layerSettingsExpandedState[layer.title!]\"\n class=\"drag-handle\"\n [height]=\"16\"\n [width]=\"16\"\n iconSvg=\"drag_indicator\"\n ></pry-icon>\n <button\n class=\"a-btn--icon-only unfold-layer\"\n (click)=\"toggleLayerExpand(layer, group)\"\n type=\"button\"\n >\n <pry-icon\n [height]=\"5\"\n [width]=\"9\"\n [iconSvg]=\"layerSettingsExpandedState[layer.title!] ? 'chevron_top' : 'chevron_bottom'\"\n ></pry-icon>\n </button>\n <h5 class=\"a-h5\">{{ layer.title ?? ('@pry.widget.map.layer' | i18n: { index: i + 1 }) }}</h5>\n </div>\n <button\n class=\"o-layer-settings__delete-layer a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.widget.map.layerSettings.deleteLayer' | i18n\"\n data-tooltip-position=\"left\"\n (click)=\"deleteLayer(i, layer, group)\"\n >\n <pry-icon [height]=\"16\" [width]=\"16\" iconSvg=\"bin_normal\"></pry-icon>\n </button>\n </div>\n @if (layerSettingsExpandedState[layer.title!]) {\n <div class=\"o-layer-settings__layer-content\">\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n <fieldset>\n <legend class=\"u-visually-hidden\">\n {{ '@pry.widget.map.layerOptions' | i18n: { index: i + 1 } }}\n </legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"layer_{{ i + 1 }}_title\">{{\n '@pry.widget.map.layerTitle' | i18n\n }}</label>\n <input\n id=\"layer_{{ i + 1 }}_title\"\n class=\"a-form-field\"\n type=\"text\"\n (change)=\"changeTitle($event, layer, group)\"\n [value]=\"layer.title\"\n />\n </div>\n @if (!['geoserver', 'auto'].includes(layer.type)) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerType\">{{\n '@pry.widget.map.layerType.title' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [items]=\"layerTypes\"\n [ngModel]=\"layer.type\"\n i18nPrefix=\"@pry.widget.map.layerType.\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n }\n @if (['geoserver', 'wms'].includes(layer.type)) {\n <div class=\"m-form-label-field\">\n @if (getAsWmsType(layer); as wmslayer) {\n <label class=\"a-label\" for=\"map_layerStyle\">{{\n '@pry.widget.map.layerStyle' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerStyle($event, layer)\"\n [items]=\"layerStyleOptions(layer)\"\n [ngModel]=\"getStyle(layer)\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"map_layerStyle\"\n ></pry-select>\n }\n </div>\n }\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n </div>\n @if (\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n ) {\n <div\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n }\n </fieldset>\n </div>\n @if (\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n ) {\n <fieldset\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n @if (\n layer\n | geometryFieldsFor: { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async; as fields\n ) {\n @if (\n [\n 'heatmap',\n 'bubble',\n 'marker',\n 'point',\n 'line',\n 'polygon',\n 'multi-line',\n 'multi-polygon'\n ].indexOf(layer.type) >= 0\n ) {\n <div\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n ></pry-select>\n </div>\n </div>\n }\n @if (['heatmap', 'bubble'].indexOf(layer.type) >= 0) {\n <div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n ></pry-select>\n </div>\n </div>\n }\n }\n </fieldset>\n }\n @if (\n layer.type === 'wms' ||\n layer.type === 'geoserver' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n ) {\n <fieldset\n >\n @if (layer.type !== 'geoserver') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n }\n @if (layer.type === 'wms' || layer.type === 'wmts') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{\n '@pry.widget.map.wms.paramLayer' | i18n\n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n }\n @if (layer.type === 'wmts') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{\n '@pry.widget.map.wms.matrixSet' | i18n\n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n }\n @if (layer.type === 'wmts') {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n }\n @if (layer.type === 'wms' || layer.type === 'geoserver') {\n <div class=\"m-form-label-field\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <pry-checkbox\n (ngModelChange)=\"changeParamTiled($event, layer)\"\n [ngModel]=\"layer?.paramTiled ?? false\"\n >\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n }\n </fieldset>\n }\n @if (layer.type === 'marker') {\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n @if (layer.clustered) {\n <div>\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n }\n </fieldset>\n }\n @if (optionsCopy.slide ?? false) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"slide_select\">{{ '@pry.widget.map.slide.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSlide($event, layer)\"\n [items]=\"slides\"\n [ngModel]=\"layer.slide ?? 'all'\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"slide_select\"\n ></pry-select>\n </div>\n }\n @if (optionsCopy.attributions) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n }\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n\n <div\n class=\"m-btn-group -map-selection-choice -vertical\"\n [class.-with-header]=\"displayHeader$ | async\"\n [class.-closed]=\"!(actionMenuOpen$ | async)\"\n >\n <div class=\"-vertical\">\n @for (action of basicActions$ | async; track action) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"changeSelection(action)\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n data-tooltip-position=\"right\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip -map-toggle\"\n id=\"open_menu\"\n [attr.aria-expanded]=\"actionMenuOpen$ | async\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu()\"\n >\n <pry-icon\n [iconSvg]=\"(actionMenuOpen$ | async) ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"12\"\n [height]=\"24\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.open' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"m-btn-group -map-selection-choice -map-export\" [class.-with-header]=\"displayHeader$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n data-tooltip-position=\"right\"\n (click)=\"export()\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n @if ((layers$ | async)?.length) {\n <div class=\"ol-control m-map-action m-map-action--layers\" [style.top.px]=\"layersTop$ | async\">\n <button\n class=\"m-map-action__button\"\n [class.a-tooltip]=\"!this.layersTabOpen\"\n [class.-tooltip-no-wrap]=\"!this.layersTabOpen\"\n (click)=\"toggleLayersWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.selectLayers' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n </div>\n <div class=\"m-map-pop-in -max-width-220\" [class.-hidden]=\"!layersTabOpen\" [style.top.px]=\"layersTop$ | async\">\n <h4 class=\"a-h4\">{{ '@pry.widget.map.layerSettings.selectLayers' | i18n }}</h4>\n <div class=\"m-map-pop-in__content\" [style.max-height.px]=\"layersHeight$ | async\">\n @for (group of (options$ | async)?.layerGroups ?? []; track group; let groupIdx = $index) {\n @if (isGroupUsedByWidgetLayers(group)) {\n <div class=\"m-map-pop-in__title m-map-pop-in__group-title\">\n <h5 class=\"a-h5\">\n {{ group.name === DEFAULT_LAYER_GROUP ? ('@pry.widget.map.noGroup' | i18n) : group.name }}\n </h5>\n </div>\n @if (group.singleLayer) {\n <div class=\"m-map-pop-in__radios\">\n <div class=\"m-map-pop-in__title\" [class.-hidden]=\"!layersTabOpen\">\n <input\n type=\"radio\"\n [name]=\"id + '-' + group.name\"\n id=\"{{ id }}-radio-layer-group-{{ groupIdx }}\"\n [ngModel]=\"group.visibleLayers.length\"\n [value]=\"0\"\n (change)=\"changeVisibility(group)\"\n />\n <label class=\"a-label\" for=\"{{ id }}-radio-layer-group-{{ groupIdx }}\">{{\n '@pry.widget.map.layerSettings.noLayer' | i18n\n }}</label>\n </div>\n @for (layer of optionsCopy.layers; track layer; let index = $index) {\n @if (layer.group === group.name) {\n <div class=\"m-map-pop-in__title\" [class.-hidden]=\"!layersTabOpen\">\n <input\n type=\"radio\"\n [name]=\"id + '-' + group.name\"\n id=\"{{ id }}-radio-{{ group.name }}-layer-{{ index }}\"\n [ngModel]=\"group.visibleLayers[0]\"\n [value]=\"layer.title\"\n (change)=\"changeVisibility(group, layer)\"\n />\n <label class=\"a-label\" for=\"{{ id }}-radio-{{ group.name }}-layer-{{ index }}\">{{\n layer.title ?? ('@pry.widget.map.missingTitle' | i18n)\n }}</label>\n </div>\n }\n }\n </div>\n } @else {\n @for (layer of optionsCopy.layers; track layer; let index = $index) {\n @if (layer.group === group.name) {\n <div class=\"m-map-pop-in__title\" [class.-hidden]=\"!layersTabOpen\">\n <pry-checkbox\n [ngModel]=\"isLayerVisible(layer, group)\"\n (change)=\"changeVisibility(group, layer)\"\n id=\"checkbox-layer-{{ index }}\"\n ></pry-checkbox>\n <label class=\"a-label\" for=\"checkbox-layer-{{ index }}\">\n {{ layer.title ?? ('@pry.widget.map.missingTitle' | i18n) }}\n </label>\n </div>\n }\n }\n }\n }\n }\n </div>\n </div>\n }\n @if ((legendLayers$ | async)?.length) {\n <div class=\"ol-control m-map-action m-map-action--legend\" [style.top.px]=\"legendTop$ | async\">\n <button\n [class.a-tooltip]=\"!this.legendTabOpen\"\n [class.-tooltip-no-wrap]=\"!this.legendTabOpen\"\n class=\"m-map-action__button\"\n (click)=\"toggleLegendWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.legends' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"legend\" [width]=\"18\" [height]=\"15\"></pry-icon>\n </button>\n </div>\n <div class=\"m-map-pop-in\" [class.-hidden]=\"!legendTabOpen\" [style.top.px]=\"legendTop$ | async\">\n <h4 class=\"a-h4\">{{ '@pry.widget.map.legendsTitle' | i18n }}</h4>\n <div class=\"m-map-pop-in__content\" [style.max-height.px]=\"layersHeight$ | async\">\n @for (geoLayer of legendLayers$ | async; track geoLayer; let index = $index) {\n @if (isLayerVisible(geoLayer)) {\n <div class=\"m-map-pop-in__title\" (click)=\"toggleLegend(index)\">\n @if (isLayerRendered(geoLayer) && !!geoLayer.title) {\n <pry-icon\n class=\"m-map-pop-in__dropdown-icon\"\n [iconSvg]=\"legendTabClosed[index] ? 'chevron_bottom' : 'chevron_top'\"\n [width]=\"12\"\n [height]=\"12\"\n ></pry-icon>\n }\n <h5 class=\"a-h5\">{{ geoLayer.title }}</h5>\n @if (!isLayerRendered(geoLayer)) {\n <pry-icon\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.widget.map.layerLoadError' | i18n\"\n [iconSvg]=\"'close'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n }\n </div>\n }\n <div\n class=\"m-map-pop-in__image\"\n [class.-hidden]=\"!legendTabOpen || legendTabClosed[index] || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n @if (geoLayer | legendUrl: { capabilities: (wmsCapabilities$ | async) }; as url) {\n <img\n [src]=\"url | getSecuredImage | async\"\n [alt]=\"'@pry.widget.map.legend' | i18n: { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n }\n @if (!(geoLayer | legendUrl: { capabilities: (wmsCapabilities$ | async) })) {\n <p class=\"m-map-pop-in__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n }\n </div>\n }\n </div>\n </div>\n }\n\n @if (leftSlideLayers.length > 0) {\n <div class=\"m-map-slide-legend -left\" [style.top.px]=\"legendTop$ | async\">\n <span class=\"m-map-slide-legend__title\">{{ '@pry.widget.map.slideTitle' | i18n }}:</span>\n @for (layer of leftSlideLayers; track layer) {\n <div>{{ layer.get('title') }}</div>\n }\n </div>\n }\n\n @if (rightSlideLayers.length > 0) {\n <div class=\"m-map-slide-legend -right\" [style.top.px]=\"legendTop$ | async\">\n <span class=\"m-map-slide-legend__title\">{{ '@pry.widget.map.slideTitle' | i18n }}:</span>\n @for (layer of rightSlideLayers; track layer) {\n <div>{{ layer.get('title') }}</div>\n }\n </div>\n }\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"0.01\"\n value=\"50\"\n #sliderElement\n class=\"o-map-slider\"\n [class.-hidden]=\"!(hasSlideLayer$ | async)\"\n (input)=\"triggerLayerRender()\"\n />\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ ((tooltipManager.tooltipDisplayedIndex$ | async) ?? 0) + 1 }} / {{ tooltipManager.tooltipNumber }}</p>\n <button\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n (click)=\"tooltipManager.tooltipMove(-1)\"\n [disabled]=\"!tooltipManager.tooltipCanMove(-1)\"\n >\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n (click)=\"tooltipManager.tooltipMove(1)\"\n [disabled]=\"!tooltipManager.tooltipCanMove(1)\"\n >\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipManager.clearTooltip(true)\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n map: {\n attribution: 'Layer credits',\n attributions: 'Display credits',\n style: 'Map style',\n noStyle: 'Empty map',\n styleFromUrl: 'Style from URL',\n styleUrl: 'URL',\n fit: 'Fit data',\n addLayer: 'Add layer',\n layer: 'Layer n°{{index}}',\n layerOptions: 'Layer options',\n layerTitle: 'Layer Label',\n order: 'Order of the layer',\n layerType: {\n title: 'Type',\n heatmap: 'Heatmap',\n bubble: 'Bubbles map',\n relation: 'Links',\n marker: 'Markers map',\n polygon: 'Shapes map',\n wms: 'WMS API',\n wmts: 'WMTS API',\n featurelayer: 'Feature layer',\n vectortile: 'Vector tile',\n rastertile: 'Raster tile',\n point: 'Points',\n line: 'Lines',\n geoserver: 'Geoserver ({{name}})',\n 'multi-line': 'Multi-lines',\n 'multi-polygon': 'Multi-polygons'\n },\n tooltip: {\n hover: 'Hover',\n click: 'Click',\n title: 'Opening tooltips'\n },\n tile: 'Tile layer options',\n locationAttr: 'Placement options',\n clustering: 'Clustering options',\n wms: {\n url: 'Service Url',\n paramLayer: 'Data identifier',\n paramTiled: 'Tiled',\n style: 'Style',\n matrixSet: 'matrixSet'\n },\n deleteLayer: 'Delete layer',\n locationArray: 'Lat and Lng in separate properties',\n locationAttribute: {\n both: 'Location property',\n lat: 'Latitude property',\n lng: 'Longitude property'\n },\n layerStyle: 'Layer style',\n intensityAttribute: 'Intensity property',\n classes: 'Classes displayed in layer',\n relations: 'Display links',\n clustered: 'Clustered',\n clusterDistance: 'Cluster distance',\n opacity: 'Opacity',\n address: 'Address',\n addressCoords: 'Coordinates',\n active: 'Active',\n inactive: 'Inactive',\n move: 'Move mode',\n lasso: 'Lasso selection',\n rectangle: 'Rectangle selection',\n click: 'Click selection',\n zoom: 'Zoom selection',\n export: 'Export map',\n legend: 'Legend of layer {{layer}}',\n legendNotProvided: 'Legend not provided by server',\n layersTitle: 'Layers',\n selectLayers: 'Select layers',\n legendsTitle: 'Legend',\n legends: 'Display legend',\n singleLayer: 'Single layer mode',\n autoLayer: 'Automatic datasource layers configuration',\n slide: {\n global: 'Use a slider',\n title: 'Display on slider',\n all: 'Everywhere',\n left: 'To the left',\n right: 'To the right'\n },\n open: 'Open/Close menu',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n slideTitle: 'Displayed data',\n layerLoadError: 'Error loading in layer data',\n layerSettings: {\n title: 'Configure layers',\n addLayerGroup: 'Add layer group',\n layerGroupName: 'Layer group title',\n optionalColon: '',\n singleLayer: 'Single layer selection',\n multipleLayer: 'Multi layer selection',\n unfoldAll: 'Unfold all layers',\n foldAll: 'Fold all layers',\n noLayer: 'No layer',\n selectLayers: 'Select layers to display',\n group: 'Group',\n deleteGroup: 'Delete group',\n deleteLayer: 'Delete layer',\n editLayerTitle: 'Edit layer title',\n editGroupName: 'Edit group name'\n },\n missingTitle: 'Missing title',\n noGroup: 'Without group'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n map: {\n attribution: 'Crédits de cette couche',\n attributions: 'Afficher les crédits',\n style: 'Style du fond de carte',\n noStyle: 'Aucun fond de carte',\n styleFromUrl: 'Style depuis une URL absolue',\n styleUrl: 'URL',\n fit: 'Adapter la taille aux données',\n addLayer: 'Ajouter une couche',\n layer: 'Couche n°{{index}}',\n layerOptions: 'Options de la couche',\n layerTitle: 'Libellé de la couche',\n order: 'Ordre de la couche',\n layerType: {\n title: 'Type',\n heatmap: 'Chaleur',\n relation: 'Relations',\n bubble: 'Bulles',\n marker: 'Marqueurs',\n polygon: 'Formes',\n wms: 'Service WMS',\n wmts: 'Service WMTS',\n featurelayer: 'Feature layer',\n vectortile: 'Vector tile',\n rastertile: 'Raster tile',\n point: 'Points',\n line: 'Lignes',\n geoserver: 'Geoserver ({{name}})',\n 'multi-line': 'Multi-lignes',\n 'multi-polygon': 'Multi-polygone'\n },\n tooltip: {\n hover: 'Survol',\n click: 'Clic',\n title: 'Ouverture des tooltips'\n },\n tile: 'Option de couche tuile',\n locationAttr: 'Options de positionnement',\n clustering: 'Options de regroupement',\n wms: {\n url: 'Url du service',\n paramLayer: 'Identifiant de donnnées',\n paramTiled: 'Sous forme de tuiles',\n style: 'Style',\n matrixSet: 'matrixSet'\n },\n deleteLayer: 'Supprimer la couche',\n locationArray: 'Latitude et Longitude séparées',\n locationAttribute: {\n both: 'Propriété des coordonnées',\n lat: 'Propriété de la latitude',\n lng: 'Propriété de la longitude'\n },\n layerStyle: 'Style de la couche',\n intensityAttribute: \"Propriété de l'intensité\",\n classes: 'Classes affichées dans cette couche',\n relations: 'Afficher les relations',\n clustered: 'Regroupement',\n clusterDistance: 'Distance de regroupement',\n opacity: 'Opacité',\n address: 'Adresse',\n addressCoords: 'Coordonnées',\n active: 'Active',\n inactive: 'Inactive',\n move: 'Mode déplacement',\n lasso: 'Sélection par lasso',\n rectangle: 'Sélection par rectangle',\n click: 'Sélectionner par clic',\n zoom: 'Zoom par rectangle',\n export: 'Exporter la carte',\n legendsTitle: 'Légende',\n legend: 'Légende de la couche {{layer}}',\n legendNotProvided: 'Légende non fournie par le serveur',\n layersTitle: 'Couches',\n selectLayers: 'Sélectionner les couches',\n legends: 'Afficher la légende',\n singleLayer: 'Mode mono-couche',\n autoLayer: 'Configuration automatique des sources de données',\n slide: {\n global: 'Utiliser un curseur',\n title: 'Afficher selon un curseur',\n all: 'Partout',\n left: 'Uniquement à gauche',\n right: 'Uniquement à droite'\n },\n open: 'Ouverture/Fermeture menu',\n zoomIn: 'Zoomer',\n zoomOut: 'Dézoomer',\n slideTitle: 'Données affichées',\n layerLoadError: 'Erreur de chargement de la couche',\n layerSettings: {\n title: 'Paramétrer les couches :',\n addLayerGroup: 'Ajouter un groupe de couche',\n layerGroupName: 'Titre du groupe de couche',\n optionalColon: ' :',\n singleLayer: 'Mono sélection',\n multipleLayer: 'Multi sélection',\n unfoldAll: 'Tout déplier',\n foldAll: 'Tout réplier',\n noLayer: 'Aucune couche',\n selectLayers: 'Sélectionnez les couches à afficher :',\n group: 'Groupe',\n deleteGroup: 'Supprimer le groupe',\n deleteLayer: 'Supprimer la couche',\n confirmDelete: 'Est-ce que vous êtes sûr de vouloir supprimer ce groupe de couches ?',\n editLayerTitle: 'Modifier le titre de la couche',\n editGroupName: 'Modifier le nom du groupe'\n },\n missingTitle: 'Titre manquant',\n noGroup: 'Sans groupe'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryEditInputModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryOverlayModule,\n PryRangeModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetMapComponent } from './component/widget-map.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { GeometryFieldsForPipe } from './pipe/widget-map-geometry-fields-for.pipe';\nimport { WidgetMapLegendUrlPipe } from './pipe/widget-map-legend-url.pipe';\nimport { PryWidgetMapCssComponent } from './style/css.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nconst components = [WidgetMapComponent, GeometryFieldsForPipe, PryWidgetMapCssComponent, WidgetMapLegendUrlPipe];\n\n@NgModule({\n declarations: [...components],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryOverlayModule,\n PryI18nModule,\n PryRangeModule,\n PryEditInputModule,\n DragDropModule\n ],\n exports: [...components]\n})\nexport class WidgetMapModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-map', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-map', enTranslations);\n }\n\n override getComponent() {\n return WidgetMapComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getProjection","Circle","i7.PryWidgetMapCssComponent","i9.GeometryFieldsForPipe","i10.WidgetMapLegendUrlPipe","i1"],"mappings":"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"}