@provoly/dashboard 0.13.4 → 0.13.6
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.
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +1 -1
- package/esm2022/lib/core/model/display-options.interface.mjs +55 -0
- package/esm2022/lib/core/model/public-api.mjs +2 -1
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +9 -2
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -2
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +7 -1
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +4 -2
- package/esm2022/presentation/components/presentation.component.mjs +5 -2
- package/esm2022/toolbox/components/toolbox.component.mjs +4 -3
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +3 -3
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +61 -5
- package/esm2022/widgets/widget-map/pipe/xml-utils.class.mjs +32 -0
- package/esm2022/widgets/widget-map/public-api.mjs +2 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +4 -1
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +3 -2
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +94 -8
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +73 -4
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/model/display-options.interface.d.ts +24 -0
- package/lib/core/model/public-api.d.ts +1 -0
- package/lib/dashboard/components/dashboard.component.d.ts +6 -3
- package/lib/dashboard/store/dashboard.actions.d.ts +8 -0
- package/lib/dashboard/store/dashboard.reducers.d.ts +2 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +1 -0
- package/package.json +1 -1
- package/toolbox/components/toolbox.component.d.ts +1 -0
- package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +6 -1
- package/widgets/widget-map/pipe/xml-utils.class.d.ts +5 -0
- package/widgets/widget-map/public-api.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-widgets-widget-map.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-map/search-bar/search-bar.control.ts","../../../../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/reader/kmz-zip-reader.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/random-color-style.function.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/read-as-text.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/shp-zip-reader.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/map-formats-reader.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/widget-map.utils.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map-layer.service.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 { GeocodingService } from '@provoly/dashboard';\nimport { Control } from 'ol/control';\nimport { Options } from 'ol/control/Control';\nimport BaseEvent from 'ol/events/Event';\nimport { fromLonLat } from 'ol/proj';\n\nexport class AddressSearchedEvent extends BaseEvent {\n latLon: [number, number];\n coordinates: [number, number];\n address: string;\n query: string;\n\n // @ts-ignore\n constructor({ type, coordinates, address, latLon, query }) {\n super(type);\n this.coordinates = coordinates;\n this.address = address;\n this.latLon = latLon;\n this.query = query;\n }\n}\n\nexport class SearchBarControl extends Control {\n button: HTMLButtonElement;\n input: HTMLInputElement;\n geocodingService?: GeocodingService;\n\n constructor(opt_options: Options) {\n const options = opt_options || {};\n\n const button = document.createElement('button');\n button.innerHTML = '<div></div>';\n\n const element = document.createElement('div');\n element.className = 'ol-searchbar ol-unselectable ol-control';\n element.appendChild(button);\n\n const input = document.createElement('input');\n input.type = 'text';\n input.placeholder = '1 rue de la Paix...';\n input.style.display = 'none';\n\n element.appendChild(input);\n\n super({\n element: element,\n target: options.target\n });\n\n this.button = button;\n button.addEventListener('click', this.toggleInputVisible.bind(this), false);\n this.input = input;\n input.addEventListener('keypress', this.keyPress.bind(this), false);\n }\n\n toggleInputVisible() {\n if (this.inputVisible) {\n this.input.style.display = 'none';\n } else {\n this.input.style.display = 'block';\n }\n }\n\n get inputVisible() {\n return this.input.style.display === 'block';\n }\n\n keyPress(e: KeyboardEvent) {\n if (e.key === 'Enter') {\n this.geocodingService?.fromAddress(this.input.value).subscribe((result) => {\n this.getMap()?.dispatchEvent(\n new AddressSearchedEvent({\n type: 'searched-address',\n latLon: result.latLon,\n coordinates: fromLonLat(result.latLon.reverse(), this.getMap()?.getView().getProjection()),\n query: this.input.value,\n address: result.pointAddress\n })\n );\n this.toggleInputVisible();\n });\n }\n }\n\n withGeocodingService(geocodingService: GeocodingService) {\n this.geocodingService = geocodingService;\n return this;\n }\n}\n","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';\n\nexport class SelectionInteraction extends PointerInteraction {\n private coordinates: number[] | null;\n private cursor: string;\n private features: string[];\n private previousCursor: string | undefined;\n selectionType!: 'click' | 'lasso' | 'rectangle' | 'zoom' | '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.cursor = 'pointer';\n this.features = [];\n this.previousCursor = undefined;\n widgetMapConfig.actions$.subscribe((actions) => {\n // @ts-ignore\n this.actions = actions.filter((action) => action !== 'export' && action !== 'upload');\n this.selectionType = 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 === 'move') {\n return false;\n }\n\n if (this.selectionType === '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)) {\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 === '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)) {\n this.currentRectangle.setPixels(this.coordinates ?? [0, 0], evt.pixel);\n return true;\n }\n if (this.selectionType === '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 === 'click' && this.features.length > 0) {\n this.store?.dispatch(DashboardActions.selectMany({ ids: this.features }));\n }\n\n if (this.selectionType === '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(\n (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 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 === '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 === '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 === '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 = type as 'click' | 'lasso' | 'rectangle' | 'zoom' | 'move';\n }\n}\n","import { ContextMenuActions, TooltipMode } from '@provoly/dashboard';\nimport { Feature, MapBrowserEvent, Overlay } from 'ol';\nimport LayerSwitcher from 'ol-layerswitcher';\nimport { ScaleLine } from 'ol/control';\nimport { Circle, Point } from 'ol/geom';\nimport { toLonLat } from 'ol/proj';\nimport { WidgetMapComponent } from '../component/widget-map.component';\nimport { AddressSearchedEvent, SearchBarControl } from '../search-bar/search-bar.control';\nimport { SelectionInteraction } from './selection-interaction.class';\n\nexport class InteractionManager {\n interactionPopupOverlay?: Overlay;\n private component!: WidgetMapComponent;\n searchBarControl?: SearchBarControl;\n layerSwitchControl?: LayerSwitcher;\n scaleControl?: ScaleLine;\n selectionInteraction = new SelectionInteraction();\n\n init(component: WidgetMapComponent) {\n this.component = component;\n this.addContextMenuInteraction();\n this.addDropInteraction();\n this.addOverlayOnInteraction();\n this.addSearchBarControl();\n this.addLayerSwitcher();\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 })\n );\n e.preventDefault();\n }\n },\n drop: (e: DragEvent) => {\n this.component.import(e);\n e.preventDefault();\n },\n popup: (event: MapBrowserEvent<MouseEvent>) => {\n const values = this.component.map.getFeaturesAtPixel(event.pixel, { hitTolerance: 5 }) as (\n | Feature<Circle>\n | Feature<Point>\n )[];\n const valuesToDisplay = [\n ...new Set(\n values\n .map((value) => value.get('id'))\n .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: value?.getKeys().reduce((p, c) => ({ ...p, [c]: value.get(c) }), {})\n }))\n )\n ];\n this.component.classicFeatures$.next(valuesToDisplay);\n const wmsLayers = this.component.getWMSLayers();\n if (wmsLayers) {\n this.component.getFeatureFromServer(wmsLayers, event.coordinate);\n }\n }\n };\n\n private addContextMenuInteraction() {\n this.component.map.getViewport().addEventListener('contextmenu', this.listeners.contextMenu);\n }\n\n private addDropInteraction() {\n this.component.map.getViewport().addEventListener('drop', this.listeners.drop);\n }\n\n private addOverlayOnInteraction() {\n if (!this.interactionPopupOverlay) {\n this.interactionPopupOverlay = new Overlay({\n element: this.component.popup.nativeElement,\n offset: [9, 9]\n });\n this.component.map.addOverlay(this.interactionPopupOverlay);\n }\n if (this.component.optionsCopy.tooltipMode !== TooltipMode.NONE) {\n this.component.map.un('singleclick', this.listeners.popup);\n this.component.map.on('singleclick', this.listeners.popup);\n }\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 });\n this.component.map.addControl(this.scaleControl);\n }\n }\n\n private addSearchBarControl() {\n this.searchBarControl = new SearchBarControl({}).withGeocodingService(this.component.geocodingService);\n this.component.map.addControl(this.searchBarControl);\n\n const addressOverlay = new Overlay({\n element: this.component.address.nativeElement,\n offset: [9, 9]\n });\n this.component.map.addOverlay(addressOverlay);\n\n // @ts-ignore\n this.component.map.on('searched-address', (evt: AddressSearchedEvent) => {\n this.component.address.nativeElement.innerHTML = `<div>\n <div>${this.component.translateService.instant('@pry.widget.map.address')}: ${evt.address}</div>\n <div>${this.component.translateService.instant('@pry.widget.map.addressCoords')}: ${evt.latLon}</div>\n </div>`;\n this.component.address.nativeElement.style.display = '';\n addressOverlay.setPosition(evt.coordinates);\n this.component.map.getView().setCenter(evt.coordinates);\n this.component.map.getView().setZoom(this.component.map.getView().getMaxZoom());\n });\n }\n\n private addLayerSwitcher() {\n this.layerSwitchControl = new LayerSwitcher({\n activationMode: 'click',\n reverse: false\n });\n this.component.map.addControl(this.layerSwitchControl);\n\n // @ts-ignore\n this.layerSwitchControl.on('show', () => {\n this.component.legendTabOpen = false;\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 JSZip from 'jszip';\nimport { Feature, Map } from 'ol';\nimport { KML } from 'ol/format';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\n\nexport class KmzZipReader {\n reader: JSZip;\n map!: Map;\n fileInsideZipExtension: string;\n parser: KML;\n\n constructor() {\n this.reader = new JSZip();\n this.fileInsideZipExtension = '.kml';\n this.parser = new KML();\n }\n\n withMap(map: Map) {\n this.map = map;\n return this;\n }\n\n apply(file: any, resolve: (r: any) => void, reject: (e: any) => void) {\n this.reader.loadAsync(file).then((zip) => {\n let entry: JSZip.JSZipObject | null = null;\n let imageReplacements: Promise<{ name: string; image: string }>[] = [];\n zip.forEach((path, zipEntry) => {\n if (zipEntry.name.endsWith(this.fileInsideZipExtension)) {\n entry = zipEntry;\n }\n const split = zipEntry.name.toLowerCase().split('.');\n const extention = split[split.length - 1];\n\n if (['png', 'jpeg'].includes(extention)) {\n imageReplacements.push(\n new Promise((resolveS) => {\n zipEntry.async('arraybuffer').then((buffer) => {\n resolveS({\n name: zipEntry.name,\n image: window.URL.createObjectURL(new Blob([buffer], { type: `image/${extention}` }))\n });\n });\n })\n );\n }\n });\n\n if (entry === null) {\n reject({ msg: '@pry.widget.map.importNotFoundInZip', val: { extension: this.fileInsideZipExtension } });\n } else {\n Promise.all(imageReplacements).then((replacements) => {\n entry?.async('string').then((buffer) => {\n let replacedBuffer = buffer;\n replacements.forEach(\n (replacement) => (replacedBuffer = replacedBuffer.replace(replacement.name, replacement.image))\n );\n resolve(\n new VectorLayer({\n source: new VectorSource({\n features: this.parser.readFeatures(replacedBuffer, {\n featureProjection: this.map.getView().getProjection()\n }) as Feature<any>[]\n })\n })\n );\n });\n });\n }\n });\n }\n}\n","import { Feature } from 'ol';\nimport {\n Circle,\n Geometry,\n GeometryCollection,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Point,\n Polygon\n} from 'ol/geom';\nimport { Fill, Stroke, Style } from 'ol/style';\nimport CircleStyle from 'ol/style/Circle';\nimport RenderFeature from 'ol/render/Feature';\n\nexport const randomColor = () => [\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255)\n];\n\nexport const styleFunction = (color: number[]) => (feature: Feature<Geometry> | RenderFeature) => {\n const stroke = new Stroke({\n color: `rgb(${color.join(',')})`,\n width: 1\n });\n const fill = new Fill({ color: `rgba(${color.join(',')}, 0.1)` });\n const image = new CircleStyle({ radius: 5, fill, stroke });\n switch (feature.getGeometry()?.getType() as any) {\n case Point:\n case MultiPoint:\n return new Style({ image });\n case LineString:\n case MultiLineString:\n return new Style({ stroke });\n case MultiPolygon:\n case Polygon:\n case Circle:\n return new Style({ stroke, fill });\n case GeometryCollection:\n default:\n return new Style({ stroke, fill, image });\n }\n};\n","import { Feature, Map } from 'ol';\nimport FeatureFormat from 'ol/format/Feature';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { randomColor, styleFunction } from './random-color-style.function';\n\nexport class ReadAsText {\n reader: FileReader;\n map!: Map;\n\n constructor(private parser: FeatureFormat) {\n this.reader = new FileReader();\n }\n\n withMap(map: Map) {\n this.map = map;\n return this;\n }\n\n apply(file: any, resolve: (r: any) => void, reject: (e: any) => void) {\n this.reader.readAsText(file, 'UTF-8');\n this.reader.onload = (evt) => {\n resolve(\n new VectorLayer({\n source: new VectorSource({\n features: this.parser.readFeatures(evt.target?.result, {\n featureProjection: this.map.getView().getProjection()\n }) as Feature<any>[]\n }),\n style: styleFunction(randomColor())\n })\n );\n };\n this.reader.onerror = (err) => {\n reject({ msg: 'ReadAsText: ' + err, val: {} });\n };\n }\n}\n","import FeatureFormat from 'ol/format/Feature';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { Feature, Map } from 'ol';\nimport { GeoJSON } from 'ol/format';\nimport { parseZip } from 'shpjs';\nimport { Buffer } from 'buffer';\n\nexport class ShpZipReader extends FeatureFormat {\n parser = new GeoJSON();\n map!: Map;\n\n constructor() {\n super();\n }\n\n withMap(map: Map) {\n this.map = map;\n return this;\n }\n\n apply(file: any, resolve: (r: any) => void, reject: (e: any) => void) {\n file\n .arrayBuffer()\n .then((buffer: ArrayBuffer) => {\n parseZip(Buffer.from(buffer))\n .then((geojson) => {\n resolve(\n new VectorLayer({\n source: new VectorSource({\n features: this.parser.readFeatures(geojson, {\n featureProjection: this.map.getView().getProjection()\n }) as Feature<any>[]\n })\n })\n );\n })\n .catch((err) => reject({ msg: 'ShpZipReader: ' + err, val: {} }));\n })\n .catch((err: any) => reject({ msg: 'ShpZipReader: ' + err, val: {} }));\n }\n}\n","import { Map } from 'ol';\nimport { GeoJSON, GPX, IGC, KML, TopoJSON } from 'ol/format';\nimport { Geometry } from 'ol/geom';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { KmzZipReader } from './kmz-zip-reader.class';\nimport { ReadAsText } from './read-as-text.class';\nimport { ShpZipReader } from './shp-zip-reader.class';\n\nexport class MapFormatsReader {\n formats = {\n gpx: new ReadAsText(new GPX()),\n geojson: new ReadAsText(new GeoJSON()),\n igc: new ReadAsText(new IGC()),\n kml: new ReadAsText(new KML()),\n kmz: new KmzZipReader(),\n 'kml.zip': new KmzZipReader(),\n topojson: new ReadAsText(new TopoJSON()),\n 'shp.zip': new ShpZipReader()\n } as { [extension: string]: ReadAsText | KmzZipReader | ShpZipReader };\n map: Map;\n\n constructor(map: Map) {\n this.map = map;\n }\n\n decodeFile(file: any): Promise<VectorLayer<VectorSource<Geometry>>> {\n return new Promise((resolve, reject) => {\n const split = file.name.split('.');\n let extension = split[split.length - 1] as string;\n if (extension === 'zip') {\n extension = `${split[split.length - 2]}.${split[split.length - 1]}`;\n }\n\n if (!this.formats[extension]) {\n reject({\n msg: '@pry.widget.map.importError',\n val: { extension, authorizedFormats: Object.keys(this.formats).join(', ') }\n });\n return;\n }\n\n this.formats[extension].withMap(this.map).apply(file, resolve, reject);\n });\n }\n}\n","import {\n Attribute,\n Class,\n Field,\n FieldType,\n Item,\n ItemUtils,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n Relation,\n ResultSet\n} from '@provoly/dashboard';\n// @ts-ignore\nimport tokml from 'geojson-to-kml';\nimport { Feature, Map } from 'ol';\nimport { GeoJSON } from 'ol/format';\nimport { Circle, LineString, Point } from 'ol/geom';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\n\nexport type LatLonCandidate = {\n min: number;\n max: number;\n name: string;\n type: string;\n};\n\nexport const 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'].includes(layer.type) &&\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 = geometryForLayer(layer);\n\n let candidates = [] as { attr: Attribute; field: Field | undefined }[];\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\n .map((attr) => ({ attr, field: fields.find((f) => f.id === attr.field) }))\n .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 .reduce((p, c) => [...p, ...c], [])\n .map((attr) => fields.filter((field) => field?.type === geometry).map((field) => ({ attr, field })))\n .reduce((p, c) => [...p, ...c], []);\n }\n\n if (candidates.length > 0) {\n specificLayer.attribute = candidates[0].attr.name;\n }\n }\n }\n};\n\nexport const 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.name === (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 .map((attr) => ({ attr, field: fields.find((f) => f.id === attr.field) }))\n .filter((attr) => attr.field?.type === FieldType.DECIMAL || attr.field?.type === FieldType.INTEGER)\n .map((attr) => {\n const attrValues = ItemUtils.pertinentValue(items, attr.attr);\n return {\n min: Math.min(...attrValues),\n max: Math.max(...attrValues),\n name: attr.attr.name\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].name;\n specificLayer.intensityAsc = true;\n }\n }\n }\n};\n\nexport const getFeatureFromItem = (\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: ItemUtils.readGeometry(item, 'point', locationAttribute),\n classicStyle: iconStyle ?? null,\n selectedStyle: selectedIconStyle ?? null\n });\n};\n\nexport const getCircleFeatureFromItem = (\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((ItemUtils.readGeometry(item, 'point', locationAttribute) as Point).getCoordinates(), radius),\n classicStyle: iconStyle,\n selectedStyle: selectedIconStyle,\n type: 'bubble'\n });\n};\n\nexport const getLinkFeature = (\n relation: Relation,\n featureSource: Feature<Point>,\n featureDestination: Feature<Point>\n) => {\n return new Feature({\n ...relation,\n geometry: new LineString([\n featureSource.getGeometry()?.getCoordinates() ?? [0, 0],\n featureDestination.getGeometry()?.getCoordinates() ?? [0, 0]\n ]),\n source: featureSource,\n destination: featureDestination,\n type: 'link'\n });\n};\n\nexport const 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\nexport const exportMapAsImage = (map: Map, filename: string) => {\n getMapAsPng(map).then((data) => {\n const link = document.createElement('a');\n link.download = filename;\n link.href = data;\n link.click();\n });\n};\n\nconst exportMapAsGeoJSONString = (map: Map): Promise<string> => {\n return new Promise((resolve, reject) => {\n const format = new GeoJSON();\n const features = [] as Feature<any>[];\n const promises = map\n .getAllLayers()\n .filter((layer) => !!layer.getSource && !!layer.getSource() && !!(layer.getSource() as VectorSource).getFeatures)\n .map((layer) => (layer.getSource() as VectorSource).getFeatures())\n .filter((promise) => !!promise);\n Promise.all(promises)\n .then((featuresOfLayer) => {\n featuresOfLayer.forEach((feature) => {\n features.push(...feature);\n });\n resolve(format.writeFeatures(features) as string);\n })\n .catch((err) => reject(err));\n });\n};\n\nexport const exportMapAsGeoJSON = (map: Map, filename: string) => {\n exportMapAsGeoJSONString(map).then((output) => {\n const link = document.createElement('a');\n link.download = filename;\n const blob = new Blob([output], {\n type: 'application /geo+json'\n });\n link.href = URL.createObjectURL(blob);\n link.click();\n });\n};\n\nexport const exportMapAsKML = (map: Map, filename: string) => {\n exportMapAsGeoJSONString(map).then((output) => {\n const geoJSON = JSON.parse(output);\n const kml = tokml(geoJSON);\n const link = document.createElement('a');\n link.download = filename;\n const blob = new Blob([kml], {\n type: 'application/vnd.google-earth.kml+xml'\n });\n link.href = URL.createObjectURL(blob);\n link.click();\n });\n};\n\nexport const geometryForLayer = (layer: MapWidgetLayerOptions) => {\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 default:\n return FieldType.POINT;\n }\n};\n\nexport const DEFAULT_HEATMAP_RADIUS = 25;\nexport const DEFAULT_RADIUS_INTENSITY_FACTOR = 10000;\nexport const DEFAULT_ZOOM_MIN = 3;\nexport const DEFAULT_ZOOM_START = 10;\nexport const DEFAULT_ZOOM_MAX = 18;\nexport const DEFAULT_MAP_CENTER = [2.2827217347381525, 48.864706031557716];\nexport const EMPTY_MAP_STYLE = { layers: [] };\n","import { Injectable } from '@angular/core';\nimport {\n Attribute,\n ItemUtils,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetRelationLayerOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\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, 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 {\n DEFAULT_HEATMAP_RADIUS,\n DEFAULT_RADIUS_INTENSITY_FACTOR,\n DEFAULT_ZOOM_MAX,\n DEFAULT_ZOOM_MIN,\n getCircleFeatureFromItem,\n getFeatureFromItem\n} from '../utils/widget-map.utils';\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\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 = [...this.dontNeedLocation, 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'];\n\n layersImplementation = {\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new Vector({ attributions: [layer.attribution ?? ''] }),\n blur: (layer.radius ?? DEFAULT_HEATMAP_RADIUS) / 2,\n radius: layer.radius ?? 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 = ItemUtils.readGeometry(item, 'point', attributesForClass[classId].locationAttribute);\n return !!location;\n })\n .forEach((item) => {\n heatmap\n .getSource()\n ?.addFeature(getFeatureFromItem(item, 'heatpoint', attributesForClass[item.oClass].locationAttribute));\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 = ItemUtils.readGeometry(item, 'point', attributesForClass[item.oClass].locationAttribute);\n return !!location;\n })\n .forEach(async (item) => {\n const itemFeature = getFeatureFromItem(\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(layer, layerClassesId, resultSet, attributesForClass, 'point');\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(layer, layerClassesId, resultSet, attributesForClass, 'line');\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(layer, layerClassesId, resultSet, attributesForClass, 'multi-line');\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(layer, layerClassesId, resultSet, attributesForClass, 'polygon');\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(layer, layerClassesId, resultSet, attributesForClass, 'multi-polygon');\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 = ItemUtils.readGeometry(item, 'point', attributesForClass[item.oClass].locationAttribute);\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 = getCircleFeatureFromItem(\n item,\n attributesForClass[item.oClass].locationAttribute,\n (layer.intensityAsc ? atScale : 1 - atScale) * (layer.radiusFactor ?? 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 = new Tile({\n minZoom: layer.minZoom ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled }\n })\n });\n impl.set('oClass', layer.oClass);\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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: ItemUtils.readGeometry(item, type, attributesForClass[item.oClass].locationAttribute)\n }))\n .filter(({ location }) => !!location)\n .forEach(async (subItem) => {\n const itemFeature = new Feature({\n ...subItem.item,\n type,\n geometry: subItem.location,\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","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-map-css',\n template: '',\n styleUrls: ['./_o-widget-map.scss', './_o-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 { geometryForLayer } 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 = 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) => {\n const attrField = fields.find((f) => f.id === attr.field);\n return !!attrField && attrField.type === type;\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n\n const resArr = [] as Attribute[];\n potentialFields.forEach(function (attr) {\n if (resArr.findIndex((x) => x.name == attr.name) <= -1) {\n resArr.push(attr);\n }\n });\n return resArr;\n })\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MapGeoServerLayerOptions, MapWMSLayerLayerOptions } from '@provoly/dashboard';\n\n@Pipe({\n name: 'legendUrl'\n})\nexport class WidgetMapLegendUrlPipe implements PipeTransform {\n transform(geoLayer: MapGeoServerLayerOptions | MapWMSLayerLayerOptions): string {\n if (geoLayer && geoLayer.url) {\n const layerUrlWithQmark = geoLayer.url.indexOf('?') === -1 ? geoLayer.url + '?' : geoLayer.url;\n const layerUrlWithService =\n layerUrlWithQmark.indexOf('&SERVICE=') === -1 ? layerUrlWithQmark + '&SERVICE=WMS' : layerUrlWithQmark;\n const layerUrlWithVersion =\n layerUrlWithService.indexOf('&VERSION=') === -1 ? layerUrlWithService + '&VERSION=1.3.0' : layerUrlWithService;\n\n return `${layerUrlWithVersion}&REQUEST=GetLegendGraphic&format=image%2Fpng&LAYER=${geoLayer.paramLayer}&LEGEND_OPTIONS=fontName:Ubuntu`;\n }\n return '';\n }\n}\n","import { Overlay as cdkOverlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Component,\n ComponentRef,\n ElementRef,\n Injector,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n BaseTooltipComponent,\n BaseWidgetMapLayerOptions,\n Class,\n ClassSelectors,\n ConfigActions,\n ConfigSelectors,\n DashboardActions,\n DashboardSelectors,\n Dataset,\n DataSourceSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n GeocodingService,\n GeoMetadata,\n ItemUtils,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\n PryI18nService,\n PrySnackbarService,\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, Overlay, View } from 'ol';\nimport { applyBackground, applyStyle } from 'ol-mapbox-style';\nimport { boundingExtent, createEmpty } from 'ol/extent';\nimport { Circle, Geometry, Point } from 'ol/geom';\nimport { Tile } from 'ol/layer';\nimport BaseLayer from 'ol/layer/Base';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport { Pixel } from 'ol/pixel';\nimport { fromLonLat, get as getProjection, transform } from 'ol/proj';\n\nimport { register } from 'ol/proj/proj4';\nimport { TileWMS } from 'ol/source';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\nimport proj4 from 'proj4';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n delay,\n distinctUntilChanged,\n filter,\n from,\n map,\n mergeMap,\n Observable,\n of,\n startWith\n} from 'rxjs';\nimport { InteractionManager } from '../interaction/interaction-manager.class';\nimport { MapFormatsReader } from '../reader/map-formats-reader.class';\nimport { AddressSearchedEvent } from '../search-bar/search-bar.control';\nimport {\n DEFAULT_MAP_CENTER,\n DEFAULT_ZOOM_MAX,\n DEFAULT_ZOOM_MIN,\n DEFAULT_ZOOM_START,\n exportMapAsGeoJSON,\n exportMapAsImage,\n exportMapAsKML,\n getLinkFeature,\n getMapAsPng,\n populateIntensityAttribute,\n populateLocationAttribute\n} from '../utils/widget-map.utils';\nimport { WidgetMapLayerService } from './widget-map-layer.service';\n\n@Component({\n selector: 'pry-widget-map',\n templateUrl: './widget-map.component.html'\n})\nexport class WidgetMapComponent extends DataWidgetComponent implements AfterViewInit {\n mapUrl$: Observable<string>;\n @ViewChild('map') mapRef!: ElementRef;\n @ViewChild('popup') popup!: ElementRef;\n @ViewChild('popupContent', { read: ViewContainerRef }) popupContent!: ViewContainerRef;\n @ViewChild('exportTypeTemplate', { read: TemplateRef }) exportTypeTemplate!: TemplateRef<any>;\n @ViewChild('address') address!: ElementRef;\n options$: Observable<MapWidgetOptions>;\n layerTypes = this.widgetMapLayerService.implementationList.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 private overlayRef?: OverlayRef;\n styles$: Observable<{ identifier: string; label: string }[]>;\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n i = 0;\n itemStyles$!: Observable<{ [id: string]: { classic: Style; bordered: Style } }>;\n height$: Observable<number>;\n actions$ = widgetMapConfig.actions$;\n private wmsFeatures$: Observable<any[]>;\n classicFeatures$: BehaviorSubject<any> = new BehaviorSubject([]);\n geoServerLayerDescriptions$: Observable<MapGeoServerLayerOptions[]>;\n legendTabOpen = false;\n legendTab = 0;\n legendLayers$!: Observable<(MapGeoServerLayerOptions | MapWMSLayerLayerOptions)[]>;\n legendTop$: Observable<number>;\n legendHeight$: Observable<number>;\n imageNotProvided: boolean[] = [];\n basicActions$: Observable<('click' | 'lasso' | 'rectangle' | 'zoom' | 'move' | 'export' | 'upload')[]>;\n zoomAndCenter$ = new BehaviorSubject<{ zoom?: { start: number; min: number; max: number }; center?: number[] }>({});\n fitOption$!: Observable<boolean>;\n mapStyle$!: Observable<string>;\n interactionManager: InteractionManager = new InteractionManager();\n mapStyleLayer$!: Observable<VectorTileLayer[]>;\n\n constructor(\n store: Store<any>,\n private snackBar: PrySnackbarService,\n public translateService: PryI18nService,\n private tooltipFactoryService: TooltipFactoryService,\n public geocodingService: GeocodingService,\n private overlay: cdkOverlay,\n private viewContainerRef: ViewContainerRef,\n private symbolService: SymbolService,\n private injector: Injector,\n private widgetMapLayerService: WidgetMapLayerService,\n el: ElementRef\n ) {\n super(store, el);\n\n this.basicActions$ = this.actions$.pipe(\n map((actions) => actions.filter((action) => action !== 'export' && action !== 'upload'))\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.fields$ = this.store.select(FieldSelectors.fields);\n this.styles$ = this.store.select(ConfigSelectors.mapStyles).pipe(\n map((styles) =>\n styles.concat({\n identifier: 'none',\n label: this.translateService.instant('@pry.widget.map.noStyle')\n })\n )\n );\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.geoServerLayerDescriptions$ = combineLatest([\n this.usedDatasources$.pipe(startWith([])),\n this.store.select(ConfigSelectors.geoServerUrl).pipe(debounceTime(10), startWith(undefined))\n ]).pipe(\n map(([dataSources, geoServerUrl]) => {\n if (!geoServerUrl) return [];\n return dataSources\n .filter((ds) => ds.metadata?.find((m) => m.metadataDef.name === GeoMetadata.NAMESPACE) !== undefined)\n .map((ds) => {\n ds = ds as unknown as Dataset;\n const metadatas: { [key: string]: string } = {};\n ds.metadata?.forEach((m) => (metadatas[m.metadataDef.name] = m.value));\n return {\n type: 'geoserver',\n url: geoServerUrl + '/' + metadatas[GeoMetadata.NAMESPACE] + '/wms?SERVICE=WMS&VERSION=1.3.0',\n paramLayer: metadatas[GeoMetadata.KEY],\n paramTiled: true,\n opacity: parseInt(metadatas[GeoMetadata.OPACITY] ?? 100, 10),\n title: metadatas[GeoMetadata.NAMESPACE] + ':' + metadatas[GeoMetadata.KEY],\n oClass: ds.oClass,\n key: metadatas[GeoMetadata.NAMESPACE] + ':' + metadatas[GeoMetadata.KEY]\n };\n })\n .map((layer) => layer as MapGeoServerLayerOptions);\n })\n );\n\n this.options$ = combineLatest([\n this.manifest$,\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.styles$,\n this.geoServerLayerDescriptions$\n ]).pipe(\n map(([manifest, resultSet, classes, fields, mapStyles, geoLayers]) => {\n // auto determine layers parameters to provide a working view\n const autoOptions = JSON.parse(JSON.stringify({ relations: true, ...manifest.options })) as MapWidgetOptions;\n if (!autoOptions.tooltipMode) {\n autoOptions.tooltipMode = TooltipMode.CLICK;\n }\n autoOptions.layers?.forEach((layer, i) => {\n populateLocationAttribute(layer, resultSet, classes, fields);\n populateIntensityAttribute(layer, resultSet, classes, fields);\n if (autoOptions.attributions) {\n layer.attribution = layer.attribution ?? '';\n }\n if (!layer.title) {\n this.setDefaultLayerTitle(layer, i);\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 const geoLayer = geoLayers.find((layer) => layer.key === layer.key) ?? null;\n return layer.type === 'geoserver'\n ? geoLayer\n ? { ...geoLayer, ...layer }\n : (null as unknown as MapWidgetLayerOptions)\n : { ...layer };\n }),\n ...geoLayers.filter((layer) => !actualLayerKeys.includes(layer.key))\n ].filter((layer) => !!layer);\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 return autoOptions;\n })\n );\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = JSON.parse(JSON.stringify(options));\n })\n );\n this.subscriptions.add(\n this.store\n .select(DashboardSelectors.address)\n .pipe(filter((addr) => !!addr && !!addr.pointAddress))\n .subscribe((addr) => {\n this.map?.dispatchEvent(\n new AddressSearchedEvent({\n type: 'searched-address',\n latLon: addr.latLon,\n coordinates: fromLonLat([...addr.latLon].reverse(), this.map.getView().getProjection()),\n query: addr.latLon,\n address: addr.pointAddress\n })\n );\n })\n );\n\n this.mapUrl$ = this.store.select(ConfigSelectors.mapUrl);\n this.wmsFeatures$ = this.store.select(DashboardSelectors.wmsFeatures);\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<{ [id: string]: { classic: Style; bordered: Style } }>((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 { [id: string]: { classic: Style; bordered: Style } };\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 : 0)),\n delay(10)\n );\n\n this.legendTop$ = this.displayHeader$.pipe(map((display) => 225 - (display ? 0 : WIDGET_HEADER_HEIGHT)));\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 - top - 56; // 56px is the tooltip height + margin\n }),\n delay(10)\n );\n }\n\n initInteractionManager() {\n return this.interactionManager.init(this);\n }\n\n ngAfterViewInit(): void {\n this.map = new Map({ target: this.mapRef.nativeElement });\n this.interactionManager = this.initInteractionManager();\n this.mapStyle$ = this.options$.pipe(\n map((options) => options.style),\n distinctUntilChanged()\n );\n\n this.mapStyleLayer$ = combineLatest([this.mapStyle$, this.mapUrl$]).pipe(\n map(([style, url]) => {\n if (!style || style === 'none') {\n return [];\n }\n const layer = new VectorTileLayer({ declutter: true });\n applyStyle(layer, `${url}/styles/${style}/style.json`).catch((err) =>\n console.warn('Style application problem', err)\n );\n applyBackground(layer, `${url}/styles/${style}/style.json`).catch((err) =>\n console.warn('Background application problem', err)\n );\n return [layer];\n })\n );\n\n this.options$\n .pipe(\n map((options) => ({\n center: fromLonLat(options.center ?? DEFAULT_MAP_CENTER),\n maxZoom: options.zoom?.max ?? DEFAULT_ZOOM_MAX,\n minZoom: options.zoom?.min ?? DEFAULT_ZOOM_MIN,\n zoom: options.zoom?.start ?? DEFAULT_ZOOM_START\n })),\n distinctUntilChanged()\n )\n .subscribe((view) => this.map.setView(new View(view)));\n\n this.fitOption$ = this.options$.pipe(\n map((options) => !!options.fit),\n distinctUntilChanged()\n );\n\n this.fitOption$.subscribe((fit) => this.fitMapForObjects(fit));\n\n this.layers$ = combineLatest([\n this.resultSet$,\n this.options$,\n this.classes$,\n this.additionalLayers$,\n this.itemStyles$,\n this.store.select(ConfigSelectors.geoServerUrl)\n ]).pipe(\n filter(\n ([resultSet, options, classes, additionalLayers, itemStyles, geoServerUrl]) =>\n !!resultSet && !!options && !!classes\n ),\n map(([resultSet, options, classes, additionalLayers, itemStyles, geoServerUrl]) => {\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) => {\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 if (layer.type === 'relation') {\n hasRelationLayer = resultLayer as unknown as VectorLayer<VectorSource>;\n }\n resultLayer.set('title', layer.title);\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(getLinkFeature(relation, source, dest));\n }\n });\n }\n layers.push(...additionalLayers);\n layers.forEach((layer, index, arr) => layer.set('zIndex', arr.length - index));\n\n return layers;\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.subscriptions.add(\n combineLatest([this.mapStyleLayer$, this.layers$, this.fitOption$, this.selectedIds$]).subscribe(\n ([mapStyleLayer, layers, fit, selectedIds]) => {\n const toApplyLayers = [...layers, ...mapStyleLayer];\n this.map.setLayers(toApplyLayers);\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 (['bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].includes(type)) {\n feature.setStyle(\n feature.get(selectedIds.includes(feature.get('id')) ? 'selectedStyle' : 'classicStyle')\n );\n }\n });\n }\n });\n\n setTimeout(() => {\n this.fitMapForObjects(fit, selectedIds);\n this.map.updateSize();\n }, 200);\n }\n )\n );\n this.subscriptions.add(\n combineLatest([this.wmsFeatures$, this.classicFeatures$]).subscribe(([wmsFeatures, classicFeatures]) => {\n if (this.map) {\n const popupOverlay = new Overlay({\n element: this.popup.nativeElement,\n offset: [9, 9]\n });\n this.map.addOverlay(popupOverlay);\n this.popupContent.clear();\n const componentPromises = [] as Promise<ComponentRef<BaseTooltipComponent> | null>[];\n wmsFeatures.forEach((value) => {\n componentPromises.push(this.generateTooltip(value));\n });\n classicFeatures.forEach((value: any) => {\n componentPromises.push(this.generateTooltip(value));\n });\n\n Promise.all(componentPromises).then((promises) => {\n const realComponents = promises.filter((component) => !!component);\n if (realComponents.length <= 0) {\n this.popup.nativeElement.hidden = true;\n popupOverlay.setPosition([-9999999999, -9999999999]);\n } else {\n this.popup.nativeElement.hidden = false;\n popupOverlay.setPosition(\n wmsFeatures.length > 0 ? wmsFeatures[0].coordinates : classicFeatures[0].coordinates\n );\n }\n });\n }\n })\n );\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 generateTooltip(value: {\n oClass: string;\n coordinates: Pixel;\n values: any;\n }): Promise<ComponentRef<BaseTooltipComponent> | null> {\n return new Promise((resolve) => {\n const component$ = this.tooltipFactoryService.generateTooltip(value.oClass, this.injector, this.popupContent);\n component$.subscribe((component) => {\n if (component) {\n component.instance.data.item = value.values;\n component.instance.popup = this.popup;\n resolve(component);\n }\n resolve(null);\n });\n });\n }\n\n setDefaultLayerTitle(layer: MapWidgetLayerOptions, idx: number) {\n layer.title =\n idx + 1 + ' - ' + this.translateService.instant(`@pry.widget.map.layerType.${layer.type}`, { ...layer });\n }\n\n fitMapForObjects(fit: boolean, selectedIds?: string[]) {\n if (fit) {\n let extent = createEmpty();\n const listOfMarkers = [] as any[];\n\n this.map\n .getAllLayers()\n .filter(\n (layer) => !!layer.getSource && !!layer.getSource() && !!(layer.getSource() as VectorSource).getFeatures\n )\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(listOfMarkers.filter((coord) => !!coord));\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\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.name === 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.name === (specificLayer?.attribute ?? []) ?? '') ??\n (undefined as unknown as Attribute)\n );\n }\n\n changeStyle($event: any) {\n this.optionsCopy.style = $event;\n }\n\n changeFit($event: boolean) {\n this.optionsCopy.fit = $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() {\n if (!this.optionsCopy.layers) {\n this.optionsCopy.layers = [];\n }\n this.optionsCopy.layers.push({ attribute: '' } as MapWidgetLayerOptions);\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 const options = this.optionsCopy.layers[i] as MapFeatureLayerOptions;\n options.url = options.url ?? '';\n }\n }\n\n changeTitle($event: any, layer: MapWidgetLayerOptions) {\n layer.title = $event.currentTarget?.value;\n }\n\n emitManifest() {\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) {\n this.optionsCopy?.layers?.splice(i, 1);\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.layers) {\n const tmp = this.optionsCopy.layers[idxWith];\n this.optionsCopy.layers[idxWith] = this.optionsCopy.layers[idx];\n this.optionsCopy.layers[idx] = tmp;\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) {\n layer.paramTiled = $event;\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(type: string) {\n switch (type) {\n case 'png':\n exportMapAsImage(this.map, 'map.png');\n break;\n case 'kml':\n exportMapAsKML(this.map, 'map.kml');\n break;\n case 'geoJSON':\n exportMapAsGeoJSON(this.map, 'map.geojson');\n break;\n default:\n console.error('Unknown format');\n }\n this.hideExportType();\n }\n\n override toImage(): Promise<string> {\n return getMapAsPng(this.map);\n }\n\n import(event: Event | DragEvent) {\n const reader = new MapFormatsReader(this.map);\n const input = event instanceof DragEvent ? event.dataTransfer : (event.target as HTMLInputElement);\n if (!!input && !!input.files && input.files.length > 0) {\n const filename = input.files[0].name;\n this.snackBar.open({\n type: 'info',\n message: this.translateService.instant('@pry.widget.map.importStart', { filename })\n });\n reader\n .decodeFile(input.files[0])\n .then((layer) => {\n this.additionalLayers$.next([...this.additionalLayers$.getValue(), layer]);\n this.snackBar.open({\n type: 'success',\n message: this.translateService.instant('@pry.widget.map.importOk', { filename })\n });\n })\n .catch((err) =>\n this.snackBar.open({ type: 'error', message: this.translateService.instant(err.msg, err.val) })\n );\n }\n if (!!input && !(input instanceof DataTransfer)) {\n input.value = null as unknown as string;\n }\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 hideAddress() {\n this.address.nativeElement.style.display = 'none';\n }\n\n changeOpacity(layer: MapWidgetLayerOptions, $event: string) {\n // @ts-ignore\n layer.opacity = parseInt($event, 10);\n }\n\n displayExportType($event: MouseEvent) {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['m-context-menu-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.hideExportType());\n this.overlayRef.attach(new TemplatePortal(this.exportTypeTemplate, this.viewContainerRef));\n\n const contextMenu = document.querySelector('div.m-context-menu-wrapper') as HTMLDivElement;\n if (!!contextMenu) {\n contextMenu.style.left = $event.clientX - 10 + 'px';\n contextMenu.style.top = $event.clientY - 10 - contextMenu.clientHeight + 'px';\n }\n }\n\n hideExportType() {\n this.overlayRef?.dispose();\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n }\n\n getWMSLayers() {\n return !this.map\n ? []\n : this.map\n .getAllLayers()\n .filter((layer) => layer.getSource() instanceof TileWMS)\n // @ts-ignore\n .filter((layer) => layer.rendered === true);\n }\n\n isLayerRendered(layer: any) {\n return !!this.getWMSLayers().find((wmsLayer) => wmsLayer.get('title') === layer.title);\n }\n\n getFeatureFromServer(wmsLayers: any[], pixel: Pixel) {\n proj4.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 );\n register(proj4);\n const projGeo = getProjection('EPSG:3857');\n const projLambert = getProjection('EPSG:2154');\n\n if (projLambert && projGeo) {\n for (const layer of wmsLayers) {\n const url = layer\n .getSource()\n .getFeatureInfoUrl(transform(pixel, projGeo, projLambert), this.map.getView().getResolution(), 'EPSG:2154', {\n INFO_FORMAT: 'application/json',\n FEATURE_COUNT: 10\n });\n if (url) {\n this.store.dispatch(\n DashboardActions.getWmsFeatures({\n url,\n oClass: layer.getProperties().oClass ?? '',\n coordinates: pixel\n })\n );\n }\n }\n }\n }\n\n changeWmsClass($event: any, layer: MapWMSLayerLayerOptions) {\n layer.oClass = $event;\n }\n\n toggleLegend(index: number) {\n this.legendTab = this.legendTab === index ? -1 : index;\n }\n\n toggleLegendWindow() {\n this.legendTabOpen = !this.legendTabOpen;\n this.interactionManager.layerSwitchControl?.hidePanel();\n }\n}\n","<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | 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 [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event)\" [ngModel]=\"optionsCopy.fit ?? false\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\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\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type !== 'geoserver'\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <div\n *ngIf=\"\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 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 [itemsAsOption]=\"true\"\n [items]=\"classes$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\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 >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\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 [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\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 [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\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 <div *ngIf=\"layer.clustered\">\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 </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\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 <button\n type=\"button\"\n (click)=\"deleteLayer(i)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"m-btn-group -selection-choice\" [style.transform]=\"bottomLeft$ | async\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"interactionManager.selectionInteraction.changeSelection(action)\"\n [class.-selected]=\"interactionManager.selectionInteraction.selectionType === action\"\n [pryTooltip]=\"infoTooltipAction\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipAction\"\n [pryTooltipContext]=\"{ action: action }\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [pryTooltip]=\"infoTooltipDown\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipDown_widgetMap\"\n *ngIf=\"(actions$ | async)?.includes('export')\"\n >\n <pry-icon iconSvg=\"file_download\" (click)=\"displayExportType($event)\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"uploader.click()\"\n [pryTooltip]=\"infoTooltipLoad\"\n aria-describedby=\"infoTooltipLoad_widgetMap\"\n pryTooltipPosition=\"bottom\"\n *ngIf=\"(actions$ | async)?.includes('upload')\"\n >\n <pry-icon iconSvg=\"file_upload\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.import' | i18n }}</span>\n </button>\n <input hidden type=\"file\" #uploader (change)=\"import($event)\" />\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"!imageNotProvided[index] && (geoLayer | legendUrl)\">\n <img\n [src]=\"geoLayer | legendUrl\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"imageNotProvided[index]\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #map id=\"map\"></div>\n </div>\n </div>\n\n <ng-template #infoTooltipAction let-action=\"action\">\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipAction\" aria-hidden=\"true\">\n <span class=\"m-tooltip__text\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </div>\n </ng-template>\n\n <ng-template #infoTooltipDown>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipDown_widgetMap\" aria-hidden=\"true\">\n <span class=\"m-tooltip__text\">{{ '@pry.widget.map.export' | i18n }}</span>\n </div>\n </ng-template>\n\n <ng-template #infoTooltipLoad>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipLoad_widgetMap\" aria-hidden=\"true\">\n <span class=\"m-tooltip__text\">{{ '@pry.widget.map.import' | i18n }}</span>\n </div>\n </ng-template>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div #popupContent></div>\n </div>\n <div\n #address\n class=\"m-tooltip m-tooltip--address tooltip-address\"\n [style.display]=\"'none'\"\n (click)=\"hideAddress()\"\n ></div>\n <ng-template\n #exportTypeTemplate\n class=\"m-context-menu-wrapper\"\n id=\"export_type\"\n aria-hidden=\"true\"\n aria-label=\"TODO-access\"\n aria-labelledby=\"export_card\"\n >\n <div class=\"m-context-menu\">\n <ul class=\"m-context-menu__list\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"export('png')\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.exportAsFormat' | i18n }} </span> PNG\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"export('kml')\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.exportAsFormat' | i18n }} </span> KML\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"export('geoJSON')\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.exportAsFormat' | i18n }} </span> GeoJSON\n </button>\n </li>\n </ul>\n </div>\n </ng-template>\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 fit: 'Fit data',\n addLayer: 'Add layer',\n layer: 'Layer n°{{index}}',\n layerOptions: 'Layer options',\n layerTitle: 'Layer Label',\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 ({{key}})',\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 intensityAttribute: 'Intensity property',\n classes: 'Classes displayed in layer',\n relations: 'Display links',\n importStart: 'Import file {{filename}}...',\n importOk: 'File {{filename}} imported.',\n importError: 'Cannot read format with extension {{extension}}. Authorized types are {{authorizedFormats}}',\n importNotFoundInZip: 'No file {{extension}} found in archive.',\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 import: 'Import layer',\n legend: 'Legend of layer {{layer}}',\n legendNotProvided: 'Legend not provided by server'\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 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 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 ({{key}})',\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 intensityAttribute: \"Propriété de l'intensité\",\n classes: 'Classes affichées dans cette couche',\n relations: 'Afficher les relations',\n importStart: 'Importation du fichier {{filename}}...',\n importOk: 'Fichier {{filename}} importé.',\n importError: \"L'extension {{extension}} n'est pas reconnue. Vous pouvez utiliser: {{authorizedFormats}}.\",\n importNotFoundInZip: \"Aucun fichier {{extension}} trouvé dans l'archive.\",\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 import: 'Importer une couche',\n legend: 'Légende de la couche {{layer}}',\n legendNotProvided: 'Légende non fournie par le serveur'\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 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';\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 ],\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":["Circle","getProjection","i4.WidgetMapLayerService","i8.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/search-bar/search-bar.control.ts","../../../../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/reader/kmz-zip-reader.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/random-color-style.function.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/read-as-text.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/shp-zip-reader.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/reader/map-formats-reader.class.ts","../../../../projects/provoly/dashboard/widgets/widget-map/utils/widget-map.utils.ts","../../../../projects/provoly/dashboard/widgets/widget-map/component/widget-map-layer.service.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/xml-utils.class.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 { GeocodingService } from '@provoly/dashboard';\nimport { Control } from 'ol/control';\nimport { Options } from 'ol/control/Control';\nimport BaseEvent from 'ol/events/Event';\nimport { fromLonLat } from 'ol/proj';\n\nexport class AddressSearchedEvent extends BaseEvent {\n latLon: [number, number];\n coordinates: [number, number];\n address: string;\n query: string;\n\n // @ts-ignore\n constructor({ type, coordinates, address, latLon, query }) {\n super(type);\n this.coordinates = coordinates;\n this.address = address;\n this.latLon = latLon;\n this.query = query;\n }\n}\n\nexport class SearchBarControl extends Control {\n button: HTMLButtonElement;\n input: HTMLInputElement;\n geocodingService?: GeocodingService;\n\n constructor(opt_options: Options) {\n const options = opt_options || {};\n\n const button = document.createElement('button');\n button.innerHTML = '<div></div>';\n\n const element = document.createElement('div');\n element.className = 'ol-searchbar ol-unselectable ol-control';\n element.appendChild(button);\n\n const input = document.createElement('input');\n input.type = 'text';\n input.placeholder = '1 rue de la Paix...';\n input.style.display = 'none';\n\n element.appendChild(input);\n\n super({\n element: element,\n target: options.target\n });\n\n this.button = button;\n button.addEventListener('click', this.toggleInputVisible.bind(this), false);\n this.input = input;\n input.addEventListener('keypress', this.keyPress.bind(this), false);\n }\n\n toggleInputVisible() {\n if (this.inputVisible) {\n this.input.style.display = 'none';\n } else {\n this.input.style.display = 'block';\n }\n }\n\n get inputVisible() {\n return this.input.style.display === 'block';\n }\n\n keyPress(e: KeyboardEvent) {\n if (e.key === 'Enter') {\n this.geocodingService?.fromAddress(this.input.value).subscribe((result) => {\n this.getMap()?.dispatchEvent(\n new AddressSearchedEvent({\n type: 'searched-address',\n latLon: result.latLon,\n coordinates: fromLonLat(result.latLon.reverse(), this.getMap()?.getView().getProjection()),\n query: this.input.value,\n address: result.pointAddress\n })\n );\n this.toggleInputVisible();\n });\n }\n }\n\n withGeocodingService(geocodingService: GeocodingService) {\n this.geocodingService = geocodingService;\n return this;\n }\n}\n","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';\n\nexport class SelectionInteraction extends PointerInteraction {\n private coordinates: number[] | null;\n private cursor: string;\n private features: string[];\n private previousCursor: string | undefined;\n selectionType!: 'click' | 'lasso' | 'rectangle' | 'zoom' | '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.cursor = 'pointer';\n this.features = [];\n this.previousCursor = undefined;\n widgetMapConfig.actions$.subscribe((actions) => {\n // @ts-ignore\n this.actions = actions.filter((action) => action !== 'export' && action !== 'upload');\n this.selectionType = 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 === 'move') {\n return false;\n }\n\n if (this.selectionType === '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)) {\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 === '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)) {\n this.currentRectangle.setPixels(this.coordinates ?? [0, 0], evt.pixel);\n return true;\n }\n if (this.selectionType === '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 === 'click' && this.features.length > 0) {\n this.store?.dispatch(DashboardActions.selectMany({ ids: this.features }));\n }\n\n if (this.selectionType === '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(\n (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 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 === '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 === '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 === '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 = type as 'click' | 'lasso' | 'rectangle' | 'zoom' | 'move';\n }\n}\n","import { ContextMenuActions, TooltipMode } from '@provoly/dashboard';\nimport { Feature, MapBrowserEvent, Overlay } from 'ol';\nimport LayerSwitcher from 'ol-layerswitcher';\nimport { ScaleLine } from 'ol/control';\nimport { Circle, Point } from 'ol/geom';\nimport { toLonLat } from 'ol/proj';\nimport { WidgetMapComponent } from '../component/widget-map.component';\nimport { AddressSearchedEvent, SearchBarControl } from '../search-bar/search-bar.control';\nimport { SelectionInteraction } from './selection-interaction.class';\n\nexport class InteractionManager {\n interactionPopupOverlay?: Overlay;\n private component!: WidgetMapComponent;\n searchBarControl?: SearchBarControl;\n layerSwitchControl?: LayerSwitcher;\n scaleControl?: ScaleLine;\n selectionInteraction = new SelectionInteraction();\n\n init(component: WidgetMapComponent) {\n this.component = component;\n this.addContextMenuInteraction();\n this.addDropInteraction();\n this.addOverlayOnInteraction();\n this.addSearchBarControl();\n this.addLayerSwitcher();\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 })\n );\n e.preventDefault();\n }\n },\n drop: (e: DragEvent) => {\n this.component.import(e);\n e.preventDefault();\n },\n popup: (event: MapBrowserEvent<MouseEvent>) => {\n const values = this.component.map.getFeaturesAtPixel(event.pixel, { hitTolerance: 5 }) as (\n | Feature<Circle>\n | Feature<Point>\n )[];\n const valuesToDisplay = [\n ...new Set(\n values\n .map((value) => value.get('id'))\n .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: value?.getKeys().reduce((p, c) => ({ ...p, [c]: value.get(c) }), {})\n }))\n )\n ];\n this.component.classicFeatures$.next(valuesToDisplay);\n const wmsLayers = this.component.getWMSLayers();\n if (wmsLayers) {\n this.component.getFeatureFromServer(wmsLayers, event.coordinate);\n }\n }\n };\n\n private addContextMenuInteraction() {\n this.component.map.getViewport().addEventListener('contextmenu', this.listeners.contextMenu);\n }\n\n private addDropInteraction() {\n this.component.map.getViewport().addEventListener('drop', this.listeners.drop);\n }\n\n private addOverlayOnInteraction() {\n if (!this.interactionPopupOverlay) {\n this.interactionPopupOverlay = new Overlay({\n element: this.component.popup.nativeElement,\n offset: [9, 9]\n });\n this.component.map.addOverlay(this.interactionPopupOverlay);\n }\n if (this.component.optionsCopy.tooltipMode !== TooltipMode.NONE) {\n this.component.map.un('singleclick', this.listeners.popup);\n this.component.map.on('singleclick', this.listeners.popup);\n }\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 });\n this.component.map.addControl(this.scaleControl);\n }\n }\n\n private addSearchBarControl() {\n this.searchBarControl = new SearchBarControl({}).withGeocodingService(this.component.geocodingService);\n this.component.map.addControl(this.searchBarControl);\n\n const addressOverlay = new Overlay({\n element: this.component.address.nativeElement,\n offset: [9, 9]\n });\n this.component.map.addOverlay(addressOverlay);\n\n // @ts-ignore\n this.component.map.on('searched-address', (evt: AddressSearchedEvent) => {\n this.component.address.nativeElement.innerHTML = `<div>\n <div>${this.component.translateService.instant('@pry.widget.map.address')}: ${evt.address}</div>\n <div>${this.component.translateService.instant('@pry.widget.map.addressCoords')}: ${evt.latLon}</div>\n </div>`;\n this.component.address.nativeElement.style.display = '';\n addressOverlay.setPosition(evt.coordinates);\n this.component.map.getView().setCenter(evt.coordinates);\n this.component.map.getView().setZoom(this.component.map.getView().getMaxZoom());\n });\n }\n\n private addLayerSwitcher() {\n this.layerSwitchControl = new LayerSwitcher({\n activationMode: 'click',\n reverse: false\n });\n this.component.map.addControl(this.layerSwitchControl);\n\n // @ts-ignore\n this.layerSwitchControl.on('show', () => {\n this.component.legendTabOpen = false;\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 JSZip from 'jszip';\nimport { Feature, Map } from 'ol';\nimport { KML } from 'ol/format';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\n\nexport class KmzZipReader {\n reader: JSZip;\n map!: Map;\n fileInsideZipExtension: string;\n parser: KML;\n\n constructor() {\n this.reader = new JSZip();\n this.fileInsideZipExtension = '.kml';\n this.parser = new KML();\n }\n\n withMap(map: Map) {\n this.map = map;\n return this;\n }\n\n apply(file: any, resolve: (r: any) => void, reject: (e: any) => void) {\n this.reader.loadAsync(file).then((zip) => {\n let entry: JSZip.JSZipObject | null = null;\n let imageReplacements: Promise<{ name: string; image: string }>[] = [];\n zip.forEach((path, zipEntry) => {\n if (zipEntry.name.endsWith(this.fileInsideZipExtension)) {\n entry = zipEntry;\n }\n const split = zipEntry.name.toLowerCase().split('.');\n const extention = split[split.length - 1];\n\n if (['png', 'jpeg'].includes(extention)) {\n imageReplacements.push(\n new Promise((resolveS) => {\n zipEntry.async('arraybuffer').then((buffer) => {\n resolveS({\n name: zipEntry.name,\n image: window.URL.createObjectURL(new Blob([buffer], { type: `image/${extention}` }))\n });\n });\n })\n );\n }\n });\n\n if (entry === null) {\n reject({ msg: '@pry.widget.map.importNotFoundInZip', val: { extension: this.fileInsideZipExtension } });\n } else {\n Promise.all(imageReplacements).then((replacements) => {\n entry?.async('string').then((buffer) => {\n let replacedBuffer = buffer;\n replacements.forEach(\n (replacement) => (replacedBuffer = replacedBuffer.replace(replacement.name, replacement.image))\n );\n resolve(\n new VectorLayer({\n source: new VectorSource({\n features: this.parser.readFeatures(replacedBuffer, {\n featureProjection: this.map.getView().getProjection()\n }) as Feature<any>[]\n })\n })\n );\n });\n });\n }\n });\n }\n}\n","import { Feature } from 'ol';\nimport {\n Circle,\n Geometry,\n GeometryCollection,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Point,\n Polygon\n} from 'ol/geom';\nimport { Fill, Stroke, Style } from 'ol/style';\nimport CircleStyle from 'ol/style/Circle';\nimport RenderFeature from 'ol/render/Feature';\n\nexport const randomColor = () => [\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255)\n];\n\nexport const styleFunction = (color: number[]) => (feature: Feature<Geometry> | RenderFeature) => {\n const stroke = new Stroke({\n color: `rgb(${color.join(',')})`,\n width: 1\n });\n const fill = new Fill({ color: `rgba(${color.join(',')}, 0.1)` });\n const image = new CircleStyle({ radius: 5, fill, stroke });\n switch (feature.getGeometry()?.getType() as any) {\n case Point:\n case MultiPoint:\n return new Style({ image });\n case LineString:\n case MultiLineString:\n return new Style({ stroke });\n case MultiPolygon:\n case Polygon:\n case Circle:\n return new Style({ stroke, fill });\n case GeometryCollection:\n default:\n return new Style({ stroke, fill, image });\n }\n};\n","import { Feature, Map } from 'ol';\nimport FeatureFormat from 'ol/format/Feature';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { randomColor, styleFunction } from './random-color-style.function';\n\nexport class ReadAsText {\n reader: FileReader;\n map!: Map;\n\n constructor(private parser: FeatureFormat) {\n this.reader = new FileReader();\n }\n\n withMap(map: Map) {\n this.map = map;\n return this;\n }\n\n apply(file: any, resolve: (r: any) => void, reject: (e: any) => void) {\n this.reader.readAsText(file, 'UTF-8');\n this.reader.onload = (evt) => {\n resolve(\n new VectorLayer({\n source: new VectorSource({\n features: this.parser.readFeatures(evt.target?.result, {\n featureProjection: this.map.getView().getProjection()\n }) as Feature<any>[]\n }),\n style: styleFunction(randomColor())\n })\n );\n };\n this.reader.onerror = (err) => {\n reject({ msg: 'ReadAsText: ' + err, val: {} });\n };\n }\n}\n","import FeatureFormat from 'ol/format/Feature';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { Feature, Map } from 'ol';\nimport { GeoJSON } from 'ol/format';\nimport { parseZip } from 'shpjs';\nimport { Buffer } from 'buffer';\n\nexport class ShpZipReader extends FeatureFormat {\n parser = new GeoJSON();\n map!: Map;\n\n constructor() {\n super();\n }\n\n withMap(map: Map) {\n this.map = map;\n return this;\n }\n\n apply(file: any, resolve: (r: any) => void, reject: (e: any) => void) {\n file\n .arrayBuffer()\n .then((buffer: ArrayBuffer) => {\n parseZip(Buffer.from(buffer))\n .then((geojson) => {\n resolve(\n new VectorLayer({\n source: new VectorSource({\n features: this.parser.readFeatures(geojson, {\n featureProjection: this.map.getView().getProjection()\n }) as Feature<any>[]\n })\n })\n );\n })\n .catch((err) => reject({ msg: 'ShpZipReader: ' + err, val: {} }));\n })\n .catch((err: any) => reject({ msg: 'ShpZipReader: ' + err, val: {} }));\n }\n}\n","import { Map } from 'ol';\nimport { GeoJSON, GPX, IGC, KML, TopoJSON } from 'ol/format';\nimport { Geometry } from 'ol/geom';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { KmzZipReader } from './kmz-zip-reader.class';\nimport { ReadAsText } from './read-as-text.class';\nimport { ShpZipReader } from './shp-zip-reader.class';\n\nexport class MapFormatsReader {\n formats = {\n gpx: new ReadAsText(new GPX()),\n geojson: new ReadAsText(new GeoJSON()),\n igc: new ReadAsText(new IGC()),\n kml: new ReadAsText(new KML()),\n kmz: new KmzZipReader(),\n 'kml.zip': new KmzZipReader(),\n topojson: new ReadAsText(new TopoJSON()),\n 'shp.zip': new ShpZipReader()\n } as { [extension: string]: ReadAsText | KmzZipReader | ShpZipReader };\n map: Map;\n\n constructor(map: Map) {\n this.map = map;\n }\n\n decodeFile(file: any): Promise<VectorLayer<VectorSource<Geometry>>> {\n return new Promise((resolve, reject) => {\n const split = file.name.split('.');\n let extension = split[split.length - 1] as string;\n if (extension === 'zip') {\n extension = `${split[split.length - 2]}.${split[split.length - 1]}`;\n }\n\n if (!this.formats[extension]) {\n reject({\n msg: '@pry.widget.map.importError',\n val: { extension, authorizedFormats: Object.keys(this.formats).join(', ') }\n });\n return;\n }\n\n this.formats[extension].withMap(this.map).apply(file, resolve, reject);\n });\n }\n}\n","import {\n Attribute,\n Class,\n Field,\n FieldType,\n Item,\n ItemUtils,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n Relation,\n ResultSet\n} from '@provoly/dashboard';\n// @ts-ignore\nimport tokml from 'geojson-to-kml';\nimport { Feature, Map } from 'ol';\nimport { GeoJSON } from 'ol/format';\nimport { Circle, LineString, Point } from 'ol/geom';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\n\nexport type LatLonCandidate = {\n min: number;\n max: number;\n name: string;\n type: string;\n};\n\nexport const 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'].includes(layer.type) &&\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 = geometryForLayer(layer);\n\n let candidates = [] as { attr: Attribute; field: Field | undefined }[];\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\n .map((attr) => ({ attr, field: fields.find((f) => f.id === attr.field) }))\n .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 .reduce((p, c) => [...p, ...c], [])\n .map((attr) => fields.filter((field) => field?.type === geometry).map((field) => ({ attr, field })))\n .reduce((p, c) => [...p, ...c], []);\n }\n\n if (candidates.length > 0) {\n specificLayer.attribute = candidates[0].attr.name;\n }\n }\n }\n};\n\nexport const 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.name === (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 .map((attr) => ({ attr, field: fields.find((f) => f.id === attr.field) }))\n .filter((attr) => attr.field?.type === FieldType.DECIMAL || attr.field?.type === FieldType.INTEGER)\n .map((attr) => {\n const attrValues = ItemUtils.pertinentValue(items, attr.attr);\n return {\n min: Math.min(...attrValues),\n max: Math.max(...attrValues),\n name: attr.attr.name\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].name;\n specificLayer.intensityAsc = true;\n }\n }\n }\n};\n\nexport const getFeatureFromItem = (\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: ItemUtils.readGeometry(item, 'point', locationAttribute),\n classicStyle: iconStyle ?? null,\n selectedStyle: selectedIconStyle ?? null\n });\n};\n\nexport const getCircleFeatureFromItem = (\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((ItemUtils.readGeometry(item, 'point', locationAttribute) as Point).getCoordinates(), radius),\n classicStyle: iconStyle,\n selectedStyle: selectedIconStyle,\n type: 'bubble'\n });\n};\n\nexport const getLinkFeature = (\n relation: Relation,\n featureSource: Feature<Point>,\n featureDestination: Feature<Point>\n) => {\n return new Feature({\n ...relation,\n geometry: new LineString([\n featureSource.getGeometry()?.getCoordinates() ?? [0, 0],\n featureDestination.getGeometry()?.getCoordinates() ?? [0, 0]\n ]),\n source: featureSource,\n destination: featureDestination,\n type: 'link'\n });\n};\n\nexport const 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\nexport const exportMapAsImage = (map: Map, filename: string) => {\n getMapAsPng(map).then((data) => {\n const link = document.createElement('a');\n link.download = filename;\n link.href = data;\n link.click();\n });\n};\n\nconst exportMapAsGeoJSONString = (map: Map): Promise<string> => {\n return new Promise((resolve, reject) => {\n const format = new GeoJSON();\n const features = [] as Feature<any>[];\n const promises = map\n .getAllLayers()\n .filter((layer) => !!layer.getSource && !!layer.getSource() && !!(layer.getSource() as VectorSource).getFeatures)\n .map((layer) => (layer.getSource() as VectorSource).getFeatures())\n .filter((promise) => !!promise);\n Promise.all(promises)\n .then((featuresOfLayer) => {\n featuresOfLayer.forEach((feature) => {\n features.push(...feature);\n });\n resolve(format.writeFeatures(features) as string);\n })\n .catch((err) => reject(err));\n });\n};\n\nexport const exportMapAsGeoJSON = (map: Map, filename: string) => {\n exportMapAsGeoJSONString(map).then((output) => {\n const link = document.createElement('a');\n link.download = filename;\n const blob = new Blob([output], {\n type: 'application /geo+json'\n });\n link.href = URL.createObjectURL(blob);\n link.click();\n });\n};\n\nexport const exportMapAsKML = (map: Map, filename: string) => {\n exportMapAsGeoJSONString(map).then((output) => {\n const geoJSON = JSON.parse(output);\n const kml = tokml(geoJSON);\n const link = document.createElement('a');\n link.download = filename;\n const blob = new Blob([kml], {\n type: 'application/vnd.google-earth.kml+xml'\n });\n link.href = URL.createObjectURL(blob);\n link.click();\n });\n};\n\nexport const geometryForLayer = (layer: MapWidgetLayerOptions) => {\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 default:\n return FieldType.POINT;\n }\n};\n\nexport const DEFAULT_HEATMAP_RADIUS = 25;\nexport const DEFAULT_RADIUS_INTENSITY_FACTOR = 10000;\nexport const DEFAULT_ZOOM_MIN = 3;\nexport const DEFAULT_ZOOM_START = 10;\nexport const DEFAULT_ZOOM_MAX = 18;\nexport const DEFAULT_MAP_CENTER = [2.2827217347381525, 48.864706031557716];\nexport const EMPTY_MAP_STYLE = { layers: [] };\n","import { Injectable } from '@angular/core';\nimport {\n Attribute,\n ItemUtils,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetRelationLayerOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\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, 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 {\n DEFAULT_HEATMAP_RADIUS,\n DEFAULT_RADIUS_INTENSITY_FACTOR,\n DEFAULT_ZOOM_MAX,\n DEFAULT_ZOOM_MIN,\n getCircleFeatureFromItem,\n getFeatureFromItem\n} from '../utils/widget-map.utils';\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\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 = [...this.dontNeedLocation, 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'];\n\n layersImplementation = {\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? DEFAULT_ZOOM_MAX,\n opacity: (layer.opacity ?? 100) / 100,\n source: new Vector({ attributions: [layer.attribution ?? ''] }),\n blur: (layer.radius ?? DEFAULT_HEATMAP_RADIUS) / 2,\n radius: layer.radius ?? 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 = ItemUtils.readGeometry(item, 'point', attributesForClass[classId].locationAttribute);\n return !!location;\n })\n .forEach((item) => {\n heatmap\n .getSource()\n ?.addFeature(getFeatureFromItem(item, 'heatpoint', attributesForClass[item.oClass].locationAttribute));\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 = ItemUtils.readGeometry(item, 'point', attributesForClass[item.oClass].locationAttribute);\n return !!location;\n })\n .forEach(async (item) => {\n const itemFeature = getFeatureFromItem(\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(layer, layerClassesId, resultSet, attributesForClass, 'point');\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(layer, layerClassesId, resultSet, attributesForClass, 'line');\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(layer, layerClassesId, resultSet, attributesForClass, 'multi-line');\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(layer, layerClassesId, resultSet, attributesForClass, 'polygon');\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(layer, layerClassesId, resultSet, attributesForClass, 'multi-polygon');\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 = ItemUtils.readGeometry(item, 'point', attributesForClass[item.oClass].locationAttribute);\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 = getCircleFeatureFromItem(\n item,\n attributesForClass[item.oClass].locationAttribute,\n (layer.intensityAsc ? atScale : 1 - atScale) * (layer.radiusFactor ?? 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 = new Tile({\n minZoom: layer.minZoom ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled }\n })\n });\n impl.set('oClass', layer.oClass);\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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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 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 ?? DEFAULT_ZOOM_MIN,\n maxZoom: layer.maxZoom ?? 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: ItemUtils.readGeometry(item, type, attributesForClass[item.oClass].locationAttribute)\n }))\n .filter(({ location }) => !!location)\n .forEach(async (subItem) => {\n const itemFeature = new Feature({\n ...subItem.item,\n type,\n geometry: subItem.location,\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","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-map-css',\n template: '',\n styleUrls: ['./_o-widget-map.scss', './_o-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 { geometryForLayer } 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 = 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) => {\n const attrField = fields.find((f) => f.id === attr.field);\n return !!attrField && attrField.type === type;\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n\n const resArr = [] as Attribute[];\n potentialFields.forEach(function (attr) {\n if (resArr.findIndex((x) => x.name == attr.name) <= -1) {\n resArr.push(attr);\n }\n });\n return resArr;\n })\n );\n }\n}\n","export class XMLUtils {\n static find(childs: NodeListOf<ChildNode>, name: string) {\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 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","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { MapGeoServerLayerOptions, MapWMSLayerLayerOptions } from '@provoly/dashboard';\nimport { catchError, map, Observable, of, throwError } from 'rxjs';\nimport { XMLUtils } from './xml-utils.class';\n\n@Pipe({\n name: 'legendUrl'\n})\nexport class WidgetMapLegendUrlPipe implements PipeTransform {\n constructor(private httpClient: HttpClient) {}\n\n parser = new DOMParser();\n\n transform(geoLayer: MapGeoServerLayerOptions | MapWMSLayerLayerOptions): Observable<string> {\n if (geoLayer && geoLayer.url) {\n const layerUrlWithQmark = geoLayer.url.indexOf('?') === -1 ? geoLayer.url + '?' : geoLayer.url;\n const layerUrlWithService =\n layerUrlWithQmark.indexOf('&SERVICE=') === -1 ? layerUrlWithQmark + '&SERVICE=WMS' : layerUrlWithQmark;\n const layerUrlWithVersion =\n layerUrlWithService.indexOf('&VERSION=') === -1 ? layerUrlWithService + '&VERSION=1.3.0' : layerUrlWithService;\n\n return this.httpClient\n .get(`${layerUrlWithVersion}&REQUEST=GetCapabilities`, {\n headers: new HttpHeaders({\n Accept: 'text/html, application/xhtml+xml, */*',\n 'Content-Type': 'application/x-www-form-urlencoded'\n }),\n responseType: 'text'\n })\n .pipe(\n map((response) => {\n const doc = this.parser.parseFromString(response, 'application/xml');\n const errorNode = doc.querySelector('parsererror');\n if (errorNode) {\n return '';\n } else {\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', geoLayer.paramLayer);\n const split = geoLayer.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 if (matchingLayer) {\n const matchingStyle = XMLUtils.find(matchingLayer.childNodes, 'Style');\n if (matchingStyle) {\n const legendUrl = XMLUtils.find(matchingStyle.childNodes, 'LegendURL');\n if (legendUrl) {\n const resource = XMLUtils.find(legendUrl.childNodes, 'OnlineResource');\n if (resource) {\n // @ts-ignore\n return resource.getAttribute('xlink:href');\n }\n }\n }\n }\n }\n }\n }\n }\n return '';\n }),\n catchError((err) => {\n console.error(err);\n return throwError(err);\n })\n );\n }\n return of('');\n }\n}\n","import { Overlay as cdkOverlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Component,\n ComponentRef,\n ElementRef,\n Injector,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n BaseTooltipComponent,\n BaseWidgetMapLayerOptions,\n Class,\n ClassSelectors,\n ConfigActions,\n ConfigSelectors,\n DashboardActions,\n DashboardSelectors,\n Dataset,\n DataSourceSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n GeocodingService,\n GeoMetadata,\n ItemUtils,\n MapFeatureLayerOptions,\n MapGeoServerLayerOptions,\n MapRasterTileLayerOptions,\n MapVectorTileLayerOptions,\n MapWidgetBubbleLayerOptions,\n MapWidgetHeatMapLayerOptions,\n MapWidgetLayerOptions,\n MapWidgetMarkerLayerOptions,\n MapWidgetOptions,\n MapWMSLayerLayerOptions,\n MapWMTSLayerLayerOptions,\n PryI18nService,\n PrySnackbarService,\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, Overlay, View } from 'ol';\nimport { applyBackground, applyStyle } from 'ol-mapbox-style';\nimport { boundingExtent, createEmpty } from 'ol/extent';\nimport { Circle, Geometry, Point } from 'ol/geom';\nimport { Tile } from 'ol/layer';\nimport BaseLayer from 'ol/layer/Base';\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport { Pixel } from 'ol/pixel';\nimport { fromLonLat, get as getProjection, transform } from 'ol/proj';\n\nimport { register } from 'ol/proj/proj4';\nimport { TileWMS } from 'ol/source';\nimport VectorSource from 'ol/source/Vector';\nimport { Style } from 'ol/style';\nimport proj4 from 'proj4';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n delay,\n distinctUntilChanged,\n filter,\n from,\n map,\n mergeMap,\n Observable,\n of,\n startWith\n} from 'rxjs';\nimport { InteractionManager } from '../interaction/interaction-manager.class';\nimport { MapFormatsReader } from '../reader/map-formats-reader.class';\nimport { AddressSearchedEvent } from '../search-bar/search-bar.control';\nimport {\n DEFAULT_MAP_CENTER,\n DEFAULT_ZOOM_MAX,\n DEFAULT_ZOOM_MIN,\n DEFAULT_ZOOM_START,\n exportMapAsGeoJSON,\n exportMapAsImage,\n exportMapAsKML,\n getLinkFeature,\n getMapAsPng,\n populateIntensityAttribute,\n populateLocationAttribute\n} from '../utils/widget-map.utils';\nimport { WidgetMapLayerService } from './widget-map-layer.service';\n\n@Component({\n selector: 'pry-widget-map',\n templateUrl: './widget-map.component.html'\n})\nexport class WidgetMapComponent extends DataWidgetComponent implements AfterViewInit {\n mapUrl$: Observable<string>;\n @ViewChild('map') mapRef!: ElementRef;\n @ViewChild('popup') popup!: ElementRef;\n @ViewChild('popupContent', { read: ViewContainerRef }) popupContent!: ViewContainerRef;\n @ViewChild('exportTypeTemplate', { read: TemplateRef }) exportTypeTemplate!: TemplateRef<any>;\n @ViewChild('address') address!: ElementRef;\n options$: Observable<MapWidgetOptions>;\n layerTypes = this.widgetMapLayerService.implementationList.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 private overlayRef?: OverlayRef;\n styles$: Observable<{ identifier: string; label: string }[]>;\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n i = 0;\n itemStyles$!: Observable<{ [id: string]: { classic: Style; bordered: Style } }>;\n height$: Observable<number>;\n actions$ = widgetMapConfig.actions$;\n private wmsFeatures$: Observable<any[]>;\n classicFeatures$: BehaviorSubject<any> = new BehaviorSubject([]);\n geoServerLayerDescriptions$: Observable<MapGeoServerLayerOptions[]>;\n legendTabOpen = false;\n legendTab = 0;\n legendLayers$!: Observable<(MapGeoServerLayerOptions | MapWMSLayerLayerOptions)[]>;\n legendTop$: Observable<number>;\n legendHeight$: Observable<number>;\n imageNotProvided: boolean[] = [];\n basicActions$: Observable<('click' | 'lasso' | 'rectangle' | 'zoom' | 'move' | 'export' | 'upload')[]>;\n zoomAndCenter$ = new BehaviorSubject<{ zoom?: { start: number; min: number; max: number }; center?: number[] }>({});\n fitOption$!: Observable<boolean>;\n mapStyle$!: Observable<string>;\n interactionManager: InteractionManager = new InteractionManager();\n mapStyleLayer$!: Observable<VectorTileLayer[]>;\n\n constructor(\n store: Store<any>,\n private snackBar: PrySnackbarService,\n public translateService: PryI18nService,\n private tooltipFactoryService: TooltipFactoryService,\n public geocodingService: GeocodingService,\n private overlay: cdkOverlay,\n private viewContainerRef: ViewContainerRef,\n private symbolService: SymbolService,\n private injector: Injector,\n private widgetMapLayerService: WidgetMapLayerService,\n el: ElementRef\n ) {\n super(store, el);\n\n this.basicActions$ = this.actions$.pipe(\n map((actions) => actions.filter((action) => action !== 'export' && action !== 'upload'))\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.fields$ = this.store.select(FieldSelectors.fields);\n this.styles$ = this.store.select(ConfigSelectors.mapStyles).pipe(\n map((styles) =>\n styles.concat({\n identifier: 'none',\n label: this.translateService.instant('@pry.widget.map.noStyle')\n })\n )\n );\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.geoServerLayerDescriptions$ = combineLatest([\n this.usedDatasources$.pipe(startWith([])),\n this.store.select(ConfigSelectors.geoServerUrl).pipe(debounceTime(10), startWith(undefined))\n ]).pipe(\n map(([dataSources, geoServerUrl]) => {\n if (!geoServerUrl) return [];\n return dataSources\n .filter((ds) => ds.metadata?.find((m) => m.metadataDef.name === GeoMetadata.NAMESPACE) !== undefined)\n .map((ds) => {\n ds = ds as unknown as Dataset;\n const metadatas: { [key: string]: string } = {};\n ds.metadata?.forEach((m) => (metadatas[m.metadataDef.name] = m.value));\n return {\n type: 'geoserver',\n url: geoServerUrl + '/' + metadatas[GeoMetadata.NAMESPACE] + '/wms?SERVICE=WMS&VERSION=1.3.0',\n paramLayer: metadatas[GeoMetadata.KEY],\n paramTiled: true,\n opacity: parseInt(metadatas[GeoMetadata.OPACITY] ?? 100, 10),\n title: metadatas[GeoMetadata.NAMESPACE] + ':' + metadatas[GeoMetadata.KEY],\n oClass: ds.oClass,\n key: metadatas[GeoMetadata.NAMESPACE] + ':' + metadatas[GeoMetadata.KEY]\n };\n })\n .map((layer) => layer as MapGeoServerLayerOptions);\n })\n );\n\n this.options$ = combineLatest([\n this.manifest$,\n this.resultSet$,\n this.classes$,\n this.fields$,\n this.styles$,\n this.geoServerLayerDescriptions$\n ]).pipe(\n map(([manifest, resultSet, classes, fields, mapStyles, geoLayers]) => {\n // auto determine layers parameters to provide a working view\n const autoOptions = JSON.parse(JSON.stringify({ relations: true, ...manifest.options })) as MapWidgetOptions;\n if (!autoOptions.tooltipMode) {\n autoOptions.tooltipMode = TooltipMode.CLICK;\n }\n autoOptions.layers?.forEach((layer, i) => {\n populateLocationAttribute(layer, resultSet, classes, fields);\n populateIntensityAttribute(layer, resultSet, classes, fields);\n if (autoOptions.attributions) {\n layer.attribution = layer.attribution ?? '';\n }\n if (!layer.title) {\n this.setDefaultLayerTitle(layer, i);\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 const geoLayer = geoLayers.find((layer) => layer.key === layer.key) ?? null;\n return layer.type === 'geoserver'\n ? geoLayer\n ? { ...geoLayer, ...layer }\n : (null as unknown as MapWidgetLayerOptions)\n : { ...layer };\n }),\n ...geoLayers.filter((layer) => !actualLayerKeys.includes(layer.key))\n ].filter((layer) => !!layer);\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 return autoOptions;\n })\n );\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = JSON.parse(JSON.stringify(options));\n })\n );\n this.subscriptions.add(\n this.store\n .select(DashboardSelectors.address)\n .pipe(filter((addr) => !!addr && !!addr.pointAddress))\n .subscribe((addr) => {\n this.map?.dispatchEvent(\n new AddressSearchedEvent({\n type: 'searched-address',\n latLon: addr.latLon,\n coordinates: fromLonLat([...addr.latLon].reverse(), this.map.getView().getProjection()),\n query: addr.latLon,\n address: addr.pointAddress\n })\n );\n })\n );\n\n this.mapUrl$ = this.store.select(ConfigSelectors.mapUrl);\n this.wmsFeatures$ = this.store.select(DashboardSelectors.wmsFeatures);\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<{ [id: string]: { classic: Style; bordered: Style } }>((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 { [id: string]: { classic: Style; bordered: Style } };\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 : 0)),\n delay(10)\n );\n\n this.legendTop$ = this.displayHeader$.pipe(map((display) => 225 - (display ? 0 : WIDGET_HEADER_HEIGHT)));\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 - top - 56; // 56px is the tooltip height + margin\n }),\n delay(10)\n );\n }\n\n initInteractionManager() {\n return this.interactionManager.init(this);\n }\n\n ngAfterViewInit(): void {\n this.map = new Map({ target: this.mapRef.nativeElement });\n this.interactionManager = this.initInteractionManager();\n this.mapStyle$ = this.options$.pipe(\n map((options) => options.style),\n distinctUntilChanged()\n );\n\n this.mapStyleLayer$ = combineLatest([this.mapStyle$, this.mapUrl$]).pipe(\n map(([style, url]) => {\n if (!style || style === 'none') {\n return [];\n }\n const layer = new VectorTileLayer({ declutter: true });\n applyStyle(layer, `${url}/styles/${style}/style.json`).catch((err) =>\n console.warn('Style application problem', err)\n );\n applyBackground(layer, `${url}/styles/${style}/style.json`).catch((err) =>\n console.warn('Background application problem', err)\n );\n return [layer];\n })\n );\n\n this.options$\n .pipe(\n map((options) => ({\n center: fromLonLat(options.center ?? DEFAULT_MAP_CENTER),\n maxZoom: options.zoom?.max ?? DEFAULT_ZOOM_MAX,\n minZoom: options.zoom?.min ?? DEFAULT_ZOOM_MIN,\n zoom: options.zoom?.start ?? DEFAULT_ZOOM_START\n })),\n distinctUntilChanged()\n )\n .subscribe((view) => this.map.setView(new View(view)));\n\n this.fitOption$ = this.options$.pipe(\n map((options) => !!options.fit),\n distinctUntilChanged()\n );\n\n this.fitOption$.subscribe((fit) => this.fitMapForObjects(fit));\n\n this.layers$ = combineLatest([\n this.resultSet$,\n this.options$,\n this.classes$,\n this.additionalLayers$,\n this.itemStyles$,\n this.store.select(ConfigSelectors.geoServerUrl)\n ]).pipe(\n filter(\n ([resultSet, options, classes, additionalLayers, itemStyles, geoServerUrl]) =>\n !!resultSet && !!options && !!classes\n ),\n map(([resultSet, options, classes, additionalLayers, itemStyles, geoServerUrl]) => {\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) => {\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 if (layer.type === 'relation') {\n hasRelationLayer = resultLayer as unknown as VectorLayer<VectorSource>;\n }\n resultLayer.set('title', layer.title);\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(getLinkFeature(relation, source, dest));\n }\n });\n }\n layers.push(...additionalLayers);\n layers.forEach((layer, index, arr) => layer.set('zIndex', arr.length - index));\n\n return layers;\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.subscriptions.add(\n combineLatest([this.mapStyleLayer$, this.layers$, this.fitOption$, this.selectedIds$]).subscribe(\n ([mapStyleLayer, layers, fit, selectedIds]) => {\n const toApplyLayers = [...layers, ...mapStyleLayer];\n this.map.setLayers(toApplyLayers);\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 (['bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].includes(type)) {\n feature.setStyle(\n feature.get(selectedIds.includes(feature.get('id')) ? 'selectedStyle' : 'classicStyle')\n );\n }\n });\n }\n });\n\n setTimeout(() => {\n this.fitMapForObjects(fit, selectedIds);\n this.map.updateSize();\n }, 200);\n }\n )\n );\n this.subscriptions.add(\n combineLatest([this.wmsFeatures$, this.classicFeatures$]).subscribe(([wmsFeatures, classicFeatures]) => {\n if (this.map) {\n const popupOverlay = new Overlay({\n element: this.popup.nativeElement,\n offset: [9, 9]\n });\n this.map.addOverlay(popupOverlay);\n this.popupContent.clear();\n const componentPromises = [] as Promise<ComponentRef<BaseTooltipComponent> | null>[];\n wmsFeatures.forEach((value) => {\n componentPromises.push(this.generateTooltip(value));\n });\n classicFeatures.forEach((value: any) => {\n componentPromises.push(this.generateTooltip(value));\n });\n\n Promise.all(componentPromises).then((promises) => {\n const realComponents = promises.filter((component) => !!component);\n if (realComponents.length <= 0) {\n this.popup.nativeElement.hidden = true;\n popupOverlay.setPosition([-9999999999, -9999999999]);\n } else {\n this.popup.nativeElement.hidden = false;\n popupOverlay.setPosition(\n wmsFeatures.length > 0 ? wmsFeatures[0].coordinates : classicFeatures[0].coordinates\n );\n }\n });\n }\n })\n );\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 generateTooltip(value: {\n oClass: string;\n coordinates: Pixel;\n values: any;\n }): Promise<ComponentRef<BaseTooltipComponent> | null> {\n return new Promise((resolve) => {\n const component$ = this.tooltipFactoryService.generateTooltip(value.oClass, this.injector, this.popupContent);\n component$.subscribe((component) => {\n if (component) {\n component.instance.data.item = value.values;\n component.instance.popup = this.popup;\n resolve(component);\n }\n resolve(null);\n });\n });\n }\n\n setDefaultLayerTitle(layer: MapWidgetLayerOptions, idx: number) {\n layer.title =\n idx + 1 + ' - ' + this.translateService.instant(`@pry.widget.map.layerType.${layer.type}`, { ...layer });\n }\n\n fitMapForObjects(fit: boolean, selectedIds?: string[]) {\n if (fit) {\n let extent = createEmpty();\n const listOfMarkers = [] as any[];\n\n this.map\n .getAllLayers()\n .filter(\n (layer) => !!layer.getSource && !!layer.getSource() && !!(layer.getSource() as VectorSource).getFeatures\n )\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(listOfMarkers.filter((coord) => !!coord));\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\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.name === 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.name === (specificLayer?.attribute ?? []) ?? '') ??\n (undefined as unknown as Attribute)\n );\n }\n\n changeStyle($event: any) {\n this.optionsCopy.style = $event;\n }\n\n changeFit($event: boolean) {\n this.optionsCopy.fit = $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() {\n if (!this.optionsCopy.layers) {\n this.optionsCopy.layers = [];\n }\n this.optionsCopy.layers.push({ attribute: '' } as MapWidgetLayerOptions);\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 const options = this.optionsCopy.layers[i] as MapFeatureLayerOptions;\n options.url = options.url ?? '';\n }\n }\n\n changeTitle($event: any, layer: MapWidgetLayerOptions) {\n layer.title = $event.currentTarget?.value;\n }\n\n emitManifest() {\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) {\n this.optionsCopy?.layers?.splice(i, 1);\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.layers) {\n const tmp = this.optionsCopy.layers[idxWith];\n this.optionsCopy.layers[idxWith] = this.optionsCopy.layers[idx];\n this.optionsCopy.layers[idx] = tmp;\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) {\n layer.paramTiled = $event;\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(type: string) {\n switch (type) {\n case 'png':\n exportMapAsImage(this.map, 'map.png');\n break;\n case 'kml':\n exportMapAsKML(this.map, 'map.kml');\n break;\n case 'geoJSON':\n exportMapAsGeoJSON(this.map, 'map.geojson');\n break;\n default:\n console.error('Unknown format');\n }\n this.hideExportType();\n }\n\n override toImage(): Promise<string> {\n return getMapAsPng(this.map);\n }\n\n import(event: Event | DragEvent) {\n const reader = new MapFormatsReader(this.map);\n const input = event instanceof DragEvent ? event.dataTransfer : (event.target as HTMLInputElement);\n if (!!input && !!input.files && input.files.length > 0) {\n const filename = input.files[0].name;\n this.snackBar.open({\n type: 'info',\n message: this.translateService.instant('@pry.widget.map.importStart', { filename })\n });\n reader\n .decodeFile(input.files[0])\n .then((layer) => {\n this.additionalLayers$.next([...this.additionalLayers$.getValue(), layer]);\n this.snackBar.open({\n type: 'success',\n message: this.translateService.instant('@pry.widget.map.importOk', { filename })\n });\n })\n .catch((err) =>\n this.snackBar.open({ type: 'error', message: this.translateService.instant(err.msg, err.val) })\n );\n }\n if (!!input && !(input instanceof DataTransfer)) {\n input.value = null as unknown as string;\n }\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 hideAddress() {\n this.address.nativeElement.style.display = 'none';\n }\n\n changeOpacity(layer: MapWidgetLayerOptions, $event: string) {\n // @ts-ignore\n layer.opacity = parseInt($event, 10);\n }\n\n displayExportType($event: MouseEvent) {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['m-context-menu-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.hideExportType());\n this.overlayRef.attach(new TemplatePortal(this.exportTypeTemplate, this.viewContainerRef));\n\n const contextMenu = document.querySelector('div.m-context-menu-wrapper') as HTMLDivElement;\n if (!!contextMenu) {\n contextMenu.style.left = $event.clientX - 10 + 'px';\n contextMenu.style.top = $event.clientY - 10 - contextMenu.clientHeight + 'px';\n }\n }\n\n hideExportType() {\n this.overlayRef?.dispose();\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n }\n\n getWMSLayers() {\n return !this.map\n ? []\n : this.map\n .getAllLayers()\n .filter((layer) => layer.getSource() instanceof TileWMS)\n // @ts-ignore\n .filter((layer) => layer.rendered === true);\n }\n\n isLayerRendered(layer: any) {\n return !!this.getWMSLayers().find((wmsLayer) => wmsLayer.get('title') === layer.title);\n }\n\n getFeatureFromServer(wmsLayers: any[], pixel: Pixel) {\n proj4.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 );\n register(proj4);\n const projGeo = getProjection('EPSG:3857');\n const projLambert = getProjection('EPSG:2154');\n\n if (projLambert && projGeo) {\n for (const layer of wmsLayers) {\n const url = layer\n .getSource()\n .getFeatureInfoUrl(transform(pixel, projGeo, projLambert), this.map.getView().getResolution(), 'EPSG:2154', {\n INFO_FORMAT: 'application/json',\n FEATURE_COUNT: 10\n });\n if (url) {\n this.store.dispatch(\n DashboardActions.getWmsFeatures({\n url,\n oClass: layer.getProperties().oClass ?? '',\n coordinates: pixel\n })\n );\n }\n }\n }\n }\n\n changeWmsClass($event: any, layer: MapWMSLayerLayerOptions) {\n layer.oClass = $event;\n }\n\n toggleLegend(index: number) {\n this.legendTab = this.legendTab === index ? -1 : index;\n }\n\n toggleLegendWindow() {\n this.legendTabOpen = !this.legendTabOpen;\n this.interactionManager.layerSwitchControl?.hidePanel();\n }\n}\n","<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | 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 [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event)\" [ngModel]=\"optionsCopy.fit ?? false\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\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\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type !== 'geoserver'\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <div\n *ngIf=\"\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 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 [itemsAsOption]=\"true\"\n [items]=\"classes$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\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 >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\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 [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\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 [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\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 <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\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 <div *ngIf=\"layer.clustered\">\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 </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\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 <button\n type=\"button\"\n (click)=\"deleteLayer(i)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"m-btn-group -selection-choice\" [style.transform]=\"bottomLeft$ | async\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"interactionManager.selectionInteraction.changeSelection(action)\"\n [class.-selected]=\"interactionManager.selectionInteraction.selectionType === action\"\n [pryTooltip]=\"infoTooltipAction\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipAction\"\n [pryTooltipContext]=\"{ action: action }\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [pryTooltip]=\"infoTooltipDown\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipDown_widgetMap\"\n *ngIf=\"(actions$ | async)?.includes('export')\"\n >\n <pry-icon iconSvg=\"file_download\" (click)=\"displayExportType($event)\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"uploader.click()\"\n [pryTooltip]=\"infoTooltipLoad\"\n aria-describedby=\"infoTooltipLoad_widgetMap\"\n pryTooltipPosition=\"bottom\"\n *ngIf=\"(actions$ | async)?.includes('upload')\"\n >\n <pry-icon iconSvg=\"file_upload\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.import' | i18n }}</span>\n </button>\n <input hidden type=\"file\" #uploader (change)=\"import($event)\" />\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl | async as url\">\n <img\n [src]=\"url\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl | async)\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #map id=\"map\"></div>\n </div>\n </div>\n\n <ng-template #infoTooltipAction let-action=\"action\">\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipAction\" aria-hidden=\"true\">\n <span class=\"m-tooltip__text\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </div>\n </ng-template>\n\n <ng-template #infoTooltipDown>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipDown_widgetMap\" aria-hidden=\"true\">\n <span class=\"m-tooltip__text\">{{ '@pry.widget.map.export' | i18n }}</span>\n </div>\n </ng-template>\n\n <ng-template #infoTooltipLoad>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipLoad_widgetMap\" aria-hidden=\"true\">\n <span class=\"m-tooltip__text\">{{ '@pry.widget.map.import' | i18n }}</span>\n </div>\n </ng-template>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div #popupContent></div>\n </div>\n <div\n #address\n class=\"m-tooltip m-tooltip--address tooltip-address\"\n [style.display]=\"'none'\"\n (click)=\"hideAddress()\"\n ></div>\n <ng-template\n #exportTypeTemplate\n class=\"m-context-menu-wrapper\"\n id=\"export_type\"\n aria-hidden=\"true\"\n aria-label=\"TODO-access\"\n aria-labelledby=\"export_card\"\n >\n <div class=\"m-context-menu\">\n <ul class=\"m-context-menu__list\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"export('png')\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.exportAsFormat' | i18n }} </span> PNG\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"export('kml')\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.exportAsFormat' | i18n }} </span> KML\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"export('geoJSON')\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.exportAsFormat' | i18n }} </span> GeoJSON\n </button>\n </li>\n </ul>\n </div>\n </ng-template>\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 fit: 'Fit data',\n addLayer: 'Add layer',\n layer: 'Layer n°{{index}}',\n layerOptions: 'Layer options',\n layerTitle: 'Layer Label',\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 ({{key}})',\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 intensityAttribute: 'Intensity property',\n classes: 'Classes displayed in layer',\n relations: 'Display links',\n importStart: 'Import file {{filename}}...',\n importOk: 'File {{filename}} imported.',\n importError: 'Cannot read format with extension {{extension}}. Authorized types are {{authorizedFormats}}',\n importNotFoundInZip: 'No file {{extension}} found in archive.',\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 import: 'Import layer',\n legend: 'Legend of layer {{layer}}',\n legendNotProvided: 'Legend not provided by server'\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 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 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 ({{key}})',\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 intensityAttribute: \"Propriété de l'intensité\",\n classes: 'Classes affichées dans cette couche',\n relations: 'Afficher les relations',\n importStart: 'Importation du fichier {{filename}}...',\n importOk: 'Fichier {{filename}} importé.',\n importError: \"L'extension {{extension}} n'est pas reconnue. Vous pouvez utiliser: {{authorizedFormats}}.\",\n importNotFoundInZip: \"Aucun fichier {{extension}} trouvé dans l'archive.\",\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 import: 'Importer une couche',\n legend: 'Légende de la couche {{layer}}',\n legendNotProvided: 'Légende non fournie par le serveur'\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 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';\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 ],\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":["Circle","i1","getProjection","i4.WidgetMapLayerService","i8.PryWidgetMapCssComponent","i9.GeometryFieldsForPipe","i10.WidgetMapLegendUrlPipe"],"mappings":"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"}
|