qwc2 2025.5.7 → 2025.5.15
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/actions/windows.js +1 -1
- package/components/IdentifyViewer.js +5 -5
- package/components/MapButton.js +7 -0
- package/components/PluginsContainer.js +7 -2
- package/components/SearchBox.js +10 -13
- package/components/StandardApp.js +2 -7
- package/components/map/layers/MVTLayer.js +1 -1
- package/components/map3d/Draw3D.js +2 -2
- package/components/map3d/HideObjects3D.js +5 -3
- package/components/map3d/Map3D.js +5 -5
- package/components/map3d/Map3DLight.js +1 -1
- package/components/map3d/MapControls3D.js +10 -8
- package/components/map3d/Measure3D.js +2 -2
- package/components/map3d/View3DSwitcher.js +1 -1
- package/components/map3d/drawtool/CreateTool3D.js +1 -1
- package/components/map3d/drawtool/EditTool3D.js +5 -4
- package/components/map3d/style/Draw3D.css +1 -13
- package/components/map3d/style/Map3D.css +1 -2
- package/components/map3d/style/Map3DLight.css +11 -3
- package/components/map3d/style/View3DSwitcher.css +8 -20
- package/components/map3d/utils/Tiles3DStyle.js +1 -2
- package/components/style/App.css +6 -1
- package/{plugins/style/Buttons.css → components/style/MapButton.css} +9 -27
- package/components/style/PluginsContainer.css +23 -2
- package/components/style/SearchBox.css +1 -2
- package/components/timeline/style/InfiniteTimeline.css +1 -0
- package/components/widgets/NumberInput.js +1 -1
- package/components/widgets/style/ButtonBar.css +0 -5
- package/components/widgets/style/MenuButton.css +1 -0
- package/components/widgets/style/NumberInput.css +0 -1
- package/components/widgets/style/ToggleSwitch.css +1 -0
- package/package.json +2 -2
- package/plugins/BackgroundSwitcher.js +3 -3
- package/plugins/HomeButton.js +2 -2
- package/plugins/Identify.js +1 -1
- package/plugins/LocateButton.js +2 -2
- package/plugins/MapExport.js +1 -1
- package/plugins/MapFilter.js +2 -2
- package/plugins/Measure.js +1 -1
- package/plugins/Panoramax.js +2 -8
- package/plugins/Redlining.js +2 -2
- package/plugins/Share.js +1 -1
- package/plugins/TaskButton.js +1 -1
- package/plugins/TopBar.js +2 -2
- package/plugins/View3D.js +4 -3
- package/plugins/ZoomButtons.js +2 -2
- package/plugins/style/BackgroundSwitcher.css +25 -21
- package/plugins/style/Bookmark.css +1 -1
- package/plugins/style/Editing.css +5 -1
- package/plugins/style/MapFilter.css +5 -1
- package/plugins/style/Measure.css +2 -6
- package/plugins/style/Panoramax.css +12 -4
- package/plugins/style/Redlining.css +12 -56
- package/plugins/style/Reports.css +4 -0
- package/plugins/style/Routing.css +1 -0
- package/plugins/style/ValueTool.css +4 -0
- package/reducers/windows.js +1 -1
- package/scripts/wmts_config_generator.py +3 -0
- package/static/translations/bg-BG.json +3 -0
- package/static/translations/ca-ES.json +3 -0
- package/static/translations/cs-CZ.json +3 -0
- package/static/translations/de-CH.json +4 -1
- package/static/translations/de-DE.json +4 -1
- package/static/translations/en-US.json +4 -1
- package/static/translations/es-ES.json +3 -0
- package/static/translations/fi-FI.json +3 -0
- package/static/translations/fr-FR.json +4 -1
- package/static/translations/hu-HU.json +3 -0
- package/static/translations/it-IT.json +4 -1
- package/static/translations/ja-JP.json +3 -0
- package/static/translations/nl-NL.json +3 -0
- package/static/translations/no-NO.json +3 -0
- package/static/translations/pl-PL.json +3 -0
- package/static/translations/pt-BR.json +3 -0
- package/static/translations/pt-PT.json +3 -0
- package/static/translations/ro-RO.json +3 -0
- package/static/translations/ru-RU.json +3 -0
- package/static/translations/sv-SE.json +3 -0
- package/static/translations/tr-TR.json +3 -0
- package/static/translations/tsconfig.json +3 -0
- package/utils/LayerUtils.js +1 -1
- package/utils/SearchProviders.js +2 -2
- package/utils/ServiceLayerUtils.js +1 -1
package/actions/windows.js
CHANGED
|
@@ -4,7 +4,7 @@ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof
|
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the BSD-style license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/import ReducerIndex from"../reducers/index";import windowsReducer from"../reducers/windows";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import MapUtils from"../utils/MapUtils";import{UrlParams}from"../utils/PermaLinkUtils";ReducerIndex.register("windows",windowsReducer);export var SHOW_IFRAME_DIALOG="SHOW_IFRAME_DIALOG";export var SHOW_NOTIFICATION="SHOW_NOTIFICATION";export var CLOSE_WINDOW="CLOSE_WINDOW";export var CLOSE_ALL_WINDOWS="CLOSE_ALL_WINDOWS";export var REGISTER_WINDOW="REGISTER_WINDOW";export var UNREGISTER_WINDOW="UNREGISTER_WINDOW";export var RAISE_WINDOW="RAISE_WINDOW";export var SET_MENU_MARGIN="SET_MENU_MARGIN";export var SET_SPLIT_SCREEN="SET_SPLIT_SCREEN";export var SET_TOPBAR_HEIGHT="SET_TOPBAR_HEIGHT";export var SET_BOTTOMBAR_HEIGHT="SET_BOTTOMBAR_HEIGHT";export var NotificationType={INFO:1,WARN:2,ERROR:3};export function showIframeDialog(name,url,options){return{type:SHOW_IFRAME_DIALOG,name:name,url:url,options:options}}export function showNotification(name,text){var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:NotificationType.INFO;var sticky=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;return{type:SHOW_NOTIFICATION,name:name,text:text,notificationType:type,sticky:sticky}}export function closeWindow(name){return{type:CLOSE_WINDOW,name:name}}export function closeAllWindows(){return{type:CLOSE_ALL_WINDOWS}}export function registerWindow(id){return{type:REGISTER_WINDOW,id:id}}export function unregisterWindow(id){return{type:UNREGISTER_WINDOW,id:id}}export function raiseWindow(id){return{type:RAISE_WINDOW,id:id}}export function setSplitScreen(windowId,side,size,splitTopAndBottomBar){return{type:SET_SPLIT_SCREEN,windowId:windowId,side:side,size:size,splitTopAndBottomBar:splitTopAndBottomBar}}export function setMenuMargin(right,left){return{type:SET_MENU_MARGIN,right:right,left:left}}export function setTopbarHeight(height){
|
|
7
|
+
*/import ReducerIndex from"../reducers/index";import windowsReducer from"../reducers/windows";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import MapUtils from"../utils/MapUtils";import{UrlParams}from"../utils/PermaLinkUtils";ReducerIndex.register("windows",windowsReducer);export var SHOW_IFRAME_DIALOG="SHOW_IFRAME_DIALOG";export var SHOW_NOTIFICATION="SHOW_NOTIFICATION";export var CLOSE_WINDOW="CLOSE_WINDOW";export var CLOSE_ALL_WINDOWS="CLOSE_ALL_WINDOWS";export var REGISTER_WINDOW="REGISTER_WINDOW";export var UNREGISTER_WINDOW="UNREGISTER_WINDOW";export var RAISE_WINDOW="RAISE_WINDOW";export var SET_MENU_MARGIN="SET_MENU_MARGIN";export var SET_SPLIT_SCREEN="SET_SPLIT_SCREEN";export var SET_TOPBAR_HEIGHT="SET_TOPBAR_HEIGHT";export var SET_BOTTOMBAR_HEIGHT="SET_BOTTOMBAR_HEIGHT";export var NotificationType={INFO:1,WARN:2,ERROR:3};export function showIframeDialog(name,url,options){return{type:SHOW_IFRAME_DIALOG,name:name,url:url,options:options}}export function showNotification(name,text){var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:NotificationType.INFO;var sticky=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;return{type:SHOW_NOTIFICATION,name:name,text:text,notificationType:type,sticky:sticky}}export function closeWindow(name){return{type:CLOSE_WINDOW,name:name}}export function closeAllWindows(){return{type:CLOSE_ALL_WINDOWS}}export function registerWindow(id){return{type:REGISTER_WINDOW,id:id}}export function unregisterWindow(id){return{type:UNREGISTER_WINDOW,id:id}}export function raiseWindow(id){return{type:RAISE_WINDOW,id:id}}export function setSplitScreen(windowId,side,size,splitTopAndBottomBar){return{type:SET_SPLIT_SCREEN,windowId:windowId,side:side,size:size,splitTopAndBottomBar:splitTopAndBottomBar}}export function setMenuMargin(right,left){return{type:SET_MENU_MARGIN,right:right,left:left}}export function setTopbarHeight(height){return{type:SET_TOPBAR_HEIGHT,height:height}}export function setBottombarHeight(height){return{type:SET_BOTTOMBAR_HEIGHT,height:height}}export function openExternalUrl(url){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"";var iframeDialogOpts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return function(dispatch,getState){// Replace all entries in URL
|
|
8
8
|
Object.entries(UrlParams.getParams()).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];url=url.replace("$"+key+"$",value)});// Additional entries
|
|
9
9
|
var state=getState();var bounds=state.map.bbox.bounds;var proj=state.map.projection;var roundfactor=CoordinatesUtils.getUnits(proj)==="degrees"?100000:1;var xmin=Math.round(bounds[0]*roundfactor)/roundfactor;var ymin=Math.round(bounds[1]*roundfactor)/roundfactor;var xmax=Math.round(bounds[2]*roundfactor)/roundfactor;var ymax=Math.round(bounds[3]*roundfactor)/roundfactor;var x=Math.round(0.5*(bounds[0]+bounds[2])*roundfactor)/roundfactor;var y=Math.round(0.5*(bounds[1]+bounds[3])*roundfactor)/roundfactor;if(state.map.scales){var scale=Math.round(MapUtils.computeForZoom(state.map.scales,state.map.zoom));url=url.replace("$s$",scale);url=url.replace("$c$",x+","+y)}url=url.replace("$e$",[xmin,ymin,xmax,ymax].join(","));// Add separate x, y
|
|
10
10
|
url=url.replace("$x$",x);url=url.replace("$y$",y);url=url.replace("$crs$",proj);url=url.replace("$user$",ConfigUtils.getConfigProp("username")||"");if(target.startsWith(":iframedialog")){var targetParts=target.split(":");var options=targetParts.slice(2).reduce(function(res,cur){var parts=cur.split("=");if(parts.length===2){var value=parseFloat(parts[1]);res[parts[0]]=isNaN(value)?parts[1]:value}return res},{});dispatch(showIframeDialog(targetParts[2],url,_objectSpread(_objectSpread({},iframeDialogOpts),options)))}else{window.open(url,target||"_blank")}}}
|
|
@@ -4,13 +4,13 @@ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof
|
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the BSD-style license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/import React from"react";import{connect}from"react-redux";import axios from"axios";import clone from"clone";import FileSaver from"file-saver";import htmlReactParser,{domToReact}from"html-react-parser";import JSZip from"jszip";import isEmpty from"lodash.isempty";import omit from"lodash.omit";import PropTypes from"prop-types";import{setActiveLayerInfo}from"../actions/layerinfo";import{LayerRole,addLayerFeatures,removeLayer}from"../actions/layers";import{zoomToExtent}from"../actions/map";import{openExternalUrl}from"../actions/windows";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import LayerUtils from"../utils/LayerUtils";import LocaleUtils from"../utils/LocaleUtils";import MiscUtils from"../utils/MiscUtils";import VectorLayerUtils from"../utils/VectorLayerUtils";import Icon from"./Icon";import Spinner from"./widgets/Spinner";import"./style/IdentifyViewer.css";var BuiltinExporters=[{id:"json",title:"json",allowClipboard:true,"export":function _export(json,callback){var data=JSON.stringify(json,null," ");callback({data:data,type:"text/plain;charset=utf-8",filename:"results.json"})}},{id:"geojson",title:"geojson",allowClipboard:true,"export":function _export(json,callback){var featureCollection={type:"FeatureCollection",features:Object.values(json).flat().map(function(entry){var feature=omit(entry,["featurereport","displayfield","layername","layertitle","layerinfo","attribnames","clickPos","displayname","bbox"]);if(feature.geometry){feature.crs={type:"name",properties:{name:CoordinatesUtils.toOgcUrnCrs(entry.crs)}}}return feature})};var data=JSON.stringify(featureCollection,null," ");callback({data:data,type:"application/geo+json;charset=utf-8",filename:"results.json"})}},{id:"csv",title:"CSV",allowClipboard:true,"export":function _export(json,callback){var data="";Object.entries(json).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),layerName=_ref2[0],features=_ref2[1];features.forEach(function(feature){data+=layerName+": "+feature.displayname+"\n";Object.entries(feature.properties||{}).forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),attrib=_ref4[0],value=_ref4[1];if(attrib!=="htmlContent"&&attrib!=="htmlContentInline"){data+="\t\""+attrib+"\"\t\""+String(value).replace("\"","\"\"")+"\"\n"}});if(feature.geometry){data+="\t\"geometry\"\t\""+VectorLayerUtils.geoJSONGeomToWkt(feature.geometry)+"\"\n"}});data+="\n"});callback({data:data,type:"text/plain;charset=utf-8",filename:"results.csv"})}},{id:"csvzip",title:"CSV+ZIP",allowClipboard:false,"export":function _export(json,callback){var first=true;var data=[];var filenames=[];Object.entries(json).forEach(function(_ref5){var _ref6=_slicedToArray(_ref5,2),layerName=_ref6[0],features=_ref6[1];var csv="";if(first){Object.entries(features[0].properties||{}).forEach(function(_ref7){var _ref8=_slicedToArray(_ref7,1),attrib=_ref8[0];if(attrib!=="htmlContent"&&attrib!=="htmlContentInline"){csv+=attrib+";"}});if(features[0].geometry){csv+="geometry"}else if(csv!==""){csv=csv.slice(0,-1);// Remove trailling semi column ;
|
|
7
|
+
*/import React from"react";import{connect}from"react-redux";import axios from"axios";import clone from"clone";import FileSaver from"file-saver";import htmlReactParser,{domToReact}from"html-react-parser";import JSZip from"jszip";import isEmpty from"lodash.isempty";import omit from"lodash.omit";import PropTypes from"prop-types";import{setActiveLayerInfo}from"../actions/layerinfo";import{LayerRole,addLayerFeatures,removeLayer,changeLayerProperty}from"../actions/layers";import{zoomToExtent}from"../actions/map";import{openExternalUrl}from"../actions/windows";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import LayerUtils from"../utils/LayerUtils";import LocaleUtils from"../utils/LocaleUtils";import MiscUtils from"../utils/MiscUtils";import VectorLayerUtils from"../utils/VectorLayerUtils";import Icon from"./Icon";import Spinner from"./widgets/Spinner";import"./style/IdentifyViewer.css";var BuiltinExporters=[{id:"json",title:"json",allowClipboard:true,"export":function _export(json,callback){var data=JSON.stringify(json,null," ");callback({data:data,type:"text/plain;charset=utf-8",filename:"results.json"})}},{id:"geojson",title:"geojson",allowClipboard:true,"export":function _export(json,callback){var featureCollection={type:"FeatureCollection",features:Object.values(json).flat().map(function(entry){var feature=omit(entry,["featurereport","displayfield","layername","layertitle","layerinfo","attribnames","clickPos","displayname","bbox"]);if(feature.geometry){feature.crs={type:"name",properties:{name:CoordinatesUtils.toOgcUrnCrs(entry.crs)}}}return feature})};var data=JSON.stringify(featureCollection,null," ");callback({data:data,type:"application/geo+json;charset=utf-8",filename:"results.json"})}},{id:"csv",title:"CSV",allowClipboard:true,"export":function _export(json,callback){var data="";Object.entries(json).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),layerName=_ref2[0],features=_ref2[1];features.forEach(function(feature){data+=layerName+": "+feature.displayname+"\n";Object.entries(feature.properties||{}).forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),attrib=_ref4[0],value=_ref4[1];if(attrib!=="htmlContent"&&attrib!=="htmlContentInline"){data+="\t\""+attrib+"\"\t\""+String(value).replace("\"","\"\"")+"\"\n"}});if(feature.geometry){data+="\t\"geometry\"\t\""+VectorLayerUtils.geoJSONGeomToWkt(feature.geometry)+"\"\n"}});data+="\n"});callback({data:data,type:"text/plain;charset=utf-8",filename:"results.csv"})}},{id:"csvzip",title:"CSV+ZIP",allowClipboard:false,"export":function _export(json,callback){var first=true;var data=[];var filenames=[];Object.entries(json).forEach(function(_ref5){var _ref6=_slicedToArray(_ref5,2),layerName=_ref6[0],features=_ref6[1];var csv="";if(first){Object.entries(features[0].properties||{}).forEach(function(_ref7){var _ref8=_slicedToArray(_ref7,1),attrib=_ref8[0];if(attrib!=="htmlContent"&&attrib!=="htmlContentInline"){csv+=attrib+";"}});if(features[0].geometry){csv+="geometry"}else if(csv!==""){csv=csv.slice(0,-1);// Remove trailling semi column ;
|
|
8
8
|
}first=false;csv+="\n"}features.forEach(function(feature){Object.entries(feature.properties||{}).forEach(function(_ref9){var _ref10=_slicedToArray(_ref9,2),attrib=_ref10[0],value=_ref10[1];if(attrib!=="htmlContent"&&attrib!=="htmlContentInline"){csv+=String(value).replace("\"","\"\"")+";"}});if(feature.geometry){csv+=VectorLayerUtils.geoJSONGeomToWkt(feature.geometry)}else if(csv!==""){csv=csv.slice(0,-1);// Remove trailling semi column ;
|
|
9
9
|
}csv+="\n"});first=true;data.push(csv);filenames.push(layerName)});if(data.length>1){var zip=new JSZip;for(var i=0;i<data.length;i++){var blob=new Blob([data[i]],{type:"text/csv;charset=utf-8"});zip.file(filenames[i]+".csv",blob)}zip.generateAsync({type:"arraybuffer"}).then(function(result){callback({data:result,type:"application/zip",filename:"results.zip"})})}else{callback({data:data[0],type:"text/csv;charset=utf-8",filename:filenames[0]+".csv"})}}}];var IdentifyViewer=/*#__PURE__*/function(_React$Component){function IdentifyViewer(props){var _this;_classCallCheck(this,IdentifyViewer);_this=_callSuper(this,IdentifyViewer,[props]);_defineProperty(_this,"state",{expanded:{},expandedResults:{},resultTree:{},currentResult:null,currentLayer:null,exportFormat:"geojson",selectedAggregatedReport:null,generatingReport:false,selectedLayer:""});_defineProperty(_this,"updateResultTree",function(){var layers=Object.keys(_this.props.identifyResults);var currentResult=null;var currentLayer=null;if(layers.length===1&&_this.props.identifyResults[layers[0]].length===1){currentResult=_this.props.identifyResults[layers[0]][0];currentLayer=layers[0]}_this.setState({resultTree:clone(_this.props.identifyResults),currentResult:currentResult,currentLayer:currentLayer})});_defineProperty(_this,"setHighlightedResults",function(results,resultTree){if(!results&&_this.props.highlightAllResults){var selectedLayer=_this.state.selectedLayer||"";results=Object.keys(resultTree).reduce(function(res,layer){var layerData=resultTree[selectedLayer||layer];return res.concat(layerData.map(function(result){return _objectSpread(_objectSpread({},result),{},{id:"".concat(selectedLayer||layer,".").concat(result.id)})}))},[])}results=(results||[]).filter(function(result){return result.type.toLowerCase()==="feature"}).map(function(feature){var newFeature=_objectSpread(_objectSpread({},feature),{},{properties:{}});// Ensure selection style is used
|
|
10
|
-
delete newFeature.styleName;delete newFeature.styleOptions;return newFeature});if(!isEmpty(results)){var layer={id:"__identifyviewerhighlight",role:LayerRole.SELECTION};_this.props.addLayerFeatures(layer,results,true)}else{_this.props.removeLayer("__identifyviewerhighlight")}});_defineProperty(_this,"getExpandedClass",function(path,deflt){var expanded=_this.state.expanded[path]!==undefined?_this.state.expanded[path]:deflt;return expanded?"identify-layer-expandable identify-layer-expanded":"identify-layer-expandable"});_defineProperty(_this,"toggleExpanded",function(path,deflt){var newstate=_this.state.expanded[path]!==undefined?!_this.state.expanded[path]:!deflt;var diff={};diff[path]=newstate;if(_this.state.currentLayer===path&&!newstate){_this.setState(function(state){return _objectSpread(_objectSpread({},state),{},{expanded:_objectSpread(_objectSpread({},state.expanded),diff),currentResult:null,currentLayer:null})})}else{_this.setState(function(state){return _objectSpread(_objectSpread({},state),{},{expanded:_objectSpread(_objectSpread({},state.expanded),diff)})})}});_defineProperty(_this,"setCurrentResult",function(layer,result){if(_this.state.currentResult===result){_this.setState({currentResult:null,currentLayer:null})}else{_this.setState({currentResult:result,currentLayer:layer});_this.scrollIntoView=true}});_defineProperty(_this,"removeResultLayer",function(layer){_this.setState(function(state){var newResultTree=_objectSpread({},state.resultTree);delete newResultTree[layer];_this.setState({resultTree:newResultTree,currentResult:state.currentLayer===layer?null:state.currentResult,currentLayer:state.currentLayer===layer?null:state.currentLayer})})});_defineProperty(_this,"removeResult",function(layer,result){_this.setState(function(state){var newResultTree=_objectSpread({},state.resultTree);newResultTree[layer]=state.resultTree[layer].filter(function(item){return item!==result});if(isEmpty(newResultTree[layer])){delete newResultTree[layer]}var selectedLayer=isEmpty(newResultTree[layer])?"":state.selectedLayer;return{resultTree:newResultTree,currentResult:state.currentResult===result?null:state.currentResult,selectedLayer:selectedLayer}})});_defineProperty(_this,"exportResults",function(){var clipboard=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var filteredResults={};Object.keys(_this.state.selectedLayer!==""?_defineProperty({},_this.state.selectedLayer,_this.state.resultTree[_this.state.selectedLayer]):_this.state.resultTree).map(function(key){if(!isEmpty(_this.state.resultTree[key])){filteredResults[key]=_this.state.resultTree[key]}});_this["export"](filteredResults,clipboard)});_defineProperty(_this,"exportResultLayer",function(layer){_this["export"](_defineProperty({},layer,_this.state.resultTree[layer]))});_defineProperty(_this,"exportResult",function(layer,result){_this["export"](_defineProperty({},layer,[result]))});_defineProperty(_this,"export",function(json){var clipboard=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var exporter=_this.getExporters().find(function(entry){return entry.id===_this.state.exportFormat});if(exporter){if(!_this.props.exportGeometry){json=Object.entries(json).reduce(function(res,_ref12){var _ref13=_slicedToArray(_ref12,2),layerId=_ref13[0],features=_ref13[1];return _objectSpread(_objectSpread({},res),{},_defineProperty({},layerId,features.map(function(feature){return omit(feature,["geometry"])})))},{})}exporter["export"](json,function(result){if(clipboard&&exporter.allowClipboard){navigator.clipboard.writeText(result.data)}else{FileSaver.saveAs(new Blob([result.data],{type:result.type}),result.filename)}})}});_defineProperty(_this,"renderLayer",function(layer){var results=_this.state.resultTree[layer];if(results.length===0){return null}return/*#__PURE__*/React.createElement("div",{className:_this.getExpandedClass(layer,true),key:layer},/*#__PURE__*/React.createElement("div",{className:"identify-result-entry",onMouseEnter:function onMouseEnter(){return _this.setHighlightedResults(results,_this.state.resultTree)},onMouseLeave:function onMouseLeave(){return _this.setHighlightedResults(_this.state.currentResult===null?null:[_this.state.currentResult],_this.state.resultTree)}},/*#__PURE__*/React.createElement("span",{className:"clickable",onClick:function onClick(){return _this.toggleExpanded(layer,true)}},/*#__PURE__*/React.createElement("b",null,results[0].layertitle)),/*#__PURE__*/React.createElement(Icon,{className:"identify-remove-result",icon:"minus-sign",onClick:function onClick(){return _this.removeResultLayer(layer)}}),_this.props.enableExport===true||!isEmpty(_this.props.enableExport)?/*#__PURE__*/React.createElement(Icon,{className:"identify-export-result",icon:"export",onClick:function onClick(){return _this.exportResultLayer(layer)}}):null),/*#__PURE__*/React.createElement("div",{className:"identify-layer-entries"},results.map(function(result){return _this.renderResult(layer,result)})))});_defineProperty(_this,"renderResult",function(layer,result){var ref=_this.state.currentResult===result&&_this.scrollIntoView?function(el){_this.currentResultElRef=el}:null;return/*#__PURE__*/React.createElement("div",{className:"identify-result-entry",key:result.id,onMouseEnter:function onMouseEnter(){return _this.setHighlightedResults([result],_this.state.resultTree)},onMouseLeave:function onMouseLeave(){return _this.setHighlightedResults(_this.state.currentResult===null?null:[_this.state.currentResult],_this.state.resultTree)}},/*#__PURE__*/React.createElement("span",{className:_this.state.currentResult===result?"active clickable":"clickable",onClick:function onClick(){return _this.setCurrentResult(layer,result)},ref:ref},result.displayname),/*#__PURE__*/React.createElement(Icon,{className:"identify-remove-result",icon:"minus-sign",onClick:function onClick(){return _this.removeResult(layer,result)}}),_this.props.enableExport===true||!isEmpty(_this.props.enableExport)?/*#__PURE__*/React.createElement(Icon,{className:"identify-export-result",icon:"export",onClick:function onClick(){return _this.exportResult(layer,result)}}):null)});_defineProperty(_this,"renderResultAttributes",function(layer,result,resultClass,reportFeatures){if(!result){return null}var resultbox=null;var extraattribs=null;var featureReportTemplate=null;if(ConfigUtils.getConfigProp("documentServiceUrl")){featureReportTemplate=result.featurereport||_this.findFeatureReportTemplate(layer)}if(featureReportTemplate){reportFeatures[layer]=[].concat(_toConsumableArray(reportFeatures[layer]||[]),[result])}var inlineExtaAttribs=false;if(result.type==="text"){resultbox=/*#__PURE__*/React.createElement("pre",{className:"identify-result-box"},result.text)}else if(result.type==="html"){resultbox=/*#__PURE__*/React.createElement("iframe",{className:"identify-result-box",onLoad:function onLoad(ev){return _this.setIframeContent(ev.target,result.text)},ref:function ref(el){return _this.pollIframe(el,result.text)}})}else if(result.properties.htmlContent){if(result.properties.htmlContentInline){resultbox=/*#__PURE__*/React.createElement("div",{className:"identify-result-box"},_this.parsedContent(result.properties.htmlContent))}else{resultbox=/*#__PURE__*/React.createElement("iframe",{className:"identify-result-box",onLoad:function onLoad(ev){return _this.setIframeContent(ev.target,result.properties.htmlContent)},ref:function ref(el){return _this.pollIframe(el,result.properties.htmlContent)}})}}else{var _rows;inlineExtaAttribs=true;var properties=Object.keys(result.properties)||[];var rows=[];if(properties.length===1&&result.properties.maptip){rows=properties.map(function(attrib){return/*#__PURE__*/React.createElement("tr",{key:attrib},/*#__PURE__*/React.createElement("td",{className:"identify-attr-value"},_this.attribValue(result.properties[attrib],attrib,layer,result)))})}else{rows=properties.map(function(attrib){if(_this.props.theme.skipEmptyFeatureAttributes&&(result.properties[attrib]===""||result.properties[attrib]===null||result.properties[attrib]==="NULL")){return null}return/*#__PURE__*/React.createElement("tr",{key:attrib},/*#__PURE__*/React.createElement("td",{className:"identify-attr-title "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("i",null,attrib)),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value "+_this.props.longAttributesDisplay},_this.attribValue(result.properties[attrib],attrib,layer,result)))})}(_rows=rows).push.apply(_rows,_toConsumableArray(_this.computeExtraAttributes(layer,result)));if(featureReportTemplate){rows=rows.concat(/*#__PURE__*/React.createElement("tr",{key:"__featurereport"},/*#__PURE__*/React.createElement("td",{className:"identify-attr-title "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("i",null,LocaleUtils.tr("identify.featureReport"))),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("a",{href:_this.getFeatureReportUrl(featureReportTemplate,result)},LocaleUtils.tr("identify.link")))))}if(isEmpty(rows)){rows=/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",{className:"identify-attr-value"},/*#__PURE__*/React.createElement("i",null,LocaleUtils.tr("identify.noattributes"))))}resultbox=/*#__PURE__*/React.createElement("div",{className:"identify-result-box"},/*#__PURE__*/React.createElement("table",{className:"attribute-list"},/*#__PURE__*/React.createElement("tbody",null,rows)))}if(!inlineExtaAttribs&&(_this.props.attributeCalculator||featureReportTemplate)){extraattribs=/*#__PURE__*/React.createElement("div",{className:"identify-result-box"},/*#__PURE__*/React.createElement("table",{className:"attribute-list"},/*#__PURE__*/React.createElement("tbody",null,_this.computeExtraAttributes(layer,result),featureReportTemplate?/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",{className:"identify-attr-title "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("i",null,LocaleUtils.tr("identify.featureReport"))),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("a",{href:_this.getFeatureReportUrl(featureReportTemplate,result),rel:"noreferrer",target:"_blank"},LocaleUtils.tr("identify.link")))):null)))}var zoomToFeatureButton=null;if(result.bbox&&result.crs){zoomToFeatureButton=/*#__PURE__*/React.createElement(Icon,{icon:"zoom",onClick:function onClick(){return _this.props.zoomToExtent(result.bbox,result.crs)}})}var key=result+":"+result.id;var expanded=_this.state.expandedResults[key];return/*#__PURE__*/React.createElement("div",{className:resultClass,key:"results-attributes"},/*#__PURE__*/React.createElement("div",{className:"identify-result-title"},_this.props.collapsible?/*#__PURE__*/React.createElement(Icon,{icon:expanded?"tree_minus":"tree_plus",onClick:function onClick(){return _this.setState(function(state){return{expandedResults:_objectSpread(_objectSpread({},state.expandedResults),{},_defineProperty({},key,!expanded))}})}}):/*#__PURE__*/React.createElement(Icon,{icon:"minus",onClick:function onClick(){return _this.removeResult(layer,result)}}),/*#__PURE__*/React.createElement("span",null,(_this.props.showLayerTitles?result.layertitle+": ":"")+result.displayname),zoomToFeatureButton,/*#__PURE__*/React.createElement(Icon,{icon:"info-sign",onClick:function onClick(){return _this.showLayerInfo(result)}})),_this.props.collapsible&&!expanded?null:/*#__PURE__*/React.createElement("div",{className:"identify-result-container"},resultbox,extraattribs))});_defineProperty(_this,"computeExtraAttributes",function(layer,result){var _window$qwc;var rows=[];Object.values(((_window$qwc=window.qwc2)===null||_window$qwc===void 0?void 0:_window$qwc.__attributeCalculators)||{}).forEach(function(calc,idx){var row=calc(layer,result);if(row.length===2){rows.push(/*#__PURE__*/React.createElement("tr",{key:"custom-attr-"+idx},/*#__PURE__*/React.createElement("td",{className:"identify-attr-title"},/*#__PURE__*/React.createElement("i",null,row[0])),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value"},row[1])))}else if(row.length===1){rows.push(/*#__PURE__*/React.createElement("tr",{key:"custom-attr-"+idx},/*#__PURE__*/React.createElement("td",{colSpan:"2"},row[0])))}});if(_this.props.attributeCalculator){rows.push.apply(rows,_toConsumableArray(_this.props.attributeCalculator(layer,result)))}return rows});_defineProperty(_this,"getExporters",function(){var _window$qwc2;return[].concat(BuiltinExporters,_toConsumableArray(_this.props.customExporters),_toConsumableArray(Object.values(((_window$qwc2=window.qwc2)===null||_window$qwc2===void 0?void 0:_window$qwc2.__identifyExportes)||[])))});_defineProperty(_this,"setIframeContent",function(iframe,html){if(iframe.getAttribute("identify-content-set")){return}iframe.setAttribute("identify-content-set",true);iframe.contentWindow.document.open();iframe.contentWindow.document.write(html);iframe.contentWindow.document.close()});_defineProperty(_this,"pollIframe",function(iframe,html){if(iframe&&!iframe.getAttribute("identify-content-set")){var interval=setInterval(function(){if(iframe.getAttribute("identify-content-set")){return clearInterval(interval)}if(iframe.contentWindow&&iframe.contentWindow.document){iframe.setAttribute("identify-content-set",true);iframe.contentWindow.document.open();iframe.contentWindow.document.write(html);iframe.contentWindow.document.close();clearInterval(interval)}return true},500)}});_defineProperty(_this,"collectFeatureReportTemplates",function(entry){var reports={};if(entry.sublayers){var _iterator=_createForOfIteratorHelper(entry.sublayers),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var sublayer=_step.value;reports=_objectSpread(_objectSpread({},reports),_this.collectFeatureReportTemplates(sublayer))}}catch(err){_iterator.e(err)}finally{_iterator.f()}}else if(entry.featureReport){reports[entry.name]=entry.featureReport}return reports});_defineProperty(_this,"findFeatureReportTemplate",function(layer){var reports={};_this.props.layers.filter(function(l){return l.role===LayerRole.THEME}).forEach(function(themeLayer){reports=_objectSpread(_objectSpread({},reports),_this.collectFeatureReportTemplates(themeLayer))});return reports[layer]||null});_defineProperty(_this,"getFeatureReportUrl",function(template,result){var serviceUrl=ConfigUtils.getConfigProp("documentServiceUrl").replace(/\/$/,"");var params={feature:result.id,x:result.clickPos[0],y:result.clickPos[1],crs:_this.props.mapcrs};return serviceUrl+"/"+template+"?"+Object.keys(params).map(function(key){return encodeURIComponent(key)+"="+encodeURIComponent(params[key])}).join("&")});_defineProperty(_this,"downloadAggregatedReport",function(layername,results){var serviceUrl=ConfigUtils.getConfigProp("documentServiceUrl").replace(/\/$/,"");var params={feature:results.map(function(result){return result.id}).join(","),x:results[0].clickPos[0],y:results[0].clickPos[1],crs:_this.props.mapcrs};_this.setState({generatingReport:true});var template=results[0].featurereport||_this.findFeatureReportTemplate(layername);var url=serviceUrl+"/"+template+"?"+Object.keys(params).map(function(key){return encodeURIComponent(key)+"="+encodeURIComponent(params[key])}).join("&");axios.get(url,{responseType:"arraybuffer"}).then(function(response){FileSaver.saveAs(new Blob([response.data],{type:"application/pdf"}),layername+".pdf");_this.setState({generatingReport:false})})["catch"](function(){/* eslint-disable-next-line */alert(LocaleUtils.tr("identify.reportfail"));_this.setState({generatingReport:false})})});_defineProperty(_this,"showLayerInfo",function(result){var match=null;// Search matching layer by technical name
|
|
10
|
+
delete newFeature.styleName;delete newFeature.styleOptions;return newFeature});if(!isEmpty(results)){var layer={id:"__identifyviewerhighlight",role:LayerRole.SELECTION};_this.props.addLayerFeatures(layer,results,true)}else{_this.props.removeLayer("__identifyviewerhighlight")}});_defineProperty(_this,"getExpandedClass",function(path,deflt){var expanded=_this.state.expanded[path]!==undefined?_this.state.expanded[path]:deflt;return expanded?"identify-layer-expandable identify-layer-expanded":"identify-layer-expandable"});_defineProperty(_this,"toggleExpanded",function(path,deflt){var newstate=_this.state.expanded[path]!==undefined?!_this.state.expanded[path]:!deflt;var diff={};diff[path]=newstate;if(_this.state.currentLayer===path&&!newstate){_this.setState(function(state){return _objectSpread(_objectSpread({},state),{},{expanded:_objectSpread(_objectSpread({},state.expanded),diff),currentResult:null,currentLayer:null})})}else{_this.setState(function(state){return _objectSpread(_objectSpread({},state),{},{expanded:_objectSpread(_objectSpread({},state.expanded),diff)})})}});_defineProperty(_this,"setCurrentResult",function(layer,result){if(_this.state.currentResult===result){_this.setState({currentResult:null,currentLayer:null})}else{_this.setState({currentResult:result,currentLayer:layer});_this.scrollIntoView=true}});_defineProperty(_this,"removeResultLayer",function(layer){_this.setState(function(state){var newResultTree=_objectSpread({},state.resultTree);delete newResultTree[layer];_this.setState({resultTree:newResultTree,currentResult:state.currentLayer===layer?null:state.currentResult,currentLayer:state.currentLayer===layer?null:state.currentLayer})})});_defineProperty(_this,"removeResult",function(layer,result){_this.setState(function(state){var newResultTree=_objectSpread({},state.resultTree);newResultTree[layer]=state.resultTree[layer].filter(function(item){return item!==result});if(isEmpty(newResultTree[layer])){delete newResultTree[layer]}var selectedLayer=isEmpty(newResultTree[layer])?"":state.selectedLayer;return{resultTree:newResultTree,currentResult:state.currentResult===result?null:state.currentResult,selectedLayer:selectedLayer}})});_defineProperty(_this,"exportResults",function(){var clipboard=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var filteredResults={};Object.keys(_this.state.selectedLayer!==""?_defineProperty({},_this.state.selectedLayer,_this.state.resultTree[_this.state.selectedLayer]):_this.state.resultTree).map(function(key){if(!isEmpty(_this.state.resultTree[key])){filteredResults[key]=_this.state.resultTree[key]}});_this["export"](filteredResults,clipboard)});_defineProperty(_this,"exportResultLayer",function(layer){_this["export"](_defineProperty({},layer,_this.state.resultTree[layer]))});_defineProperty(_this,"exportResult",function(layer,result){_this["export"](_defineProperty({},layer,[result]))});_defineProperty(_this,"export",function(json){var clipboard=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var exporter=_this.getExporters().find(function(entry){return entry.id===_this.state.exportFormat});if(exporter){if(!_this.props.exportGeometry){json=Object.entries(json).reduce(function(res,_ref12){var _ref13=_slicedToArray(_ref12,2),layerId=_ref13[0],features=_ref13[1];return _objectSpread(_objectSpread({},res),{},_defineProperty({},layerId,features.map(function(feature){return omit(feature,["geometry"])})))},{})}exporter["export"](json,function(result){if(clipboard&&exporter.allowClipboard){navigator.clipboard.writeText(result.data)}else{FileSaver.saveAs(new Blob([result.data],{type:result.type}),result.filename)}})}});_defineProperty(_this,"renderLayer",function(layer){var results=_this.state.resultTree[layer];if(results.length===0){return null}return/*#__PURE__*/React.createElement("div",{className:_this.getExpandedClass(layer,true),key:layer},/*#__PURE__*/React.createElement("div",{className:"identify-result-entry",onMouseEnter:function onMouseEnter(){return _this.setHighlightedResults(results,_this.state.resultTree)},onMouseLeave:function onMouseLeave(){return _this.setHighlightedResults(_this.state.currentResult===null?null:[_this.state.currentResult],_this.state.resultTree)}},/*#__PURE__*/React.createElement("span",{className:"clickable",onClick:function onClick(){return _this.toggleExpanded(layer,true)}},/*#__PURE__*/React.createElement("b",null,results[0].layertitle)),/*#__PURE__*/React.createElement(Icon,{className:"identify-remove-result",icon:"minus-sign",onClick:function onClick(){return _this.removeResultLayer(layer)}}),_this.props.enableExport===true||!isEmpty(_this.props.enableExport)?/*#__PURE__*/React.createElement(Icon,{className:"identify-export-result",icon:"export",onClick:function onClick(){return _this.exportResultLayer(layer)}}):null),/*#__PURE__*/React.createElement("div",{className:"identify-layer-entries"},results.map(function(result){return _this.renderResult(layer,result)})))});_defineProperty(_this,"renderResult",function(layer,result){var ref=_this.state.currentResult===result&&_this.scrollIntoView?function(el){_this.currentResultElRef=el}:null;return/*#__PURE__*/React.createElement("div",{className:"identify-result-entry",key:result.id,onMouseEnter:function onMouseEnter(){return _this.setHighlightedResults([result],_this.state.resultTree)},onMouseLeave:function onMouseLeave(){return _this.setHighlightedResults(_this.state.currentResult===null?null:[_this.state.currentResult],_this.state.resultTree)}},/*#__PURE__*/React.createElement("span",{className:_this.state.currentResult===result?"active clickable":"clickable",onClick:function onClick(){return _this.setCurrentResult(layer,result)},ref:ref},result.displayname),/*#__PURE__*/React.createElement(Icon,{className:"identify-remove-result",icon:"minus-sign",onClick:function onClick(){return _this.removeResult(layer,result)}}),_this.props.enableExport===true||!isEmpty(_this.props.enableExport)?/*#__PURE__*/React.createElement(Icon,{className:"identify-export-result",icon:"export",onClick:function onClick(){return _this.exportResult(layer,result)}}):null)});_defineProperty(_this,"renderResultAttributes",function(layer,result,resultClass,reportFeatures){if(!result){return null}var resultbox=null;var extraattribs=null;var featureReportTemplate=null;if(ConfigUtils.getConfigProp("documentServiceUrl")){featureReportTemplate=result.featurereport||_this.findFeatureReportTemplate(layer)}if(featureReportTemplate){reportFeatures[layer]=[].concat(_toConsumableArray(reportFeatures[layer]||[]),[result])}var inlineExtaAttribs=false;if(result.type==="text"){resultbox=/*#__PURE__*/React.createElement("pre",{className:"identify-result-box"},result.text)}else if(result.type==="html"){resultbox=/*#__PURE__*/React.createElement("iframe",{className:"identify-result-box",onLoad:function onLoad(ev){return _this.setIframeContent(ev.target,result.text)},ref:function ref(el){return _this.pollIframe(el,result.text)}})}else if(result.properties.htmlContent){if(result.properties.htmlContentInline){resultbox=/*#__PURE__*/React.createElement("div",{className:"identify-result-box"},_this.parsedContent(result.properties.htmlContent))}else{resultbox=/*#__PURE__*/React.createElement("iframe",{className:"identify-result-box",onLoad:function onLoad(ev){return _this.setIframeContent(ev.target,result.properties.htmlContent)},ref:function ref(el){return _this.pollIframe(el,result.properties.htmlContent)}})}}else{var _rows;inlineExtaAttribs=true;var properties=Object.keys(result.properties)||[];var rows=[];if(properties.length===1&&result.properties.maptip){rows=properties.map(function(attrib){return/*#__PURE__*/React.createElement("tr",{key:attrib},/*#__PURE__*/React.createElement("td",{className:"identify-attr-value"},_this.attribValue(result.properties[attrib],attrib,layer,result)))})}else{rows=properties.map(function(attrib){if(_this.props.theme.skipEmptyFeatureAttributes&&(result.properties[attrib]===""||result.properties[attrib]===null||result.properties[attrib]==="NULL")){return null}return/*#__PURE__*/React.createElement("tr",{key:attrib},/*#__PURE__*/React.createElement("td",{className:"identify-attr-title "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("i",null,attrib)),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value "+_this.props.longAttributesDisplay},_this.attribValue(result.properties[attrib],attrib,layer,result)))})}(_rows=rows).push.apply(_rows,_toConsumableArray(_this.computeExtraAttributes(layer,result)));if(featureReportTemplate){rows=rows.concat(/*#__PURE__*/React.createElement("tr",{key:"__featurereport"},/*#__PURE__*/React.createElement("td",{className:"identify-attr-title "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("i",null,LocaleUtils.tr("identify.featureReport"))),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("a",{href:_this.getFeatureReportUrl(featureReportTemplate,result)},LocaleUtils.tr("identify.link")))))}if(isEmpty(rows)){rows=/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",{className:"identify-attr-value"},/*#__PURE__*/React.createElement("i",null,LocaleUtils.tr("identify.noattributes"))))}resultbox=/*#__PURE__*/React.createElement("div",{className:"identify-result-box"},/*#__PURE__*/React.createElement("table",{className:"attribute-list"},/*#__PURE__*/React.createElement("tbody",null,rows)))}if(!inlineExtaAttribs&&(_this.props.attributeCalculator||featureReportTemplate)){extraattribs=/*#__PURE__*/React.createElement("div",{className:"identify-result-box"},/*#__PURE__*/React.createElement("table",{className:"attribute-list"},/*#__PURE__*/React.createElement("tbody",null,_this.computeExtraAttributes(layer,result),featureReportTemplate?/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",{className:"identify-attr-title "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("i",null,LocaleUtils.tr("identify.featureReport"))),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value "+_this.props.longAttributesDisplay},/*#__PURE__*/React.createElement("a",{href:_this.getFeatureReportUrl(featureReportTemplate,result),rel:"noreferrer",target:"_blank"},LocaleUtils.tr("identify.link")))):null)))}var zoomToFeatureButton=null;if(result.bbox&&result.crs){zoomToFeatureButton=/*#__PURE__*/React.createElement(Icon,{icon:"zoom",onClick:function onClick(){return _this.zoomToResult(result)}})}var key=result+":"+result.id;var expanded=_this.state.expandedResults[key];return/*#__PURE__*/React.createElement("div",{className:resultClass,key:"results-attributes"},/*#__PURE__*/React.createElement("div",{className:"identify-result-title"},_this.props.collapsible?/*#__PURE__*/React.createElement(Icon,{icon:expanded?"tree_minus":"tree_plus",onClick:function onClick(){return _this.setState(function(state){return{expandedResults:_objectSpread(_objectSpread({},state.expandedResults),{},_defineProperty({},key,!expanded))}})}}):/*#__PURE__*/React.createElement(Icon,{icon:"minus",onClick:function onClick(){return _this.removeResult(layer,result)}}),/*#__PURE__*/React.createElement("span",null,(_this.props.showLayerTitles?result.layertitle+": ":"")+result.displayname),zoomToFeatureButton,/*#__PURE__*/React.createElement(Icon,{icon:"info-sign",onClick:function onClick(){return _this.showLayerInfo(result)}})),_this.props.collapsible&&!expanded?null:/*#__PURE__*/React.createElement("div",{className:"identify-result-container"},resultbox,extraattribs))});_defineProperty(_this,"computeExtraAttributes",function(layer,result){var _window$qwc;var rows=[];Object.values(((_window$qwc=window.qwc2)===null||_window$qwc===void 0?void 0:_window$qwc.__attributeCalculators)||{}).forEach(function(calc,idx){var row=calc(layer,result);if(row.length===2){rows.push(/*#__PURE__*/React.createElement("tr",{key:"custom-attr-"+idx},/*#__PURE__*/React.createElement("td",{className:"identify-attr-title"},/*#__PURE__*/React.createElement("i",null,row[0])),/*#__PURE__*/React.createElement("td",{className:"identify-attr-value"},row[1])))}else if(row.length===1){rows.push(/*#__PURE__*/React.createElement("tr",{key:"custom-attr-"+idx},/*#__PURE__*/React.createElement("td",{colSpan:"2"},row[0])))}});if(_this.props.attributeCalculator){rows.push.apply(rows,_toConsumableArray(_this.props.attributeCalculator(layer,result)))}return rows});_defineProperty(_this,"getExporters",function(){var _window$qwc2;return[].concat(BuiltinExporters,_toConsumableArray(_this.props.customExporters),_toConsumableArray(Object.values(((_window$qwc2=window.qwc2)===null||_window$qwc2===void 0?void 0:_window$qwc2.__identifyExportes)||[])))});_defineProperty(_this,"setIframeContent",function(iframe,html){if(iframe.getAttribute("identify-content-set")){return}iframe.setAttribute("identify-content-set",true);iframe.contentWindow.document.open();iframe.contentWindow.document.write(html);iframe.contentWindow.document.close()});_defineProperty(_this,"pollIframe",function(iframe,html){if(iframe&&!iframe.getAttribute("identify-content-set")){var interval=setInterval(function(){if(iframe.getAttribute("identify-content-set")){return clearInterval(interval)}if(iframe.contentWindow&&iframe.contentWindow.document){iframe.setAttribute("identify-content-set",true);iframe.contentWindow.document.open();iframe.contentWindow.document.write(html);iframe.contentWindow.document.close();clearInterval(interval)}return true},500)}});_defineProperty(_this,"collectFeatureReportTemplates",function(entry){var reports={};if(entry.sublayers){var _iterator=_createForOfIteratorHelper(entry.sublayers),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var sublayer=_step.value;reports=_objectSpread(_objectSpread({},reports),_this.collectFeatureReportTemplates(sublayer))}}catch(err){_iterator.e(err)}finally{_iterator.f()}}else if(entry.featureReport){reports[entry.name]=entry.featureReport}return reports});_defineProperty(_this,"findFeatureReportTemplate",function(layer){var reports={};_this.props.layers.filter(function(l){return l.role===LayerRole.THEME}).forEach(function(themeLayer){reports=_objectSpread(_objectSpread({},reports),_this.collectFeatureReportTemplates(themeLayer))});return reports[layer]||null});_defineProperty(_this,"getFeatureReportUrl",function(template,result){var serviceUrl=ConfigUtils.getConfigProp("documentServiceUrl").replace(/\/$/,"");var params={feature:result.id,x:result.clickPos[0],y:result.clickPos[1],crs:_this.props.mapcrs};return serviceUrl+"/"+template+"?"+Object.keys(params).map(function(key){return encodeURIComponent(key)+"="+encodeURIComponent(params[key])}).join("&")});_defineProperty(_this,"downloadAggregatedReport",function(layername,results){var serviceUrl=ConfigUtils.getConfigProp("documentServiceUrl").replace(/\/$/,"");var params={feature:results.map(function(result){return result.id}).join(","),x:results[0].clickPos[0],y:results[0].clickPos[1],crs:_this.props.mapcrs};_this.setState({generatingReport:true});var template=results[0].featurereport||_this.findFeatureReportTemplate(layername);var url=serviceUrl+"/"+template+"?"+Object.keys(params).map(function(key){return encodeURIComponent(key)+"="+encodeURIComponent(params[key])}).join("&");axios.get(url,{responseType:"arraybuffer"}).then(function(response){FileSaver.saveAs(new Blob([response.data],{type:"application/pdf"}),layername+".pdf");_this.setState({generatingReport:false})})["catch"](function(){/* eslint-disable-next-line */alert(LocaleUtils.tr("identify.reportfail"));_this.setState({generatingReport:false})})});_defineProperty(_this,"showLayerInfo",function(result){var match=null;// Search matching layer by technical name
|
|
11
11
|
for(var _i=0,_arr=[result.layername,result.layerinfo];_i<_arr.length;_i++){var name=_arr[_i];match=LayerUtils.searchLayer(_this.props.layers,"name",name);if(match){break}}if(!match){// Search matching layer by title
|
|
12
12
|
match=LayerUtils.searchLayer(_this.props.layers,"title",result.layertitle)}if(match){_this.props.setActiveLayerInfo(match.layer,match.sublayer)}});_defineProperty(_this,"attribValue",function(text,attrName,layer,result){if(_typeof(text)==="object"){text=JSON.stringify(text)}if(_this.props.replaceImageUrls&&/^https?:\/\/.*\.(jpg|jpeg|png|bmp)$/i.exec(text)){return/*#__PURE__*/React.createElement("a",{href:text,rel:"noreferrer",target:"_blank"},/*#__PURE__*/React.createElement("img",{src:text}))}text=""+text;// Ensure text is a string
|
|
13
13
|
text=_this.props.attributeTransform(attrName,text,layer,result);text=MiscUtils.addLinkAnchors(text);return _this.parsedContent(text)});_defineProperty(_this,"parsedContent",function(text){text=text.replace(" ","<br />");var options={replace:function replace(node){if(node.name==="a"){return/*#__PURE__*/React.createElement("a",{href:node.attribs.href,onClick:node.attribs.onclick?function(ev){return _this.evalOnClick(ev,node.attribs.onclick)}:_this.attributeLinkClicked,target:node.attribs.target||"_blank"},domToReact(node.children,options))}return undefined}};return htmlReactParser(text,options)});_defineProperty(_this,"evalOnClick",function(ev,onclick){// eslint-disable-next-line
|
|
14
|
-
eval(onclick);ev.preventDefault()});_defineProperty(_this,"attributeLinkClicked",function(ev){_this.props.openExternalUrl(ev.target.href,ev.target.target,{docked:_this.props.iframeDialogsInitiallyDocked});ev.preventDefault()});_this.currentResultElRef=null;_this.scrollIntoView=false;_this.state.exportFormat=!Array.isArray(props.enableExport)||props.enableExport.includes("geojson")?"geojson":props.enableExport[0];return _this}_inherits(IdentifyViewer,_React$Component);return _createClass(IdentifyViewer,[{key:"componentDidMount",value:function componentDidMount(){this.updateResultTree()}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){if(this.props.identifyResults!==prevProps.identifyResults){this.updateResultTree()}if(prevState.currentResult!==this.state.currentResult||prevState.resultTree!==this.state.resultTree){this.setHighlightedResults(this.state.currentResult===null?null:[this.state.currentResult],this.state.resultTree)}// Scroll to selected result
|
|
15
|
-
if(this.state.currentResult&&this.state.currentResult!==prevState.currentResult&&this.currentResultElRef&&this.scrollIntoView){this.currentResultElRef.parentNode.scrollTop=this.currentResultElRef.offsetTop-this.currentResultElRef.parentNode.offsetTop;this.scrollIntoView=false;this.currentResultElRef=null}}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.props.removeLayer("__identifyviewerhighlight")}},{key:"render",value:function render(){var _this2=this,_exporters$find;var tree=this.props.displayResultTree;var body=null;var reportFeatures={};if(tree){var contents=Object.keys(this.state.resultTree).map(function(layer){return _this2.renderLayer(layer)});var attributes=this.renderResultAttributes(this.state.currentLayer,this.state.currentResult,"identify-result-tree-frame",reportFeatures);var resultsContainerStyle={maxHeight:attributes?"10em":"initial"};body=[/*#__PURE__*/React.createElement("div",{className:"identify-results-container",key:"results-container",style:resultsContainerStyle},contents),attributes]}else{body=/*#__PURE__*/React.createElement("div",{className:"identify-flat-results-list"},this.props.showLayerSelector?/*#__PURE__*/React.createElement("div",{className:"identify-selectbox"},/*#__PURE__*/React.createElement("select",{className:"identify-layer-select",onChange:function onChange(e){var selectedLayer=e.target.value;_this2.setState({selectedLayer:selectedLayer})}},/*#__PURE__*/React.createElement("option",{value:""},LocaleUtils.tr("identify.layerall")),Object.keys(this.state.resultTree).sort().map(function(layer){return/*#__PURE__*/React.createElement("option",{key:layer,value:layer},layer)})),/*#__PURE__*/React.createElement("span",{className:"identify-buttonbox-spacer"}),/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("identify.featurecount"),": ",Object.values(this.state.selectedLayer!==""?this.state.resultTree[this.state.selectedLayer]:this.state.resultTree).flat().length)):null,Object.keys(this.state.selectedLayer!==""?_defineProperty({},this.state.selectedLayer,this.state.resultTree[this.state.selectedLayer]):this.state.resultTree).map(function(layer){var layerResults=_this2.state.resultTree[layer];return layerResults.map(function(result){var resultClass=_this2.state.currentResult===result?"identify-result-frame-highlighted":"identify-result-frame-normal";return/*#__PURE__*/React.createElement("div",{key:result.id,onMouseEnter:function onMouseEnter(){return _this2.setState({currentResult:result,currentLayer:layer})},onMouseLeave:function onMouseLeave(){return _this2.setState({currentResult:null,currentLayer:null})}},_this2.renderResultAttributes(layer,result,resultClass,reportFeatures))})}))}// "el.style.background='inherit'": HACK to trigger an additional repaint, since Safari/Chrome on iOS render the element cut off the first time
|
|
16
|
-
var exporters=this.getExporters();var clipboardExportDisabled=((_exporters$find=exporters.find(function(entry){return entry.id===_this2.state.exportFormat}))===null||_exporters$find===void 0?void 0:_exporters$find.allowClipboard)!==true;return/*#__PURE__*/React.createElement("div",{className:"identify-body",ref:function ref(el){if(el)el.style.background="inherit"}},body,this.props.enableExport===true||!isEmpty(this.props.enableExport)?/*#__PURE__*/React.createElement("div",{className:"identify-buttonbox"},/*#__PURE__*/React.createElement("span",{className:"identify-buttonbox-spacer"}),/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("identify.export"),":\xA0"),/*#__PURE__*/React.createElement("div",{className:"controlgroup"},/*#__PURE__*/React.createElement("select",{className:"combo identify-export-format",onChange:function onChange(ev){return _this2.setState({exportFormat:ev.target.value})},value:this.state.exportFormat},exporters.filter(function(entry){return!Array.isArray(_this2.props.enableExport)||_this2.props.enableExport.includes(entry.id)}).map(function(entry){var _entry$title;return/*#__PURE__*/React.createElement("option",{key:entry.id,value:entry.id},(_entry$title=entry.title)!==null&&_entry$title!==void 0?_entry$title:LocaleUtils.tr(entry.titleMsgId))})),/*#__PURE__*/React.createElement("button",{className:"button",onClick:function onClick(){return _this2.exportResults()},title:LocaleUtils.tr("identify.download")},/*#__PURE__*/React.createElement(Icon,{icon:"export"})),/*#__PURE__*/React.createElement("button",{className:"button",disabled:clipboardExportDisabled,onClick:function onClick(){return _this2.exportResults(true)},title:LocaleUtils.tr("identify.clipboard")},/*#__PURE__*/React.createElement(Icon,{icon:"copy"})))):null,this.props.enableAggregatedReports&&Object.values(reportFeatures).find(function(entry){return entry.length>1})!==undefined?/*#__PURE__*/React.createElement("div",{className:"identify-buttonbox"},/*#__PURE__*/React.createElement("span",{className:"identify-buttonbox-spacer"}),/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("identify.aggregatedreport"),":\xA0"),/*#__PURE__*/React.createElement("div",{className:"controlgroup"},/*#__PURE__*/React.createElement("select",{className:"combo identify-export-format",onChange:function onChange(ev){return _this2.setState({selectedAggregatedReport:ev.target.value})},value:this.state.selectedAggregatedReport||""},/*#__PURE__*/React.createElement("option",{disabled:true,value:""},LocaleUtils.tr("identify.selectlayer")),Object.entries(reportFeatures).map(function(_ref15){var _ref16=_slicedToArray(_ref15,2),layername=_ref16[0],results=_ref16[1];if(results.length>1){return/*#__PURE__*/React.createElement("option",{key:layername,value:layername},results[0].layertitle)}return null})),/*#__PURE__*/React.createElement("button",{className:"button",disabled:!this.state.selectedAggregatedReport||this.state.generatingReport,onClick:function onClick(){return _this2.downloadAggregatedReport(_this2.state.selectedAggregatedReport,reportFeatures[_this2.state.selectedAggregatedReport])}},this.state.generatingReport?/*#__PURE__*/React.createElement(Spinner,null):/*#__PURE__*/React.createElement(Icon,{icon:"report"})))):null)}}])}(React.Component);_defineProperty(IdentifyViewer,"propTypes",{addLayerFeatures:PropTypes.func,attributeCalculator:PropTypes.func,attributeTransform:PropTypes.func,collapsible:PropTypes.bool,customExporters:PropTypes.array,displayResultTree:PropTypes.bool,enableAggregatedReports:PropTypes.bool,enableExport:PropTypes.oneOfType([PropTypes.bool,PropTypes.array]),exportGeometry:PropTypes.bool,highlightAllResults:PropTypes.bool,identifyResults:PropTypes.object,iframeDialogsInitiallyDocked:PropTypes.bool,layers:PropTypes.array,longAttributesDisplay:PropTypes.oneOf(["ellipsis","wrap"]),mapcrs:PropTypes.string,openExternalUrl:PropTypes.func,removeLayer:PropTypes.func,replaceImageUrls:PropTypes.bool,setActiveLayerInfo:PropTypes.func,showLayerSelector:PropTypes.bool,showLayerTitles:PropTypes.bool,theme:PropTypes.object,zoomToExtent:PropTypes.func});_defineProperty(IdentifyViewer,"defaultProps",{longAttributesDisplay:"ellipsis",customExporters:[],displayResultTree:true,attributeCalculator:function attributeCalculator(/* layer, feature */){return[]},attributeTransform:function attributeTransform(name,value/* , layer, feature */){return value},enableAggregatedReports:true,showLayerTitles:true,showLayerSelector:true,highlightAllResults:true});var selector=function selector(state){return{theme:state.theme.current,layers:state.layers.flat,mapcrs:state.map.projection}};export default connect(selector,{addLayerFeatures:addLayerFeatures,removeLayer:removeLayer,setActiveLayerInfo:setActiveLayerInfo,openExternalUrl:openExternalUrl,zoomToExtent:zoomToExtent})(IdentifyViewer);
|
|
14
|
+
eval(onclick);ev.preventDefault()});_defineProperty(_this,"attributeLinkClicked",function(ev){_this.props.openExternalUrl(ev.target.href,ev.target.target,{docked:_this.props.iframeDialogsInitiallyDocked});ev.preventDefault()});_defineProperty(_this,"zoomToResult",function(result){_this.props.zoomToExtent(result.bbox,result.crs);var path=[];var sublayer=null;var layer=_this.props.layers.find(function(l){return l.role===LayerRole.THEME&&(sublayer=LayerUtils.searchSubLayer(l,"name",result.layername,path))});if(layer&&sublayer){_this.props.changeLayerProperty(layer.uuid,"visibility",true,path)}});_this.currentResultElRef=null;_this.scrollIntoView=false;_this.state.exportFormat=!Array.isArray(props.enableExport)||props.enableExport.includes("geojson")?"geojson":props.enableExport[0];return _this}_inherits(IdentifyViewer,_React$Component);return _createClass(IdentifyViewer,[{key:"componentDidMount",value:function componentDidMount(){this.updateResultTree()}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){if(this.props.identifyResults!==prevProps.identifyResults){this.updateResultTree()}if(prevState.currentResult!==this.state.currentResult||prevState.resultTree!==this.state.resultTree){this.setHighlightedResults(this.state.currentResult===null?null:[this.state.currentResult],this.state.resultTree)}// Scroll to selected result
|
|
15
|
+
if(this.state.currentResult&&this.state.currentResult!==prevState.currentResult&&this.currentResultElRef&&this.scrollIntoView){this.currentResultElRef.parentNode.scrollTop=this.currentResultElRef.offsetTop-this.currentResultElRef.parentNode.offsetTop;this.scrollIntoView=false;this.currentResultElRef=null}}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.props.removeLayer("__identifyviewerhighlight")}},{key:"render",value:function render(){var _this2=this,_exporters$find;var tree=this.props.displayResultTree;var body=null;var reportFeatures={};if(tree){var contents=Object.keys(this.state.resultTree).map(function(layer){return _this2.renderLayer(layer)});var attributes=this.renderResultAttributes(this.state.currentLayer,this.state.currentResult,"identify-result-tree-frame",reportFeatures);var resultsContainerStyle={maxHeight:attributes?"10em":"initial"};body=[/*#__PURE__*/React.createElement("div",{className:"identify-results-container",key:"results-container",style:resultsContainerStyle},contents),attributes]}else{body=/*#__PURE__*/React.createElement("div",{className:"identify-flat-results-list"},this.props.showLayerSelector?/*#__PURE__*/React.createElement("div",{className:"identify-selectbox"},/*#__PURE__*/React.createElement("select",{className:"identify-layer-select",onChange:function onChange(e){var selectedLayer=e.target.value;_this2.setState({selectedLayer:selectedLayer})}},/*#__PURE__*/React.createElement("option",{value:""},LocaleUtils.tr("identify.layerall")),Object.keys(this.state.resultTree).sort().map(function(layer){var _this2$state$resultTr;return/*#__PURE__*/React.createElement("option",{key:layer,value:layer},((_this2$state$resultTr=_this2.state.resultTree[layer])===null||_this2$state$resultTr===void 0||(_this2$state$resultTr=_this2$state$resultTr[0])===null||_this2$state$resultTr===void 0?void 0:_this2$state$resultTr.layertitle)||layer)})),/*#__PURE__*/React.createElement("span",{className:"identify-buttonbox-spacer"}),/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("identify.featurecount"),": ",Object.values(this.state.selectedLayer!==""?this.state.resultTree[this.state.selectedLayer]:this.state.resultTree).flat().length)):null,Object.keys(this.state.selectedLayer!==""?_defineProperty({},this.state.selectedLayer,this.state.resultTree[this.state.selectedLayer]):this.state.resultTree).map(function(layer){var layerResults=_this2.state.resultTree[layer];return layerResults.map(function(result){var resultClass=_this2.state.currentResult===result?"identify-result-frame-highlighted":"identify-result-frame-normal";return/*#__PURE__*/React.createElement("div",{key:result.id,onMouseEnter:function onMouseEnter(){return _this2.setState({currentResult:result,currentLayer:layer})},onMouseLeave:function onMouseLeave(){return _this2.setState({currentResult:null,currentLayer:null})}},_this2.renderResultAttributes(layer,result,resultClass,reportFeatures))})}))}// "el.style.background='inherit'": HACK to trigger an additional repaint, since Safari/Chrome on iOS render the element cut off the first time
|
|
16
|
+
var exporters=this.getExporters();var clipboardExportDisabled=((_exporters$find=exporters.find(function(entry){return entry.id===_this2.state.exportFormat}))===null||_exporters$find===void 0?void 0:_exporters$find.allowClipboard)!==true;return/*#__PURE__*/React.createElement("div",{className:"identify-body",ref:function ref(el){if(el)el.style.background="inherit"}},body,this.props.enableExport===true||!isEmpty(this.props.enableExport)?/*#__PURE__*/React.createElement("div",{className:"identify-buttonbox"},/*#__PURE__*/React.createElement("span",{className:"identify-buttonbox-spacer"}),/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("identify.export"),":\xA0"),/*#__PURE__*/React.createElement("div",{className:"controlgroup"},/*#__PURE__*/React.createElement("select",{className:"combo identify-export-format",onChange:function onChange(ev){return _this2.setState({exportFormat:ev.target.value})},value:this.state.exportFormat},exporters.filter(function(entry){return!Array.isArray(_this2.props.enableExport)||_this2.props.enableExport.includes(entry.id)}).map(function(entry){var _entry$title;return/*#__PURE__*/React.createElement("option",{key:entry.id,value:entry.id},(_entry$title=entry.title)!==null&&_entry$title!==void 0?_entry$title:LocaleUtils.tr(entry.titleMsgId))})),/*#__PURE__*/React.createElement("button",{className:"button",onClick:function onClick(){return _this2.exportResults()},title:LocaleUtils.tr("identify.download")},/*#__PURE__*/React.createElement(Icon,{icon:"export"})),/*#__PURE__*/React.createElement("button",{className:"button",disabled:clipboardExportDisabled,onClick:function onClick(){return _this2.exportResults(true)},title:LocaleUtils.tr("identify.clipboard")},/*#__PURE__*/React.createElement(Icon,{icon:"copy"})))):null,this.props.enableAggregatedReports&&Object.values(reportFeatures).find(function(entry){return entry.length>1})!==undefined?/*#__PURE__*/React.createElement("div",{className:"identify-buttonbox"},/*#__PURE__*/React.createElement("span",{className:"identify-buttonbox-spacer"}),/*#__PURE__*/React.createElement("span",null,LocaleUtils.tr("identify.aggregatedreport"),":\xA0"),/*#__PURE__*/React.createElement("div",{className:"controlgroup"},/*#__PURE__*/React.createElement("select",{className:"combo identify-export-format",onChange:function onChange(ev){return _this2.setState({selectedAggregatedReport:ev.target.value})},value:this.state.selectedAggregatedReport||""},/*#__PURE__*/React.createElement("option",{disabled:true,value:""},LocaleUtils.tr("identify.selectlayer")),Object.entries(reportFeatures).map(function(_ref15){var _ref16=_slicedToArray(_ref15,2),layername=_ref16[0],results=_ref16[1];if(results.length>1){return/*#__PURE__*/React.createElement("option",{key:layername,value:layername},results[0].layertitle)}return null})),/*#__PURE__*/React.createElement("button",{className:"button",disabled:!this.state.selectedAggregatedReport||this.state.generatingReport,onClick:function onClick(){return _this2.downloadAggregatedReport(_this2.state.selectedAggregatedReport,reportFeatures[_this2.state.selectedAggregatedReport])}},this.state.generatingReport?/*#__PURE__*/React.createElement(Spinner,null):/*#__PURE__*/React.createElement(Icon,{icon:"report"})))):null)}}])}(React.Component);_defineProperty(IdentifyViewer,"propTypes",{addLayerFeatures:PropTypes.func,attributeCalculator:PropTypes.func,attributeTransform:PropTypes.func,changeLayerProperty:PropTypes.func,collapsible:PropTypes.bool,customExporters:PropTypes.array,displayResultTree:PropTypes.bool,enableAggregatedReports:PropTypes.bool,enableExport:PropTypes.oneOfType([PropTypes.bool,PropTypes.array]),exportGeometry:PropTypes.bool,highlightAllResults:PropTypes.bool,identifyResults:PropTypes.object,iframeDialogsInitiallyDocked:PropTypes.bool,layers:PropTypes.array,longAttributesDisplay:PropTypes.oneOf(["ellipsis","wrap"]),mapcrs:PropTypes.string,openExternalUrl:PropTypes.func,removeLayer:PropTypes.func,replaceImageUrls:PropTypes.bool,setActiveLayerInfo:PropTypes.func,showLayerSelector:PropTypes.bool,showLayerTitles:PropTypes.bool,theme:PropTypes.object,zoomToExtent:PropTypes.func});_defineProperty(IdentifyViewer,"defaultProps",{longAttributesDisplay:"ellipsis",customExporters:[],displayResultTree:true,attributeCalculator:function attributeCalculator(/* layer, feature */){return[]},attributeTransform:function attributeTransform(name,value/* , layer, feature */){return value},enableAggregatedReports:true,showLayerTitles:true,showLayerSelector:true,highlightAllResults:true});var selector=function selector(state){return{theme:state.theme.current,layers:state.layers.flat,mapcrs:state.map.projection}};export default connect(selector,{addLayerFeatures:addLayerFeatures,changeLayerProperty:changeLayerProperty,removeLayer:removeLayer,setActiveLayerInfo:setActiveLayerInfo,openExternalUrl:openExternalUrl,zoomToExtent:zoomToExtent})(IdentifyViewer);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
|
|
2
|
+
* Copyright 2025 Sourcepole AG
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/import React from"react";import ReactDOM from"react-dom";import classNames from"classnames";import PropTypes from"prop-types";import Icon from"./Icon";import{MapButtonPortalContext}from"./PluginsContainer";import Spinner from"./widgets/Spinner";import"./style/MapButton.css";var MapButton=/*#__PURE__*/function(_React$Component){function MapButton(){_classCallCheck(this,MapButton);return _callSuper(this,MapButton,arguments)}_inherits(MapButton,_React$Component);return _createClass(MapButton,[{key:"componentDidMount",value:function componentDidMount(){this.componentDidUpdate({})}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){if(this.context&&this.props.position!==prevProps.position){this.context.recomputeSpacers()}}},{key:"render",value:function render(){if(!this.context){return null}var className=classNames({"map-button":true,"map-button-active":this.props.active,"map-button-disabled":this.props.disabled,"map-button-engaged":this.props.engaged});var position=this.props.position||0;return/*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/React.createElement("div",{className:"map-button-container","data-slot":position,style:{order:position}},/*#__PURE__*/React.createElement("button",{className:"".concat(className," ").concat(this.props.className||""),onClick:this.props.onClick,title:this.props.tooltip},this.props.busy?/*#__PURE__*/React.createElement(Spinner,null):/*#__PURE__*/React.createElement(Icon,{icon:this.props.icon,size:this.props.iconSize})),this.props.children),this.context)}}])}(React.Component);_defineProperty(MapButton,"contextType",MapButtonPortalContext);_defineProperty(MapButton,"propTypes",{active:PropTypes.bool,busy:PropTypes.bool,children:PropTypes.oneOfType([PropTypes.node,PropTypes.func]),className:PropTypes.string,disabled:PropTypes.bool,engaged:PropTypes.bool,icon:PropTypes.string,iconSize:PropTypes.string,onClick:PropTypes.func,position:PropTypes.number,tooltip:PropTypes.string});export{MapButton as default};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
|
|
1
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
|
|
2
2
|
* Copyright 2016 GeoSolutions Sas
|
|
3
3
|
* Copyright 2016-2024 Sourcepole AG
|
|
4
4
|
* All rights reserved.
|
|
5
5
|
*
|
|
6
6
|
* This source code is licensed under the BSD-style license found in the
|
|
7
7
|
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/import React from"react";import{connect}from"react-redux";import PropTypes from"prop-types";import ConfigUtils from"../utils/ConfigUtils";import WindowManager from"./WindowManager";import"./style/PluginsContainer.css";var PluginsContainer=/*#__PURE__*/function(_React$Component){function PluginsContainer(){var _this;_classCallCheck(this,PluginsContainer);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,PluginsContainer,[].concat(args));_defineProperty(_this,"renderPlugins",function(){var mode=ConfigUtils.isMobile()?"mobile":"desktop";var pluginsConfig=_this.props.pluginsConfig[mode];return pluginsConfig.map(function(pluginConf,idx){var _this$props$theme,_this$props$theme2;var Plugin=_this.props.plugins[pluginConf.name+"Plugin"];if(!Plugin){return null}var themeDevicePluginConfig=((_this$props$theme=_this.props.theme)===null||_this$props$theme===void 0||(_this$props$theme=_this$props$theme.config)===null||_this$props$theme===void 0||(_this$props$theme=_this$props$theme[mode])===null||_this$props$theme===void 0||(_this$props$theme=_this$props$theme.plugins)===null||_this$props$theme===void 0?void 0:_this$props$theme[pluginConf.name])||{};var themePluginConfig=((_this$props$theme2=_this.props.theme)===null||_this$props$theme2===void 0||(_this$props$theme2=_this$props$theme2.config)===null||_this$props$theme2===void 0||(_this$props$theme2=_this$props$theme2.plugins)===null||_this$props$theme2===void 0?void 0:_this$props$theme2[pluginConf.name])||{};var cfg=_objectSpread(_objectSpread(_objectSpread({},pluginConf.cfg||{}),themePluginConfig),themeDevicePluginConfig);var appCfg=_this.props.pluginsAppConfig[pluginConf.name+"Plugin"]||{};return/*#__PURE__*/React.createElement(Plugin,_extends({key:pluginConf.name+idx},cfg,appCfg))})});
|
|
8
|
+
*/import React from"react";import{connect}from"react-redux";import PropTypes from"prop-types";import ConfigUtils from"../utils/ConfigUtils";import WindowManager from"./WindowManager";import"./style/PluginsContainer.css";export var MapButtonPortalContext=/*#__PURE__*/React.createContext(null);var PluginsContainer=/*#__PURE__*/function(_React$Component){function PluginsContainer(){var _this;_classCallCheck(this,PluginsContainer);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,PluginsContainer,[].concat(args));_defineProperty(_this,"state",{mapButtonsContainerRef:null});_defineProperty(_this,"renderPlugins",function(){var mode=ConfigUtils.isMobile()?"mobile":"desktop";var pluginsConfig=_this.props.pluginsConfig[mode];return pluginsConfig.map(function(pluginConf,idx){var _this$props$theme,_this$props$theme2;var Plugin=_this.props.plugins[pluginConf.name+"Plugin"];if(!Plugin){return null}var themeDevicePluginConfig=((_this$props$theme=_this.props.theme)===null||_this$props$theme===void 0||(_this$props$theme=_this$props$theme.config)===null||_this$props$theme===void 0||(_this$props$theme=_this$props$theme[mode])===null||_this$props$theme===void 0||(_this$props$theme=_this$props$theme.plugins)===null||_this$props$theme===void 0?void 0:_this$props$theme[pluginConf.name])||{};var themePluginConfig=((_this$props$theme2=_this.props.theme)===null||_this$props$theme2===void 0||(_this$props$theme2=_this$props$theme2.config)===null||_this$props$theme2===void 0||(_this$props$theme2=_this$props$theme2.plugins)===null||_this$props$theme2===void 0?void 0:_this$props$theme2[pluginConf.name])||{};var cfg=_objectSpread(_objectSpread(_objectSpread({},pluginConf.cfg||{}),themePluginConfig),themeDevicePluginConfig);var appCfg=_this.props.pluginsAppConfig[pluginConf.name+"Plugin"]||{};return/*#__PURE__*/React.createElement(Plugin,_extends({key:pluginConf.name+idx},cfg,appCfg))})});_defineProperty(_this,"setupTouchEvents",function(el){if(el){el.addEventListener("touchstart",function(ev){_this.touchY=ev.targetTouches[0].clientY},{passive:false});el.addEventListener("touchmove",_this.preventOverscroll,{passive:false})}});_defineProperty(_this,"preventOverscroll",function(ev){if(ev.touches[0].touchType!=="direct"){// Don't do anything for stylus inputs
|
|
9
|
+
return}var scrollEvent=false;var element=ev.target;var direction=ev.targetTouches[0].clientY-_this.touchY;_this.touchY=ev.targetTouches[0].clientY;while(!scrollEvent&&element){var scrollable=element.scrollHeight>element.clientHeight;// Workaround for resizeable-window having scrollHeight > clientHeight even though it has no scrollbar
|
|
10
|
+
if(element.classList.contains("resizeable-window")){scrollable=false}if(element.type==="range"){// If it is a range element, treat it as a scroll event
|
|
11
|
+
scrollEvent=true}else if(scrollable&&element.scrollTop+element.clientHeight<element.scrollHeight&&direction<0){// User scrolls down and element is not at end of scroll
|
|
12
|
+
scrollEvent=true}else if(scrollable&&element.scrollTop>0&&direction>0){// User scrolls up and element is not at start of scroll
|
|
13
|
+
scrollEvent=true}else{element=element.parentElement}}if(!scrollEvent){ev.preventDefault()}});_defineProperty(_this,"setContainerRef",function(el){_this.setState({mapButtonsContainerRef:el});if(el){var resizeObserver=new ResizeObserver(function(entries){var contentRectEntry=entries.find(function(entry){return entry.contentRect});if(contentRectEntry){var width=contentRectEntry.contentRect.width;var height=contentRectEntry.contentRect.height;el.style.setProperty("--buttons-container-width","".concat(width,"px"));el.style.setProperty("--buttons-container-height","".concat(height,"px"))}});resizeObserver.observe(el);el.recomputeSpacers=function(){var slots=new Set;Array.from(el.childNodes).forEach(function(child){if(child.dataset.spacer){el.removeChild(child)}else{slots.add(child.dataset.slot)}});var maxSlot=Math.max.apply(Math,_toConsumableArray(slots));for(var i=0;i<maxSlot;++i){if(!slots.has(String(i))){var child=document.createElement("div");child.className="map-buttons-spacer";child.dataset.spacer=1;child.style.order=i;el.appendChild(child)}}}}});return _this}_inherits(PluginsContainer,_React$Component);return _createClass(PluginsContainer,[{key:"render",value:function render(){var left=this.props.mapMargins.left;var top=this.props.mapMargins.top;var right=this.props.mapMargins.right;var bottom=this.props.mapMargins.bottom;var buttonContainerStyle={left:"calc(1em + "+left+"px)",top:"calc(var(--topbar-height) + "+top+"px)",right:"calc(1em + "+right+"px)",bottom:"calc(var(--bottombar-height) + "+bottom+"px + 2.5em)"};return/*#__PURE__*/React.createElement("div",{className:"PluginsContainer",ref:this.setupTouchEvents},/*#__PURE__*/React.createElement(MapButtonPortalContext.Provider,{value:this.state.mapButtonsContainerRef},this.renderPlugins(),this.props.children),/*#__PURE__*/React.createElement(WindowManager,null),/*#__PURE__*/React.createElement("div",{className:"map-buttons-container",ref:this.setContainerRef,style:buttonContainerStyle}))}}])}(React.Component);_defineProperty(PluginsContainer,"propTypes",{children:PropTypes.oneOfType([PropTypes.node,PropTypes.func]),mapMargins:PropTypes.object,plugins:PropTypes.object,pluginsAppConfig:PropTypes.object,pluginsConfig:PropTypes.object,theme:PropTypes.object});export default connect(function(state){return{mapMargins:state.windows.mapMargins,theme:state.theme.current}})(PluginsContainer);
|
package/components/SearchBox.js
CHANGED
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function
|
|
1
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
|
|
2
2
|
* Copyright 2019-2024 Sourcepole AG
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the BSD-style license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/import React from"react";import{connect}from"react-redux";import axios from"axios";import classnames from"classnames";import isEmpty from"lodash.isempty";import pointInPolygon from"point-in-polygon";import polygonIntersectTest from"polygon-intersect-test";import PropTypes from"prop-types";import{createSelector}from"reselect";import{v1 as uuidv1}from"uuid";import{LayerRole,addLayerFeatures,addThemeSublayer,removeLayer,addLayer}from"../actions/layers";import{logAction}from"../actions/logging";import{panTo,zoomToExtent,zoomToPoint}from"../actions/map";import{setCurrentTask}from"../actions/task";import{setCurrentTheme}from"../actions/theme";import{openExternalUrl,showNotification}from"../actions/windows";import searchProvidersSelector from"../selectors/searchproviders";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import LayerUtils from"../utils/LayerUtils";import LocaleUtils from"../utils/LocaleUtils";import MapUtils from"../utils/MapUtils";import MiscUtils from"../utils/MiscUtils";import{UrlParams}from"../utils/PermaLinkUtils";import{FulltextSearch,SearchResultType}from"../utils/SearchProviders";import VectorLayerUtils from"../utils/VectorLayerUtils";import Icon from"./Icon";import MapSelection from"./MapSelection";import ButtonBar from"./widgets/ButtonBar";import ComboBox from"./widgets/ComboBox";import InputContainer from"./widgets/InputContainer";import NumberInput from"./widgets/NumberInput";import Spinner from"./widgets/Spinner";import"./style/SearchBox.css";var SearchBox=/*#__PURE__*/function(_React$Component){function SearchBox(props){var _this;_classCallCheck(this,SearchBox);_this=_callSuper(this,SearchBox,[props]);_defineProperty(_this,"state",{searchText:"",searchSession:null,pendingSearches:[],recentSearches:[],searchResults:{},resultsVisible:false,collapsedSections:{},expandedLayerGroup:null,activeLayerInfo:null,filterOptionsVisible:false,selectedProvider:"",filterRegionName:"",filterGeomType:null,filterGeometry:null});_defineProperty(_this,"renderFilterOptions",function(){var _this$state$filterGeo;if(!_this.state.filterOptionsVisible){return null}var providerSelection=/*#__PURE__*/React.createElement(ComboBox,{onChange:function onChange(value){return _this.setState({selectedProvider:value})},value:_this.state.selectedProvider},/*#__PURE__*/React.createElement("div",{value:""},LocaleUtils.tr("search.all")),Object.entries(_this.props.searchProviders).map(function(_ref){var _prov$params,_prov$label;var _ref2=_slicedToArray(_ref,2),key=_ref2[0],prov=_ref2[1];return/*#__PURE__*/React.createElement("div",{key:key,value:key},(prov===null||prov===void 0||(_prov$params=prov.params)===null||_prov$params===void 0?void 0:_prov$params.title)||((_prov$label=prov.label)!==null&&_prov$label!==void 0?_prov$label:LocaleUtils.tr(prov.labelmsgid)))}));var searchRegionSelection=null;var searchRegions=ConfigUtils.getConfigProp("searchFilterRegions",_this.props.theme);if(!isEmpty(searchRegions)){searchRegionSelection=/*#__PURE__*/React.createElement(ComboBox,{onChange:function onChange(value){return _this.setFilterRegion(value,searchRegions)},value:_this.state.filterRegionName},/*#__PURE__*/React.createElement("div",{value:""},LocaleUtils.tr("search.none")),searchRegions.map(function(group,gidx){return[/*#__PURE__*/React.createElement("div",{"data-group-header":gidx,disabled:true,key:"group"+gidx},group.name)].concat(_toConsumableArray(group.items.map(function(item,idx){return/*#__PURE__*/React.createElement("div",{"data-group":gidx,key:item.name,value:gidx+":"+idx+":"+item.name},item.name)})))}))}var filterButtons=[{key:"Polygon",tooltip:LocaleUtils.tr("redlining.polygon"),icon:"polygon",label:LocaleUtils.tr("redlining.polygon")},{key:"Circle",tooltip:LocaleUtils.tr("redlining.circle"),icon:"circle",label:LocaleUtils.tr("redlining.circle")}];return/*#__PURE__*/React.createElement("div",{className:"searchbox-filter-options"},/*#__PURE__*/React.createElement("table",null,/*#__PURE__*/React.createElement("tbody",null,/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("search.providerselection"),":"),/*#__PURE__*/React.createElement("td",null,providerSelection)),/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("search.limittoarea"),":"),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement("div",{className:"searchbox-filter-options-geometry controlgroup"},/*#__PURE__*/React.createElement(ButtonBar,{active:_this.state.filterGeomType,buttons:filterButtons,onClick:_this.setFilterGeomType}),searchRegionSelection,/*#__PURE__*/React.createElement("button",{className:"button",onClick:_this.clearFilter,title:LocaleUtils.tr("search.clearfilter")},/*#__PURE__*/React.createElement(Icon,{icon:"clear"}))))),_this.state.filterGeomType==="Circle"?/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("search.circleradius"),":"),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(NumberInput,{disabled:!_this.state.filterGeometry,min:1,mobile:true,onChange:_this.setCircleRadius,suffix:" m",value:((_this$state$filterGeo=_this.state.filterGeometry)===null||_this$state$filterGeo===void 0?void 0:_this$state$filterGeo.radius)||0}))):null)))});_defineProperty(_this,"setFilterGeomType",function(geomType){_this.setState({filterGeomType:geomType,filterRegionName:"",filterGeometry:null})});_defineProperty(_this,"setFilterRegion",function(value,searchRegions){if(value){var parts=value.split(":");var item=searchRegions[parts[0]].items[parts[1]];var geometry={type:"Polygon",coordinates:[item.coordinates]};var mapGeometry=VectorLayerUtils.reprojectGeometry(geometry,item.crs,_this.props.map.projection);_this.setState({filterGeomType:null,filterRegionName:value,filterGeometry:mapGeometry})}else{_this.setState({filterGeomType:null,filterRegionName:"",filterGeometry:null})}});_defineProperty(_this,"setCircleRadius",function(value){_this.setState(function(state){return{filterGeometry:_objectSpread(_objectSpread({},state.filterGeometry),{},{radius:value})}})});_defineProperty(_this,"clearFilter",function(){_this.setState({filterGeomType:null,filterRegionName:"",filterGeometry:null})});_defineProperty(_this,"renderResultsMenu",function(){if(!_this.state.resultsVisible){return false}var children=[_this.renderRecentResults(),_this.renderFilters(),_this.renderResults()];children=children.filter(function(child){return!isEmpty(child)});if(isEmpty(children)){if(isEmpty(_this.state.pendingSearches)&&_this.state.searchResults.query_text){children=/*#__PURE__*/React.createElement("div",{className:"searchbox-noresults"},LocaleUtils.tr("search.noresults"))}else{return null}}return/*#__PURE__*/React.createElement("div",{className:"searchbox-results",onMouseDown:_this.setPreventBlur,ref:MiscUtils.setupKillTouchEvents},children)});_defineProperty(_this,"renderRecentResults",function(){var recentSearches=_this.state.recentSearches.filter(function(entry){return entry.toLowerCase().includes(_this.state.searchText.toLowerCase())});if(isEmpty(recentSearches)||recentSearches.length===1&&recentSearches[0].toLowerCase()===_this.state.searchText.toLowerCase()){return null}return/*#__PURE__*/React.createElement("div",{key:"recent"},/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-title",onClick:function onClick(){return _this.toggleSection("recent")},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement(Icon,{icon:_this.isCollapsed("recent")?"expand":"collapse"}),LocaleUtils.tr("search.recent")),!_this.isCollapsed("recent")?/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-body"},recentSearches.map(function(entry,idx){return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:"r"+idx,onClick:function onClick(){return _this.searchTextChanged(entry)},onMouseDown:MiscUtils.killEvent},entry)})):null)});_defineProperty(_this,"renderFilters",function(){return Object.entries(_this.state.searchResults).map(function(_ref3){var _ref4=_slicedToArray(_ref3,2),provider=_ref4[0],results=_ref4[1];if(isEmpty(results.result_counts)||results.result_counts.length<2){return null}var collapsed=_this.isCollapsed("filter",false);var values=results.result_counts.map(function(entry){return entry.filterword+": "+_this.state.searchResults.query_text});values.sort(function(a,b){return a.localeCompare(b)});return/*#__PURE__*/React.createElement("div",{key:"filter"},/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-title",onClick:function onClick(){return _this.toggleSection("filter")},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement(Icon,{icon:collapsed?"expand":"collapse"}),LocaleUtils.tr("search.filter")),!collapsed?/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-body"},values.map(function(value,idx){return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:"f"+idx,onClick:function onClick(){return _this.searchTextChanged(value,true,provider)},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label"},value))})):null)}).filter(Boolean)});_defineProperty(_this,"renderResults",function(){var resultRenderers=_defineProperty(_defineProperty(_defineProperty({},SearchResultType.PLACE,_this.renderPlaceResult),SearchResultType.THEMELAYER,_this.renderThemeLayerResult),SearchResultType.THEME,_this.renderThemeResult);var layersBeforePlaces=_this.props.searchOptions.showLayerResultsBeforePlaces;var priorities=_defineProperty(_defineProperty(_defineProperty({},SearchResultType.PLACE,layersBeforePlaces?0:2),SearchResultType.THEMELAYER,layersBeforePlaces?2:1),SearchResultType.THEME,layersBeforePlaces?1:0);var results=Object.keys(_this.props.searchProviders).reduce(function(result,provider){if(!_this.state.searchResults[provider]){return result}return result.concat(_this.state.searchResults[provider].results.map(function(group){var _group$type,_group$type2,_group$title,_group$title2;var sectionId=provider+":"+group.id;var moreLabel=null;if(group.resultCount>0&&group.resultCount>group.items.length){moreLabel=LocaleUtils.tr("search.more",group.resultCount-group.items.length)}else if(group.resultCount===-1){moreLabel=LocaleUtils.tr("search.unknownmore")}if(group.items.length===0){return null}var renderer=resultRenderers[(_group$type=group.type)!==null&&_group$type!==void 0?_group$type:SearchResultType.PLACE];if(!renderer){return null}var priority=priorities[(_group$type2=group.type)!==null&&_group$type2!==void 0?_group$type2:SearchResultType.PLACE];return{priority:priority*1000000+(group.priority||0),title:(_group$title=group.title)!==null&&_group$title!==void 0?_group$title:LocaleUtils.tr(group.titlemsgid),tree:/*#__PURE__*/React.createElement("div",{key:sectionId},/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-title",onClick:function onClick(){return _this.toggleSection(sectionId)},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement(Icon,{icon:_this.isCollapsed(sectionId)?"expand":"collapse"}),/*#__PURE__*/React.createElement("span",null,(_group$title2=group.title)!==null&&_group$title2!==void 0?_group$title2:LocaleUtils.tr(group.titlemsgid))),!_this.isCollapsed(sectionId)?/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-body"},group.items.map(function(entry){return renderer(provider,group,entry)}),moreLabel?/*#__PURE__*/React.createElement("div",{className:"searchbox-more-results"},moreLabel):null):null)}}))},[]).filter(Boolean);results.sort(function(a,b){if(b.priority!==a.priority){return b.priority-a.priority}else{return b.title.localeCompare(a.title)}});return isEmpty(results)?null:results.map(function(entry){return entry.tree})});_defineProperty(_this,"renderPlaceResult",function(provider,group,result){var _result$label;var key=provider+":"+group.id+":"+result.id;return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:key,onClick:function onClick(){_this.selectPlaceResult(provider,group,result);_this.blur()},onMouseDown:MiscUtils.killEvent},result.thumbnail?/*#__PURE__*/React.createElement("img",{className:"searchbox-result-thumbnail",onError:function onError(ev){return _this.loadFallbackResultImage(ev,result)},src:result.thumbnail}):null,/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label",dangerouslySetInnerHTML:{__html:result.text.replace(/<br\s*\/>/ig," ")},title:(_result$label=result.label)!==null&&_result$label!==void 0?_result$label:result.text}),result.externalLink?/*#__PURE__*/React.createElement(Icon,{icon:"info-sign",onClick:function onClick(ev){var _result$label2;MiscUtils.killEvent(ev);_this.openUrl(result.externalLink,result.target,(_result$label2=result.label)!==null&&_result$label2!==void 0?_result$label2:result.text)}}):null)});_defineProperty(_this,"renderThemeLayerResult",function(provider,group,result){var _result$label3,_result$layer;var parent=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var key=provider+":"+group.id+":"+result.id;var addThemes=ConfigUtils.getConfigProp("allowAddingOtherThemes",_this.props.theme);var icon=null;if(result.sublayers){var toggleLayerGroup=function toggleLayerGroup(){_this.setState(function(state){return{expandedLayerGroup:state.expandedLayerGroup===key?null:key}})};icon=/*#__PURE__*/React.createElement(Icon,{className:"searchbox-result-thumbnail",icon:_this.state.expandedLayerGroup===key?"minus":"plus",onClick:function onClick(ev){MiscUtils.killEvent(ev);toggleLayerGroup()}})}else if(result.thumbnail){icon=/*#__PURE__*/React.createElement("img",{className:"searchbox-result-thumbnail",onError:function onError(ev){return _this.loadFallbackResultImage(ev,result)},src:result.thumbnail})}var selectResult=result.theme?_this.selectThemeResult:_this.selectThemeLayerResult;return/*#__PURE__*/React.createElement("div",{key:key},/*#__PURE__*/React.createElement("div",{className:"searchbox-result",onClick:function onClick(){selectResult(provider,group,result);_this.blur()},onMouseDown:MiscUtils.killEvent},icon,result.theme?/*#__PURE__*/React.createElement(Icon,{className:"searchbox-result-openicon",icon:"open"}):null,/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label",dangerouslySetInnerHTML:{__html:result.text.replace(/<br\s*\/>/ig," ")},title:(_result$label3=result.label)!==null&&_result$label3!==void 0?_result$label3:result.text}),result.theme&&addThemes?/*#__PURE__*/React.createElement(Icon,{icon:"plus",onClick:function onClick(ev){MiscUtils.killEvent(ev);_this.selectThemeLayerResult(provider,group,result);_this.blur()},title:LocaleUtils.tr("themeswitcher.addtotheme")}):null,result.info?/*#__PURE__*/React.createElement(Icon,{icon:"info-sign",onClick:function onClick(ev){MiscUtils.killEvent(ev);_this.toggleLayerInfo(provider,group,result,key,parent)}}):null),_this.state.activeLayerInfo===key?/*#__PURE__*/React.createElement("div",{className:"searchbox-result-abstract",dangerouslySetInnerHTML:{__html:MiscUtils.addLinkAnchors(((_result$layer=result.layer)===null||_result$layer===void 0?void 0:_result$layer["abstract"])||"")||LocaleUtils.tr("search.nodescription")}}):null,_this.state.expandedLayerGroup===key?/*#__PURE__*/React.createElement("div",{className:"searchbox-result-group"},result.sublayers.map(function(sublayer){return _this.renderThemeLayerResult(provider,group,sublayer,result.id)})):null)});_defineProperty(_this,"renderThemeResult",function(provider,group,result){var _result$label4;var addThemes=ConfigUtils.getConfigProp("allowAddingOtherThemes",_this.props.theme);return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:provider+":"+group.id+":"+result.id,onClick:function onClick(){_this.selectThemeResult(provider,group,result);_this.blur()},onMouseDown:MiscUtils.killEvent},result.thumbnail?/*#__PURE__*/React.createElement("img",{className:"searchbox-result-thumbnail",onError:function onError(ev){return _this.loadFallbackResultImage(ev,result)},src:result.thumbnail}):null,/*#__PURE__*/React.createElement(Icon,{className:"searchbox-result-openicon",icon:"open"}),/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label",dangerouslySetInnerHTML:{__html:result.text.replace(/<br\s*\/>/ig," ")},title:(_result$label4=result.label)!==null&&_result$label4!==void 0?_result$label4:result.text}),result.theme&&addThemes?/*#__PURE__*/React.createElement(Icon,{icon:"plus",onClick:function onClick(ev){MiscUtils.killEvent(ev);_this.addThemeLayers(result.layer);_this.blur()},title:LocaleUtils.tr("themeswitcher.addtotheme")}):null)});_defineProperty(_this,"selectPlaceResult",function(provider,group,result){var resultText=result.text.replace(/<\/?\w+\s*\/?>/g,"");if(_this.props.searchOptions.showResultInSearchText!==false){// Show selected result text in search field
|
|
7
|
+
*/import React from"react";import{connect}from"react-redux";import axios from"axios";import classnames from"classnames";import isEmpty from"lodash.isempty";import pointInPolygon from"point-in-polygon";import polygonIntersectTest from"polygon-intersect-test";import PropTypes from"prop-types";import{createSelector}from"reselect";import{v1 as uuidv1}from"uuid";import{LayerRole,addLayerFeatures,addThemeSublayer,changeLayerProperty,removeLayer,addLayer}from"../actions/layers";import{logAction}from"../actions/logging";import{panTo,zoomToExtent,zoomToPoint}from"../actions/map";import{setCurrentTask}from"../actions/task";import{setCurrentTheme}from"../actions/theme";import{openExternalUrl,showNotification}from"../actions/windows";import searchProvidersSelector from"../selectors/searchproviders";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import LayerUtils from"../utils/LayerUtils";import LocaleUtils from"../utils/LocaleUtils";import MapUtils from"../utils/MapUtils";import MiscUtils from"../utils/MiscUtils";import{UrlParams}from"../utils/PermaLinkUtils";import{FulltextSearch,SearchResultType}from"../utils/SearchProviders";import VectorLayerUtils from"../utils/VectorLayerUtils";import Icon from"./Icon";import MapSelection from"./MapSelection";import ButtonBar from"./widgets/ButtonBar";import ComboBox from"./widgets/ComboBox";import InputContainer from"./widgets/InputContainer";import NumberInput from"./widgets/NumberInput";import Spinner from"./widgets/Spinner";import"./style/SearchBox.css";var SearchBox=/*#__PURE__*/function(_React$Component){function SearchBox(props){var _this;_classCallCheck(this,SearchBox);_this=_callSuper(this,SearchBox,[props]);_defineProperty(_this,"state",{searchText:"",searchSession:null,pendingSearches:[],recentSearches:[],searchResults:{},resultsVisible:false,collapsedSections:{},expandedLayerGroup:null,activeLayerInfo:null,filterOptionsVisible:false,selectedProvider:"",filterRegionName:"",filterGeomType:null,filterGeometry:null});_defineProperty(_this,"renderFilterOptions",function(){var _this$state$filterGeo;if(!_this.state.filterOptionsVisible){return null}var providerSelection=/*#__PURE__*/React.createElement(ComboBox,{onChange:function onChange(value){return _this.setState({selectedProvider:value})},value:_this.state.selectedProvider},/*#__PURE__*/React.createElement("div",{value:""},LocaleUtils.tr("search.all")),Object.entries(_this.props.searchProviders).map(function(_ref){var _prov$params,_prov$label;var _ref2=_slicedToArray(_ref,2),key=_ref2[0],prov=_ref2[1];return/*#__PURE__*/React.createElement("div",{key:key,value:key},(prov===null||prov===void 0||(_prov$params=prov.params)===null||_prov$params===void 0?void 0:_prov$params.title)||((_prov$label=prov.label)!==null&&_prov$label!==void 0?_prov$label:LocaleUtils.tr(prov.labelmsgid)))}));var searchRegionSelection=null;var searchRegions=ConfigUtils.getConfigProp("searchFilterRegions",_this.props.theme);if(!isEmpty(searchRegions)){searchRegionSelection=/*#__PURE__*/React.createElement(ComboBox,{onChange:function onChange(value){return _this.setFilterRegion(value,searchRegions)},value:_this.state.filterRegionName},/*#__PURE__*/React.createElement("div",{value:""},LocaleUtils.tr("search.none")),searchRegions.map(function(group,gidx){return[/*#__PURE__*/React.createElement("div",{"data-group-header":gidx,disabled:true,key:"group"+gidx},group.name)].concat(_toConsumableArray(group.items.map(function(item,idx){return/*#__PURE__*/React.createElement("div",{"data-group":gidx,key:item.name,value:gidx+":"+idx+":"+item.name},item.name)})))}))}var filterButtons=[{key:"Polygon",tooltip:LocaleUtils.tr("redlining.polygon"),icon:"polygon",label:LocaleUtils.tr("redlining.polygon")},{key:"Circle",tooltip:LocaleUtils.tr("redlining.circle"),icon:"circle",label:LocaleUtils.tr("redlining.circle")}];return/*#__PURE__*/React.createElement("div",{className:"searchbox-filter-options"},/*#__PURE__*/React.createElement("table",null,/*#__PURE__*/React.createElement("tbody",null,/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("search.providerselection"),":"),/*#__PURE__*/React.createElement("td",null,providerSelection)),/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("search.limittoarea"),":"),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement("div",{className:"searchbox-filter-options-geometry controlgroup"},/*#__PURE__*/React.createElement(ButtonBar,{active:_this.state.filterGeomType,buttons:filterButtons,onClick:_this.setFilterGeomType}),searchRegionSelection,/*#__PURE__*/React.createElement("button",{className:"button",onClick:_this.clearFilter,title:LocaleUtils.tr("search.clearfilter")},/*#__PURE__*/React.createElement(Icon,{icon:"clear"}))))),_this.state.filterGeomType==="Circle"?/*#__PURE__*/React.createElement("tr",null,/*#__PURE__*/React.createElement("td",null,LocaleUtils.tr("search.circleradius"),":"),/*#__PURE__*/React.createElement("td",null,/*#__PURE__*/React.createElement(NumberInput,{disabled:!_this.state.filterGeometry,min:1,mobile:true,onChange:_this.setCircleRadius,suffix:" m",value:((_this$state$filterGeo=_this.state.filterGeometry)===null||_this$state$filterGeo===void 0?void 0:_this$state$filterGeo.radius)||0}))):null)))});_defineProperty(_this,"setFilterGeomType",function(geomType){_this.setState({filterGeomType:geomType,filterRegionName:"",filterGeometry:null})});_defineProperty(_this,"setFilterRegion",function(value,searchRegions){if(value){var parts=value.split(":");var item=searchRegions[parts[0]].items[parts[1]];var geometry={type:"Polygon",coordinates:[item.coordinates]};var mapGeometry=VectorLayerUtils.reprojectGeometry(geometry,item.crs,_this.props.map.projection);_this.setState({filterGeomType:null,filterRegionName:value,filterGeometry:mapGeometry})}else{_this.setState({filterGeomType:null,filterRegionName:"",filterGeometry:null})}});_defineProperty(_this,"setCircleRadius",function(value){_this.setState(function(state){return{filterGeometry:_objectSpread(_objectSpread({},state.filterGeometry),{},{radius:value})}})});_defineProperty(_this,"clearFilter",function(){_this.setState({filterGeomType:null,filterRegionName:"",filterGeometry:null})});_defineProperty(_this,"renderResultsMenu",function(){if(!_this.state.resultsVisible){return false}var children=[_this.renderRecentResults(),_this.renderFilters(),_this.renderResults()];children=children.filter(function(child){return!isEmpty(child)});if(isEmpty(children)){if(isEmpty(_this.state.pendingSearches)&&_this.state.searchResults.query_text){children=/*#__PURE__*/React.createElement("div",{className:"searchbox-noresults"},LocaleUtils.tr("search.noresults"))}else{return null}}return/*#__PURE__*/React.createElement("div",{className:"searchbox-results",onMouseDown:_this.setPreventBlur,ref:MiscUtils.setupKillTouchEvents},children)});_defineProperty(_this,"renderRecentResults",function(){var recentSearches=_this.state.recentSearches.filter(function(entry){return entry.toLowerCase().includes(_this.state.searchText.toLowerCase())});if(isEmpty(recentSearches)||recentSearches.length===1&&recentSearches[0].toLowerCase()===_this.state.searchText.toLowerCase()){return null}return/*#__PURE__*/React.createElement("div",{key:"recent"},/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-title",onClick:function onClick(){return _this.toggleSection("recent")},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement(Icon,{icon:_this.isCollapsed("recent")?"expand":"collapse"}),LocaleUtils.tr("search.recent")),!_this.isCollapsed("recent")?/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-body"},recentSearches.map(function(entry,idx){return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:"r"+idx,onClick:function onClick(){return _this.searchTextChanged(entry)},onMouseDown:MiscUtils.killEvent},entry)})):null)});_defineProperty(_this,"renderFilters",function(){return Object.entries(_this.state.searchResults).map(function(_ref3){var _ref4=_slicedToArray(_ref3,2),provider=_ref4[0],results=_ref4[1];if(isEmpty(results.result_counts)||results.result_counts.length<2){return null}var collapsed=_this.isCollapsed("filter",false);var values=results.result_counts.map(function(entry){return entry.filterword+": "+_this.state.searchResults.query_text});values.sort(function(a,b){return a.localeCompare(b)});return/*#__PURE__*/React.createElement("div",{key:"filter"},/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-title",onClick:function onClick(){return _this.toggleSection("filter")},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement(Icon,{icon:collapsed?"expand":"collapse"}),LocaleUtils.tr("search.filter")),!collapsed?/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-body"},values.map(function(value,idx){return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:"f"+idx,onClick:function onClick(){return _this.searchTextChanged(value,true,provider)},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label"},value))})):null)}).filter(Boolean)});_defineProperty(_this,"renderResults",function(){var resultRenderers=_defineProperty(_defineProperty(_defineProperty({},SearchResultType.PLACE,_this.renderPlaceResult),SearchResultType.THEMELAYER,_this.renderThemeLayerResult),SearchResultType.THEME,_this.renderThemeResult);var layersBeforePlaces=_this.props.searchOptions.showLayerResultsBeforePlaces;var priorities=_defineProperty(_defineProperty(_defineProperty({},SearchResultType.PLACE,layersBeforePlaces?0:2),SearchResultType.THEMELAYER,layersBeforePlaces?2:1),SearchResultType.THEME,layersBeforePlaces?1:0);var results=Object.keys(_this.props.searchProviders).reduce(function(result,provider){if(!_this.state.searchResults[provider]){return result}return result.concat(_this.state.searchResults[provider].results.map(function(group){var _group$type,_group$type2,_group$title,_group$title2;var sectionId=provider+":"+group.id;var moreLabel=null;if(group.resultCount>0&&group.resultCount>group.items.length){moreLabel=LocaleUtils.tr("search.more",group.resultCount-group.items.length)}else if(group.resultCount===-1){moreLabel=LocaleUtils.tr("search.unknownmore")}if(group.items.length===0){return null}var renderer=resultRenderers[(_group$type=group.type)!==null&&_group$type!==void 0?_group$type:SearchResultType.PLACE];if(!renderer){return null}var priority=priorities[(_group$type2=group.type)!==null&&_group$type2!==void 0?_group$type2:SearchResultType.PLACE];return{priority:priority*1000000+(group.priority||0),title:(_group$title=group.title)!==null&&_group$title!==void 0?_group$title:LocaleUtils.tr(group.titlemsgid),tree:/*#__PURE__*/React.createElement("div",{key:sectionId},/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-title",onClick:function onClick(){return _this.toggleSection(sectionId)},onMouseDown:MiscUtils.killEvent},/*#__PURE__*/React.createElement(Icon,{icon:_this.isCollapsed(sectionId)?"expand":"collapse"}),/*#__PURE__*/React.createElement("span",null,(_group$title2=group.title)!==null&&_group$title2!==void 0?_group$title2:LocaleUtils.tr(group.titlemsgid))),!_this.isCollapsed(sectionId)?/*#__PURE__*/React.createElement("div",{className:"searchbox-results-section-body"},group.items.map(function(entry){return renderer(provider,group,entry)}),moreLabel?/*#__PURE__*/React.createElement("div",{className:"searchbox-more-results"},moreLabel):null):null)}}))},[]).filter(Boolean);results.sort(function(a,b){if(b.priority!==a.priority){return b.priority-a.priority}else{return b.title.localeCompare(a.title)}});return isEmpty(results)?null:results.map(function(entry){return entry.tree})});_defineProperty(_this,"renderPlaceResult",function(provider,group,result){var _result$label;var key=provider+":"+group.id+":"+result.id;return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:key,onClick:function onClick(){_this.selectPlaceResult(provider,group,result);_this.blur()},onMouseDown:MiscUtils.killEvent},result.thumbnail?/*#__PURE__*/React.createElement("img",{className:"searchbox-result-thumbnail",onError:function onError(ev){return _this.loadFallbackResultImage(ev,result)},src:result.thumbnail}):null,/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label",dangerouslySetInnerHTML:{__html:result.text.replace(/<br\s*\/>/ig," ")},title:(_result$label=result.label)!==null&&_result$label!==void 0?_result$label:result.text}),result.externalLink?/*#__PURE__*/React.createElement(Icon,{icon:"info-sign",onClick:function onClick(ev){var _result$label2;MiscUtils.killEvent(ev);_this.openUrl(result.externalLink,result.target,(_result$label2=result.label)!==null&&_result$label2!==void 0?_result$label2:result.text)}}):null)});_defineProperty(_this,"renderThemeLayerResult",function(provider,group,result){var _result$label3,_result$layer;var parent=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var key=provider+":"+group.id+":"+result.id;var addThemes=ConfigUtils.getConfigProp("allowAddingOtherThemes",_this.props.theme);var icon=null;if(result.sublayers){var toggleLayerGroup=function toggleLayerGroup(){_this.setState(function(state){return{expandedLayerGroup:state.expandedLayerGroup===key?null:key}})};icon=/*#__PURE__*/React.createElement(Icon,{className:"searchbox-result-thumbnail",icon:_this.state.expandedLayerGroup===key?"minus":"plus",onClick:function onClick(ev){MiscUtils.killEvent(ev);toggleLayerGroup()}})}else if(result.thumbnail){icon=/*#__PURE__*/React.createElement("img",{className:"searchbox-result-thumbnail",onError:function onError(ev){return _this.loadFallbackResultImage(ev,result)},src:result.thumbnail})}var selectResult=result.theme?_this.selectThemeResult:_this.selectThemeLayerResult;return/*#__PURE__*/React.createElement("div",{key:key},/*#__PURE__*/React.createElement("div",{className:"searchbox-result",onClick:function onClick(){selectResult(provider,group,result);_this.blur()},onMouseDown:MiscUtils.killEvent},icon,result.theme?/*#__PURE__*/React.createElement(Icon,{className:"searchbox-result-openicon",icon:"open"}):null,/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label",dangerouslySetInnerHTML:{__html:result.text.replace(/<br\s*\/>/ig," ")},title:(_result$label3=result.label)!==null&&_result$label3!==void 0?_result$label3:result.text}),result.theme&&addThemes?/*#__PURE__*/React.createElement(Icon,{icon:"plus",onClick:function onClick(ev){MiscUtils.killEvent(ev);_this.selectThemeLayerResult(provider,group,result);_this.blur()},title:LocaleUtils.tr("themeswitcher.addtotheme")}):null,result.info?/*#__PURE__*/React.createElement(Icon,{icon:"info-sign",onClick:function onClick(ev){MiscUtils.killEvent(ev);_this.toggleLayerInfo(provider,group,result,key,parent)}}):null),_this.state.activeLayerInfo===key?/*#__PURE__*/React.createElement("div",{className:"searchbox-result-abstract",dangerouslySetInnerHTML:{__html:MiscUtils.addLinkAnchors(((_result$layer=result.layer)===null||_result$layer===void 0?void 0:_result$layer["abstract"])||"")||LocaleUtils.tr("search.nodescription")}}):null,_this.state.expandedLayerGroup===key?/*#__PURE__*/React.createElement("div",{className:"searchbox-result-group"},result.sublayers.map(function(sublayer){return _this.renderThemeLayerResult(provider,group,sublayer,result.id)})):null)});_defineProperty(_this,"renderThemeResult",function(provider,group,result){var _result$label4;var addThemes=ConfigUtils.getConfigProp("allowAddingOtherThemes",_this.props.theme);return/*#__PURE__*/React.createElement("div",{className:"searchbox-result",key:provider+":"+group.id+":"+result.id,onClick:function onClick(){_this.selectThemeResult(provider,group,result);_this.blur()},onMouseDown:MiscUtils.killEvent},result.thumbnail?/*#__PURE__*/React.createElement("img",{className:"searchbox-result-thumbnail",onError:function onError(ev){return _this.loadFallbackResultImage(ev,result)},src:result.thumbnail}):null,/*#__PURE__*/React.createElement(Icon,{className:"searchbox-result-openicon",icon:"open"}),/*#__PURE__*/React.createElement("span",{className:"searchbox-result-label",dangerouslySetInnerHTML:{__html:result.text.replace(/<br\s*\/>/ig," ")},title:(_result$label4=result.label)!==null&&_result$label4!==void 0?_result$label4:result.text}),result.theme&&addThemes?/*#__PURE__*/React.createElement(Icon,{icon:"plus",onClick:function onClick(ev){MiscUtils.killEvent(ev);_this.addThemeLayers(result.layer);_this.blur()},title:LocaleUtils.tr("themeswitcher.addtotheme")}):null)});_defineProperty(_this,"selectPlaceResult",function(provider,group,result){var resultText=result.text.replace(/<\/?\w+\s*\/?>/g,"");if(_this.props.searchOptions.showResultInSearchText!==false){// Show selected result text in search field
|
|
8
8
|
_this.setState({searchText:resultText,searchResults:_defineProperty({query_text:resultText},provider,{results:[_objectSpread(_objectSpread({},group),{},{items:[result]})],tot_result_count:1})})}_this.updateRecentSearches();if(_this.props.searchProviders[provider].getResultGeometry){_this.props.searchProviders[provider].getResultGeometry(result,function(response){_this.showResultGeometry(result,response)},axios)}else{// Display marker
|
|
9
|
-
_this.showResultGeometry(result,{feature:{type:"Feature",geometry:{type:"Point",coordinates:[result.x,result.y]}},crs:result.crs})}if(result.dataproduct_id){var quot=typeof result.id==="string"?"\"":"";var filter="[[\"".concat(result.id_field_name,"\",\"=\", ").concat(quot).concat(result.id).concat(quot,"]]");UrlParams.updateParams({hp:result.dataproduct_id,hf:filter,st:resultText})}else{UrlParams.updateParams({hp:undefined,hf:undefined,st:resultText})}_this.props.logAction("SEARCH_TEXT",{searchText:_this.state.searchText});_this.props.logAction("SEARCH_RESULT_SELECTED",{place:resultText})
|
|
9
|
+
_this.showResultGeometry(result,{feature:{type:"Feature",geometry:{type:"Point",coordinates:[result.x,result.y]}},crs:result.crs})}if(result.dataproduct_id){var quot=typeof result.id==="string"?"\"":"";var filter="[[\"".concat(result.id_field_name,"\",\"=\", ").concat(quot).concat(result.id).concat(quot,"]]");UrlParams.updateParams({hp:result.dataproduct_id,hf:filter,st:resultText})}else{UrlParams.updateParams({hp:undefined,hf:undefined,st:resultText})}_this.props.logAction("SEARCH_TEXT",{searchText:_this.state.searchText});_this.props.logAction("SEARCH_RESULT_SELECTED",{place:resultText});// Enable layer
|
|
10
|
+
if(result.layername){var path=[];var sublayer=null;var layer=_this.props.layers.find(function(l){return l.role===LayerRole.THEME&&(sublayer=LayerUtils.searchSubLayer(l,"name",result.layername,path))});if(layer&&sublayer){_this.props.changeLayerProperty(layer.uuid,"visibility",true,path)}}});_defineProperty(_this,"selectThemeLayerResult",function(provider,group,result){if(result.layer){if(result.theme){_this.addThemeLayers(result.layer)}else{_this.props.addThemeSublayer(result.layer)}// Show layer tree to notify user that something has happened
|
|
10
11
|
_this.props.setCurrentTask("LayerTree")}else if(_this.props.searchProviders[provider].getLayerDefinition){_this.props.searchProviders[provider].getLayerDefinition(result,function(layer){if(layer){if(result.theme){_this.addThemeLayers(layer)}else{_this.props.addThemeSublayer({sublayers:[layer]})}// Show layer tree to notify user that something has happened
|
|
11
12
|
_this.props.setCurrentTask("LayerTree")}},axios)}});_defineProperty(_this,"selectThemeResult",function(provider,group,result){_this.props.setCurrentTheme(result.theme,_this.props.themes);if(_this.props.searchOptions.showLayerAfterChangeTheme){_this.props.setCurrentTask("LayerTree")}});_defineProperty(_this,"loadFallbackResultImage",function(ev,item){var _item$type;if(((_item$type=item.type)!==null&&_item$type!==void 0?_item$type:SearchResultType.PLACE)===SearchResultType.PLACE){var iconPath=ConfigUtils.getAssetsPath()+"/img/search/";if(!ev.target.src.endsWith(iconPath+"feature.svg")){ev.target.src=iconPath+"feature.svg"}}});_defineProperty(_this,"toggleLayerInfo",function(provider,group,result,key,parent){var setResultLayerAndActiveInfo=function setResultLayerAndActiveInfo(layer){// Embed returned layer into result item, so that layer info is read from item.layer.abstract
|
|
12
13
|
_this.setState(function(state){return{searchResults:_objectSpread(_objectSpread({},state.searchResults),{},_defineProperty({},provider,_objectSpread(_objectSpread({},state.searchResults[provider]),{},{results:state.searchResults[provider].results.map(function(g){if(g.id===group.id){return _objectSpread(_objectSpread({},g),{},{items:g.items.map(function(item){if(item.id===result.id){return _objectSpread(_objectSpread({},item),{},{layer:layer})}else if(item.id===parent){return _objectSpread(_objectSpread({},item),{},{sublayers:item.sublayers.map(function(sublayer){if(sublayer.id===result.id){return _objectSpread(_objectSpread({},sublayer),{},{layer:layer})}else{return sublayer}})})}else{return item}})})}else{return g}})}))),activeLayerInfo:key}})};_this.setState(function(state){if(state.activeLayerInfo===key){return{activeLayerInfo:null}}else{if(!result.layer&&_this.props.searchProviders[provider].getLayerDefinition){_this.props.searchProviders[provider].getLayerDefinition(result,setResultLayerAndActiveInfo,axios);return{}}else{return{activeLayerInfo:key}}}})});_defineProperty(_this,"setPreventBlur",function(){_this.preventBlur=true;setTimeout(function(){_this.preventBlur=false;return false},100)});_defineProperty(_this,"toggleSection",function(key){return _this.setState(function(state){var _newCollapsedSections;var newCollapsedSections=_objectSpread({},state.collapsedSections);var deflt=_this.props.searchOptions.sectionsDefaultCollapsed||false;newCollapsedSections[key]=!((_newCollapsedSections=newCollapsedSections[key])!==null&&_newCollapsedSections!==void 0?_newCollapsedSections:deflt);return{collapsedSections:newCollapsedSections}})});_defineProperty(_this,"isCollapsed",function(section){var _this$state$collapsed;var deflt=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;deflt=deflt!==null&&deflt!==void 0?deflt:_this.props.searchOptions.sectionsDefaultCollapsed||false;return(_this$state$collapsed=_this.state.collapsedSections[section])!==null&&_this$state$collapsed!==void 0?_this$state$collapsed:deflt});_defineProperty(_this,"toggleFilterOptions",function(visible){_this.setState({filterOptionsVisible:visible})});_defineProperty(_this,"searchTextChanged",function(text){var expandSections=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var provider=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(_this.props.layers.find(function(layer){return layer.id==="searchselection"})){_this.props.removeLayer("searchselection")}var newState={searchText:text,expandedLayerGroup:null,activeLayerInfo:null,pendingSearches:[],searchSession:null};if(expandSections){newState.collapsedSections={}}_this.setState(newState);clearTimeout(_this.searchTimeout);_this.searchTimeout=setTimeout(function(){return _this.startSearch(provider)},250)});_defineProperty(_this,"onFocus",function(){_this.setState({resultsVisible:true});if(_this.searchBox){_this.searchBox.select()}if(isEmpty(_this.state.searchResults)&&_this.props.theme){_this.startSearch()}if(_this.props.searchOptions.allowSearchFilters){_this.toggleFilterOptions(false)}});_defineProperty(_this,"onBlur",function(){if(_this.preventBlur&&_this.searchBox){_this.searchBox.focus()}else{_this.setState({resultsVisible:false,collapsedSections:{},expandedLayerGroup:null,activeLayerInfo:null})}});_defineProperty(_this,"clear",function(){_this.blur();_this.setState({searchText:"",searchResults:{},selectedProvider:"",filterRegionName:"",filterGeometry:null});_this.props.removeLayer("searchselection");UrlParams.updateParams({hp:undefined,hf:undefined,st:undefined})});_defineProperty(_this,"startSearch",function(){var _this$state$filterGeo2;var provider=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;var uniquePlaceResult=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var availableProviders=_this.props.searchProviders;var selectedProvider=provider!==null&&provider!==void 0?provider:_this.state.selectedProvider;if(selectedProvider){availableProviders=_defineProperty({},selectedProvider,_this.props.searchProviders[selectedProvider])}// eslint-disable-next-line
|
|
13
14
|
var searchText=_this.state.searchText.trim();if(isEmpty(searchText)){_this.setState({searchResults:{}});return}var searchSession=uuidv1();_this.setState({searchResults:{query_text:searchText},searchSession:searchSession,pendingSearches:Object.keys(availableProviders)});var searchParams={mapcrs:_this.props.map.projection,displaycrs:_this.props.map.displayCrs,lang:LocaleUtils.lang(),limit:_this.props.searchOptions.resultLimit,filterPoly:(_this$state$filterGeo2=_this.state.filterGeometry)===null||_this$state$filterGeo2===void 0||(_this$state$filterGeo2=_this$state$filterGeo2.coordinates)===null||_this$state$filterGeo2===void 0?void 0:_this$state$filterGeo2[0],filterBBox:_this.state.filterGeometry?VectorLayerUtils.computeFeatureBBox(_this.state.filterGeometry):null};Object.entries(availableProviders).forEach(function(_ref5){var _ref6=_slicedToArray(_ref5,2),provKey=_ref6[0],prov=_ref6[1];prov.onSearch(searchText,_objectSpread(_objectSpread({cfgParams:prov.cfgParams},prov.params),searchParams),function(response){var results=prov.handlesGeomFilter?response.results:_this.filterProviderResults(response.results);var totResultCount=results.reduce(function(tot,group){var _group$resultCount;return tot+((_group$resultCount=group.resultCount)!==null&&_group$resultCount!==void 0?_group$resultCount:group.items.length)},0);if(uniquePlaceResult){// If looking for unique place result, filter non-place results
|
|
14
|
-
results=results.filter(function(group){var _group$type3;return((_group$type3=group.type)!==null&&_group$type3!==void 0?_group$type3:SearchResultType.PLACE)===SearchResultType.PLACE})}_this.setState(function(state){if(searchSession!==state.searchSession){return{}}var searchResults=_objectSpread(_objectSpread({},state.searchResults),{},_defineProperty({},provKey,{results:results,result_counts:response.result_counts,tot_result_count:totResultCount}));var newPendingSearches=state.pendingSearches.filter(function(entry){return entry!==provKey});if(isEmpty(newPendingSearches)&&uniquePlaceResult){
|
|
15
|
-
|
|
15
|
+
results=results.filter(function(group){var _group$type3;return((_group$type3=group.type)!==null&&_group$type3!==void 0?_group$type3:SearchResultType.PLACE)===SearchResultType.PLACE})}_this.setState(function(state){if(searchSession!==state.searchSession){return{}}var searchResults=_objectSpread(_objectSpread({},state.searchResults),{},_defineProperty({},provKey,{results:results,result_counts:response.result_counts,tot_result_count:totResultCount}));var newPendingSearches=state.pendingSearches.filter(function(entry){return entry!==provKey});if(isEmpty(newPendingSearches)&&uniquePlaceResult){var providersWithResults=Object.entries(searchResults).filter(function(_ref7){var _ref8=_slicedToArray(_ref7,2),_=_ref8[0],providerResults=_ref8[1];return providerResults.tot_result_count>0});if(providersWithResults.length===1&&providersWithResults[0][1].tot_result_count===1){var group=providersWithResults[0][1].results[0];// Avoid warning about setState called in setState
|
|
16
|
+
setTimeout(function(){_this.selectPlaceResult(providersWithResults[0][0],group,group.items[0])},0)}}return{searchResults:searchResults,pendingSearches:newPendingSearches}})},axios)})});_defineProperty(_this,"filterProviderResults",function(results){if(!_this.state.filterGeometry){return results}var filterPolygon=_this.state.filterGeometry.coordinates[0];return results.map(function(group){var _group$type4;var resultType=(_group$type4=group.type)!==null&&_group$type4!==void 0?_group$type4:SearchResultType.PLACE;if(resultType!==SearchResultType.PLACE){return group}var newItems=group.items.filter(function(item){var _item$crs;var geometry=null;var itemCrs=(_item$crs=item.crs)!==null&&_item$crs!==void 0?_item$crs:_this.props.map.projection;if(item.geometry){geometry=VectorLayerUtils.reprojectGeometry(item.geometry,itemCrs,_this.props.map.projection)}else{geometry={type:"Point",coordinates:CoordinatesUtils.reproject([item.x,item.y],itemCrs,_this.props.map.projection)}}if(geometry.type==="Polygon"){return polygonIntersectTest(geometry.coordinates[0],filterPolygon)}else if(item.bbox){var _CoordinatesUtils$rep=CoordinatesUtils.reprojectBbox(item.bbox,itemCrs,_this.props.map.projection),_CoordinatesUtils$rep2=_slicedToArray(_CoordinatesUtils$rep,4),xmin=_CoordinatesUtils$rep2[0],ymin=_CoordinatesUtils$rep2[1],xmax=_CoordinatesUtils$rep2[2],ymax=_CoordinatesUtils$rep2[3];return polygonIntersectTest([[xmin,ymin],[xmax,ymin],[xmax,ymax],[xmin,ymax],[xmin,ymin]],filterPolygon)}else if(geometry.type==="Point"){return pointInPolygon(geometry.coordinates,filterPolygon)}return true});return newItems.length>0?_objectSpread(_objectSpread({},group),{},{items:newItems}):null}).filter(Boolean)});_defineProperty(_this,"updateRecentSearches",function(){var text=_this.state.searchResults.query_text;if(text&&!_this.state.recentSearches.includes(text)){_this.setState(function(state){return{recentSearches:[text].concat(_toConsumableArray(state.recentSearches.slice(0,4)))}})}});_defineProperty(_this,"blur",function(){if(_this.searchBox){_this.searchBox.blur()}});_defineProperty(_this,"addThemeLayers",function(layer){// Check if layer is already in the LayerTree
|
|
16
17
|
var sublayers=LayerUtils.getSublayerNames(layer);var existing=_this.props.layers.find(function(l){return l.type===layer.type&&l.url===layer.url&&!isEmpty(LayerUtils.getSublayerNames(l).filter(function(v){return sublayers.includes(v)}))});if(existing){var existingLayerName=(layer.sublayers||[]).length===1?layer.sublayers[0].title:layer.title;var text=LocaleUtils.tr("search.existinglayer")+": "+existingLayerName;_this.props.showNotification("existinglayer",text)}else{_this.props.addLayer(_objectSpread(_objectSpread({},layer),{},{role:LayerRole.USERLAYER}))}if(_this.props.searchOptions.zoomToLayers&&layer.bbox){_this.props.zoomToExtent(layer.bbox.bounds,layer.bbox.crs)}// Show layer tree to notify user that something has happened
|
|
17
|
-
_this.props.setCurrentTask("LayerTree")});_defineProperty(_this,"showResultGeometry",function(item,response){var _ref10,_response$bbox,_item$crs3;var scale=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(response!==null&&response!==void 0&&response.feature){var _response$feature$fea;var features=(_response$feature$fea=response.feature.features)!==null&&_response$feature$fea!==void 0?_response$feature$fea:[response.feature];var layer={id:"searchselection",role:LayerRole.SELECTION};features.forEach(function(feature){var _response$crs,_feature$geometry,_feature$crs;feature.geometry=VectorLayerUtils.reprojectGeometry(feature.geometry,(_response$crs=response.crs)!==null&&_response$crs!==void 0?_response$crs:_this.props.map.projection,_this.props.map.projection);feature.styleName=((_feature$geometry=feature.geometry)===null||_feature$geometry===void 0?void 0:_feature$geometry.type)==="Point"?"marker":"default";feature.styleOptions=_this.props.searchOptions.highlightStyle||{};if((_feature$crs=feature.crs)!==null&&_feature$crs!==void 0&&(_feature$crs=_feature$crs.properties)!==null&&_feature$crs!==void 0&&_feature$crs.name){feature.crs=CoordinatesUtils.fromOgcUrnCrs(feature.crs.properties.name)}});// If first feature is not a point(=marker), add a marker
|
|
18
|
-
if(features[0].styleName!=="marker"&&!response.hidemarker){var _response$center,_item$crs2;
|
|
18
|
+
_this.props.setCurrentTask("LayerTree")});_defineProperty(_this,"showResultGeometry",function(item,response){var _ref10,_response$bbox,_item$crs3;var scale=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(response!==null&&response!==void 0&&response.feature){var _response$feature$fea;var features=(_response$feature$fea=response.feature.features)!==null&&_response$feature$fea!==void 0?_response$feature$fea:[response.feature];var layer={id:"searchselection",role:LayerRole.SELECTION};features.forEach(function(feature){var _response$crs,_feature$geometry,_feature$crs;feature.geometry=VectorLayerUtils.reprojectGeometry(feature.geometry,(_response$crs=response.crs)!==null&&_response$crs!==void 0?_response$crs:_this.props.map.projection,_this.props.map.projection);feature.styleName=((_feature$geometry=feature.geometry)===null||_feature$geometry===void 0?void 0:_feature$geometry.type)==="Point"&&_this.props.searchOptions.showHighlightMarker?"marker":"default";feature.styleOptions=_this.props.searchOptions.highlightStyle||{};if((_feature$crs=feature.crs)!==null&&_feature$crs!==void 0&&(_feature$crs=_feature$crs.properties)!==null&&_feature$crs!==void 0&&_feature$crs.name){feature.crs=CoordinatesUtils.fromOgcUrnCrs(feature.crs.properties.name)}});// If first feature is not a point(=marker), add a marker
|
|
19
|
+
if(features[0].styleName!=="marker"&&!response.hidemarker&&_this.props.searchOptions.showHighlightMarker){var _response$center,_item$crs2;var center=CoordinatesUtils.reproject((_response$center=response.center)!==null&&_response$center!==void 0?_response$center:[item.x,item.y],(_item$crs2=item.crs)!==null&&_item$crs2!==void 0?_item$crs2:_this.props.map.projection,_this.props.map.projection);features.unshift({geometry:{type:"Point",coordinates:center},styleName:"marker"})}// Label first feature
|
|
19
20
|
if(!_this.props.searchOptions.hideResultLabels){var _ref9,_item$label;var label=((_ref9=(_item$label=item.label)!==null&&_item$label!==void 0?_item$label:item.text)!==null&&_ref9!==void 0?_ref9:"").replace(/<\/?\w+\s*\/?>/g,"");features[0].properties=_objectSpread(_objectSpread({},features[0].properties),{},{label:label})}// Mark first feature as searchmarker
|
|
20
|
-
features[0].id="searchmarker";_this.props.addLayerFeatures(layer,features,true)}var bbox=(_ref10=(_response$bbox=response.bbox)!==null&&_response$bbox!==void 0?_response$bbox:item.bbox)!==null&&_ref10!==void 0?_ref10:[item.x,item.y,item.x,item.y];bbox=CoordinatesUtils.reprojectBbox(bbox,(_item$crs3=item.crs)!==null&&_item$crs3!==void 0?_item$crs3:_this.props.map.projection,_this.props.map.projection);_this.zoomToResultBBox(bbox,scale)});_defineProperty(_this,"zoomToResultBBox",function(bbox,scale){var zoom=0;if(scale){zoom=MapUtils.computeZoom(_this.props.map.scales,scale)}else{var maxZoom=MapUtils.computeZoom(_this.props.map.scales,_this.props.theme.minSearchScaleDenom||_this.props.searchOptions.minScaleDenom);if(bbox[0]!==bbox[2]&&bbox[1]!==bbox[3]){zoom=Math.max(0,MapUtils.getZoomForExtent(bbox,_this.props.map.resolutions,_this.props.map.size,0,maxZoom+1)-1)}else{zoom=maxZoom}}var x=0.5*(bbox[0]+bbox[2]);var y=0.5*(bbox[1]+bbox[3]);_this.props.zoomToPoint([x,y],zoom,_this.props.map.projection)});_defineProperty(_this,"
|
|
21
|
-
var bbox=CoordinatesUtils.reprojectBbox(data.bbox,data.crs.properties.name,_this.props.map.projection);var zoom=0;if(scale){zoom=MapUtils.computeZoom(_this.props.map.scales,scale)}else{var maxZoom=MapUtils.computeZoom(_this.props.map.scales,_this.props.theme.minSearchScaleDenom||_this.props.searchOptions.minScaleDenom);zoom=Math.max(0,MapUtils.getZoomForExtent(bbox,_this.props.map.resolutions,_this.props.map.size,0,maxZoom+1)-1)}var x=0.5*(bbox[0]+bbox[2]);var y=0.5*(bbox[1]+bbox[3]);_this.props.zoomToPoint([x,y],zoom,_this.props.map.projection);// Add result geometry
|
|
22
|
-
var layer={id:"searchselection",role:LayerRole.SELECTION};var _iterator=_createForOfIteratorHelper(data.features),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var feature=_step.value;feature.geometry=VectorLayerUtils.reprojectGeometry(feature.geometry,data.crs.properties.name,_this.props.map.projection)}}catch(err){_iterator.e(err)}finally{_iterator.f()}if(!isEmpty(data.features)){var _data$features$0$geom;var styleName=((_data$features$0$geom=data.features[0].geometry)===null||_data$features$0$geom===void 0?void 0:_data$features$0$geom.type)==="Point"?"marker":"default";data.features[0].properties=_objectSpread(_objectSpread({},data.features[0].properties),{},{label:label});data.features[0].id="searchmarker";data.features[0].styleName=styleName;data.features[0].styleOptions=_this.props.searchOptions.highlightStyle||{}}_this.props.addLayerFeatures(layer,data.features,true)});_defineProperty(_this,"openUrl",function(url,target,title){if(target==="iframe"){target=":iframedialog:externallinkiframe"}_this.props.openExternalUrl(url,target,{title:title})});_this.searchBox=null;_this.searchTimeout=null;_this.preventBlur=false;return _this}_inherits(SearchBox,_React$Component);return _createClass(SearchBox,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){var _this2=this;// Restore highlight from URL as soon as theme is loaded
|
|
21
|
+
features[0].id="searchmarker";_this.props.addLayerFeatures(layer,features,true)}var bbox=(_ref10=(_response$bbox=response.bbox)!==null&&_response$bbox!==void 0?_response$bbox:item.bbox)!==null&&_ref10!==void 0?_ref10:[item.x,item.y,item.x,item.y];bbox=CoordinatesUtils.reprojectBbox(bbox,(_item$crs3=item.crs)!==null&&_item$crs3!==void 0?_item$crs3:_this.props.map.projection,_this.props.map.projection);_this.zoomToResultBBox(bbox,scale)});_defineProperty(_this,"zoomToResultBBox",function(bbox,scale){var zoom=0;if(scale){zoom=MapUtils.computeZoom(_this.props.map.scales,scale)}else{var maxZoom=MapUtils.computeZoom(_this.props.map.scales,_this.props.theme.minSearchScaleDenom||_this.props.searchOptions.minScaleDenom);if(bbox[0]!==bbox[2]&&bbox[1]!==bbox[3]){zoom=Math.max(0,MapUtils.getZoomForExtent(bbox,_this.props.map.resolutions,_this.props.map.size,0,maxZoom+1)-1)}else{zoom=maxZoom}}var x=0.5*(bbox[0]+bbox[2]);var y=0.5*(bbox[1]+bbox[3]);_this.props.zoomToPoint([x,y],zoom,_this.props.map.projection)});_defineProperty(_this,"openUrl",function(url,target,title){if(target==="iframe"){target=":iframedialog:externallinkiframe"}_this.props.openExternalUrl(url,target,{title:title})});_this.searchBox=null;_this.searchTimeout=null;_this.preventBlur=false;return _this}_inherits(SearchBox,_React$Component);return _createClass(SearchBox,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){var _this2=this;// Restore highlight from URL as soon as theme is loaded
|
|
23
22
|
if(this.props.theme&&!prevProps.theme){var hp=this.props.startupParams.hp;var hf=this.props.startupParams.hf;var st=this.props.startupParams.st||this.props.startupParams.ht||"";if(hp&&(hf||st)){this.setState({searchText:st});FulltextSearch.handleHighlightParameters(hp,hf,st,function(item,result){_this2.showResultGeometry(item,result,_this2.props.startupParams.s)})}else{this.setState({searchText:st},function(){return _this2.startSearch(null,true)})}UrlParams.updateParams({hp:undefined,hf:undefined,ht:undefined,st:undefined})}else if(this.props.theme!==prevProps.theme){this.clear()}// Trigger search when closing filter options
|
|
24
|
-
if(!this.state.filterOptionsVisible&&prevState.filterOptionsVisible){this.searchTextChanged(this.state.searchText)}
|
|
25
|
-
if(this.state.pendingSearches.length===0&&prevState.pendingSearches.length>0&&this.state.searchResults.zoomToUniqueResult){// eslint-disable-next-line no-unused-vars
|
|
26
|
-
var groupsWithResults=Object.entries(this.state.searchResults).filter(function(_ref11){var _ref12=_slicedToArray(_ref11,2),key=_ref12[0],value=_ref12[1];return value.tot_result_count>0});if(groupsWithResults.length===1&&groupsWithResults[0][1].tot_result_count===1){var group=groupsWithResults[0];this.selectProviderResult(group[1].results[0],group[1].results[0].items[0],group[0])}}}},{key:"render",value:function render(){var _this3=this;var placeholder=LocaleUtils.tr("search.placeholder");var filterButtonClasses=classnames({"button":true,"searchbox-filter-button":true,"pressed":this.state.filterOptionsVisible||this.state.selectedProvider||this.state.filterGeometry});return[/*#__PURE__*/React.createElement("div",{className:"SearchBox",key:"SearchBox"},/*#__PURE__*/React.createElement(InputContainer,{className:"searchbox-field"},/*#__PURE__*/React.createElement(Icon,{icon:"search",role:"prefix"}),/*#__PURE__*/React.createElement("input",{onBlur:this.onBlur,onChange:function onChange(ev){return _this3.searchTextChanged(ev.target.value)},onFocus:this.onFocus,placeholder:placeholder,ref:function ref(el){_this3.searchBox=el},role:"input",type:"text",value:this.state.searchText}),this.state.pendingSearches.length>0?/*#__PURE__*/React.createElement(Spinner,{role:"suffix"}):/*#__PURE__*/React.createElement(Icon,{icon:"clear",onClick:this.clear,role:"suffix"})),this.props.searchOptions.allowSearchFilters?/*#__PURE__*/React.createElement("button",{className:filterButtonClasses,onClick:function onClick(){return _this3.toggleFilterOptions(!_this3.state.filterOptionsVisible)},title:LocaleUtils.tr("search.filter")},/*#__PURE__*/React.createElement(Icon,{icon:"filter"}),/*#__PURE__*/React.createElement(Icon,{icon:"chevron-down"})):null,this.renderResultsMenu(),this.renderFilterOptions()),/*#__PURE__*/React.createElement(MapSelection,{active:this.state.filterOptionsVisible&&this.state.filterGeomType!==null,geomType:this.state.filterGeomType,geometry:this.state.filterGeometry,geometryChanged:function geometryChanged(geom){return _this3.setState({filterGeometry:geom})},key:"MapSelection",measure:this.state.filterGeomType==="Circle"})]}}])}(React.Component);_defineProperty(SearchBox,"propTypes",{addLayer:PropTypes.func,addLayerFeatures:PropTypes.func,addThemeSublayer:PropTypes.func,layers:PropTypes.array,logAction:PropTypes.func,map:PropTypes.object,openExternalUrl:PropTypes.func,panTo:PropTypes.func,removeLayer:PropTypes.func,searchOptions:PropTypes.shape({allowSearchFilters:PropTypes.bool,hideResultLabels:PropTypes.bool,highlightStyle:PropTypes.object,minScaleDenom:PropTypes.number,resultLimit:PropTypes.number,sectionsDefaultCollapsed:PropTypes.bool,showLayerAfterChangeTheme:PropTypes.bool,showLayerResultsBeforePlaces:PropTypes.bool,showResultInSearchText:PropTypes.bool,zoomToLayers:PropTypes.bool}),searchProviders:PropTypes.object,setCurrentTask:PropTypes.func,setCurrentTheme:PropTypes.func,showNotification:PropTypes.func,startupParams:PropTypes.object,theme:PropTypes.object,themes:PropTypes.object,zoomToExtent:PropTypes.func,zoomToPoint:PropTypes.func});export default connect(createSelector([function(state){return state},searchProvidersSelector],function(state,searchProviders){return{map:state.map,layers:state.layers.flat,theme:state.theme.current,themes:state.theme.themes,selection:state.selection,searchProviders:searchProviders,startupParams:state.localConfig.startupParams}}),{addThemeSublayer:addThemeSublayer,addLayer:addLayer,addLayerFeatures:addLayerFeatures,removeLayer:removeLayer,setCurrentTask:setCurrentTask,zoomToExtent:zoomToExtent,zoomToPoint:zoomToPoint,panTo:panTo,logAction:logAction,setCurrentTheme:setCurrentTheme,showNotification:showNotification,openExternalUrl:openExternalUrl})(SearchBox);
|
|
23
|
+
if(!this.state.filterOptionsVisible&&prevState.filterOptionsVisible){this.searchTextChanged(this.state.searchText)}}},{key:"render",value:function render(){var _this3=this;var placeholder=LocaleUtils.tr("search.placeholder");var filterButtonClasses=classnames({"button":true,"searchbox-filter-button":true,"pressed":this.state.filterOptionsVisible||this.state.selectedProvider||this.state.filterGeometry});return[/*#__PURE__*/React.createElement("div",{className:"SearchBox",key:"SearchBox"},/*#__PURE__*/React.createElement(InputContainer,{className:"searchbox-field"},/*#__PURE__*/React.createElement(Icon,{icon:"search",role:"prefix"}),/*#__PURE__*/React.createElement("input",{onBlur:this.onBlur,onChange:function onChange(ev){return _this3.searchTextChanged(ev.target.value)},onFocus:this.onFocus,placeholder:placeholder,ref:function ref(el){_this3.searchBox=el},role:"input",type:"text",value:this.state.searchText}),this.state.pendingSearches.length>0?/*#__PURE__*/React.createElement(Spinner,{role:"suffix"}):/*#__PURE__*/React.createElement(Icon,{icon:"clear",onClick:this.clear,role:"suffix"})),this.props.searchOptions.allowSearchFilters?/*#__PURE__*/React.createElement("button",{className:filterButtonClasses,onClick:function onClick(){return _this3.toggleFilterOptions(!_this3.state.filterOptionsVisible)},title:LocaleUtils.tr("search.filter")},/*#__PURE__*/React.createElement(Icon,{icon:"filter"}),/*#__PURE__*/React.createElement(Icon,{icon:"chevron-down"})):null,this.renderResultsMenu(),this.renderFilterOptions()),/*#__PURE__*/React.createElement(MapSelection,{active:this.state.filterOptionsVisible&&this.state.filterGeomType!==null,geomType:this.state.filterGeomType,geometry:this.state.filterGeometry,geometryChanged:function geometryChanged(geom){return _this3.setState({filterGeometry:geom})},key:"MapSelection",measure:this.state.filterGeomType==="Circle"})]}}])}(React.Component);_defineProperty(SearchBox,"propTypes",{addLayer:PropTypes.func,addLayerFeatures:PropTypes.func,addThemeSublayer:PropTypes.func,changeLayerProperty:PropTypes.func,layers:PropTypes.array,logAction:PropTypes.func,map:PropTypes.object,openExternalUrl:PropTypes.func,panTo:PropTypes.func,removeLayer:PropTypes.func,searchOptions:PropTypes.shape({allowSearchFilters:PropTypes.bool,hideResultLabels:PropTypes.bool,highlightStyle:PropTypes.object,minScaleDenom:PropTypes.number,resultLimit:PropTypes.number,sectionsDefaultCollapsed:PropTypes.bool,showHighlightMarker:PropTypes.bool,showLayerAfterChangeTheme:PropTypes.bool,showLayerResultsBeforePlaces:PropTypes.bool,showResultInSearchText:PropTypes.bool,zoomToLayers:PropTypes.bool}),searchProviders:PropTypes.object,setCurrentTask:PropTypes.func,setCurrentTheme:PropTypes.func,showNotification:PropTypes.func,startupParams:PropTypes.object,theme:PropTypes.object,themes:PropTypes.object,zoomToExtent:PropTypes.func,zoomToPoint:PropTypes.func});export default connect(createSelector([function(state){return state},searchProvidersSelector],function(state,searchProviders){return{map:state.map,layers:state.layers.flat,theme:state.theme.current,themes:state.theme.themes,selection:state.selection,searchProviders:searchProviders,startupParams:state.localConfig.startupParams}}),{addThemeSublayer:addThemeSublayer,addLayer:addLayer,addLayerFeatures:addLayerFeatures,changeLayerProperty:changeLayerProperty,removeLayer:removeLayer,setCurrentTask:setCurrentTask,zoomToExtent:zoomToExtent,zoomToPoint:zoomToPoint,panTo:panTo,logAction:logAction,setCurrentTheme:setCurrentTheme,showNotification:showNotification,openExternalUrl:openExternalUrl})(SearchBox);
|
|
@@ -19,12 +19,7 @@ if(this.props.haveMapSize&&!this.themesLoaded){this.loadThemes()}}},{key:"render
|
|
|
19
19
|
if(!this.props.haveLocale||!this.props.localConfig.plugins||!this.props.localConfig.startupParams){return null}var plugins=_objectSpread(_objectSpread({},this.props.appConfig.pluginsDef.plugins),(_window$qwc2=window.qwc2)===null||_window$qwc2===void 0?void 0:_window$qwc2.__customPlugins);var pluginsConfig=this.props.localConfig.plugins;var appPluginConfig=_objectSpread({},this.props.appConfig.pluginsDef.cfg);// Inject plugins available in 3d view to View3D plugin configuration
|
|
20
20
|
appPluginConfig.View3DPlugin=_objectSpread(_objectSpread({},appPluginConfig.View3DPlugin),{},{plugins:Object.entries(plugins).reduce(function(res,_ref){var _plugin$WrappedCompon;var _ref2=_slicedToArray(_ref,2),key=_ref2[0],plugin=_ref2[1];if((_plugin$WrappedCompon=plugin.WrappedComponent)!==null&&_plugin$WrappedCompon!==void 0&&_plugin$WrappedCompon.availableIn3D||plugin.availableIn3D){return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,plugin))}return res},{})});return/*#__PURE__*/React.createElement(PluginsContainer,{plugins:plugins,pluginsAppConfig:appPluginConfig,pluginsConfig:pluginsConfig})}}])}(React.Component);_defineProperty(AppContainerComponent,"propTypes",{appConfig:PropTypes.object,defaultUrlParams:PropTypes.string,haveLocale:PropTypes.bool,haveMapSize:PropTypes.bool,localConfig:PropTypes.object,setBottombarHeight:PropTypes.func,setCurrentTask:PropTypes.func,setCurrentTheme:PropTypes.func,setTopbarHeight:PropTypes.func,showNotification:PropTypes.func,startupConfig:PropTypes.object,themesLoaded:PropTypes.func});var AppContainer=connect(function(state){var _state$localConfig$us;return{customPlugins:state.localConfig.customPlugins,// Unused, just to ensure component reacts when custom plugins change
|
|
21
21
|
haveLocale:state.locale.current!==null,haveMapSize:state.map.size!==null,defaultUrlParams:((_state$localConfig$us=state.localConfig.user_infos)===null||_state$localConfig$us===void 0?void 0:_state$localConfig$us.default_url_params)||"",localConfig:state.localConfig}},{themesLoaded:themesLoaded,setCurrentTask:setCurrentTask,setCurrentTheme:setCurrentTheme,showNotification:showNotification,setTopbarHeight:setTopbarHeight,setBottombarHeight:setBottombarHeight})(AppContainerComponent);var StandardApp=/*#__PURE__*/function(_React$Component2){function StandardApp(props){var _this3;_classCallCheck(this,StandardApp);_this3=_callSuper(this,StandardApp,[props]);_defineProperty(_this3,"state",{startupConfig:null});_defineProperty(_this3,"computeVh",function(){// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
|
22
|
-
document.documentElement.style.setProperty("--vh",window.innerHeight*0.01+"px")});_defineProperty(_this3,"
|
|
23
|
-
return}var scrollEvent=false;var element=ev.target;var direction=ev.targetTouches[0].clientY-_this3.touchY;_this3.touchY=ev.targetTouches[0].clientY;while(!scrollEvent&&element){var scrollable=element.scrollHeight>element.clientHeight;// Workaround for resizeable-window having scrollHeight > clientHeight even though it has no scrollbar
|
|
24
|
-
if(element.classList.contains("resizeable-window")){scrollable=false}if(element.type==="range"){// If it is a range element, treat it as a scroll event
|
|
25
|
-
scrollEvent=true}else if(scrollable&&element.scrollTop+element.clientHeight<element.scrollHeight&&direction<0){// User scrolls down and element is not at end of scroll
|
|
26
|
-
scrollEvent=true}else if(scrollable&&element.scrollTop>0&&direction>0){// User scrolls up and element is not at start of scroll
|
|
27
|
-
scrollEvent=true}else{element=element.parentElement}}if(!scrollEvent){ev.preventDefault()}});_defineProperty(_this3,"init",function(){// Save initial params and clear URL
|
|
22
|
+
document.documentElement.style.setProperty("--vh",window.innerHeight*0.01+"px")});_defineProperty(_this3,"init",function(){// Save initial params and clear URL
|
|
28
23
|
var initialParams=UrlParams.getParams();UrlParams.clear();// Load config.json
|
|
29
24
|
var configParams=Object.entries(initialParams).reduce(function(res,_ref3){var _ref4=_slicedToArray(_ref3,2),key=_ref4[0],value=_ref4[1];if(key.startsWith("config:")){res[key.slice(7)]=value}return res},{});ConfigUtils.loadConfiguration(configParams).then(function(config){// Merge common config into mobile/desktop config
|
|
30
25
|
var commonConfig=(config.plugins.common||[]).reduce(function(res,entry){var key=entry.name+(entry.name==="TaskButton"?"#"+(entry.cfg||{}).task:"");return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,entry))},{});config.plugins.desktop=Object.values(deepmerge(commonConfig,config.plugins.desktop.reduce(function(res,entry){var key=entry.name+(entry.name==="TaskButton"?"#"+(entry.cfg||{}).task:"");return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,entry))},{})));config.plugins.mobile=Object.values(deepmerge(commonConfig,config.plugins.mobile.reduce(function(res,entry){var key=entry.name+(entry.name==="TaskButton"?"#"+(entry.cfg||{}).task:"");return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,entry))},{})));delete config.plugins.common;// Store whether to show plugin in 2d/3d mode
|
|
@@ -32,4 +27,4 @@ var plugins=_this3.props.appConfig.pluginsDef.plugins;config.plugins.mobile.forE
|
|
|
32
27
|
var _iterator=_createForOfIteratorHelper(config.projections||[]),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var proj=_step.value;if(Proj4js.defs(proj.code)===undefined){Proj4js.defs(proj.code,proj.proj)}CoordinatesUtils.setCrsLabels(_defineProperty({},proj.code,proj.label))}}catch(err){_iterator.e(err)}finally{_iterator.f()}olProj4Register(Proj4js);StandardApp.store.dispatch(localConfigLoaded(config));// Load locale
|
|
33
28
|
var defaultLocale=_this3.props.appConfig.getDefaultLocale?_this3.props.appConfig.getDefaultLocale():"";StandardApp.store.dispatch(loadLocale(_this3.props.appConfig.defaultLocaleData,defaultLocale));// Set color scheme
|
|
34
29
|
var storedColorScheme=ConfigUtils.havePlugin("Settings")?localStorage.getItem("qwc2-color-scheme"):null;var colorScheme=initialParams.style||storedColorScheme||ConfigUtils.getConfigProp("defaultColorScheme");StandardApp.store.dispatch(setColorScheme(colorScheme));// Resolve permalink and restore settings
|
|
35
|
-
resolvePermaLink(initialParams,function(params,state,success){StandardApp.store.dispatch(setStartupParameters(params,state));_this3.setState({startupConfig:{params:params,state:state,permalinkInvalid:!success}})})})});var initialState=_this3.props.appConfig.initialState||{};StandardApp.store=createStore(ReducerIndex.reducers,initialState,_this3.props.appConfig.actionLogger);_this3.init();_this3.touchY=null;return _this3}_inherits(StandardApp,_React$Component2);return _createClass(StandardApp,[{key:"componentDidMount",value:function componentDidMount(){window.addEventListener("resize",this.computeVh);this.computeVh()}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.removeEventListener("resize",this.computeVh)}},{key:"render",value:function render(){if(!this.state.startupConfig){return null}return/*#__PURE__*/React.createElement(Provider,{store:StandardApp.store},/*#__PURE__*/React.createElement(
|
|
30
|
+
resolvePermaLink(initialParams,function(params,state,success){StandardApp.store.dispatch(setStartupParameters(params,state));_this3.setState({startupConfig:{params:params,state:state,permalinkInvalid:!success}})})})});var initialState=_this3.props.appConfig.initialState||{};StandardApp.store=createStore(ReducerIndex.reducers,initialState,_this3.props.appConfig.actionLogger);_this3.init();_this3.touchY=null;return _this3}_inherits(StandardApp,_React$Component2);return _createClass(StandardApp,[{key:"componentDidMount",value:function componentDidMount(){window.addEventListener("resize",this.computeVh);this.computeVh()}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.removeEventListener("resize",this.computeVh)}},{key:"render",value:function render(){if(!this.state.startupConfig){return null}return/*#__PURE__*/React.createElement(Provider,{store:StandardApp.store},/*#__PURE__*/React.createElement(AppContainer,{appConfig:this.props.appConfig,startupConfig:this.state.startupConfig}))}}])}(React.Component);_defineProperty(StandardApp,"store",null);_defineProperty(StandardApp,"propTypes",{appConfig:PropTypes.object});export{StandardApp as default};
|
|
@@ -4,4 +4,4 @@ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof
|
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the BSD-style license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/import axios from"axios";import{applyStyle}from"ol-mapbox-style";import ol from"openlayers";export default{create:function create(options){var createLayer=function createLayer(){return new ol.layer.VectorTile(_objectSpread({minResolution:options.minResolution,maxResolution:options.maxResolution,declutter:options.declutter,source:new ol.source.VectorTile(_objectSpread({projection:options.projection,format:new ol.format.MVT({}),url:options.url,tileGrid:options.tileGridConfig?new ol.tilegrid.TileGrid(_objectSpread({},options.tileGridConfig)):undefined},options.sourceConfig||{}))},options.layerConfig||{}))};var group=new ol.layer.Group;if(options.style){axios.get(options.style).then(function(response){var glStyle=response.data;
|
|
7
|
+
*/import axios from"axios";import{applyStyle}from"ol-mapbox-style";import ol from"openlayers";export default{create:function create(options){var createLayer=function createLayer(){return new ol.layer.VectorTile(_objectSpread({minResolution:options.minResolution,maxResolution:options.maxResolution,declutter:options.declutter,source:new ol.source.VectorTile(_objectSpread({projection:options.projection,format:new ol.format.MVT({}),url:options.url,tileGrid:options.tileGridConfig?new ol.tilegrid.TileGrid(_objectSpread({},options.tileGridConfig)):undefined},options.sourceConfig||{}))},options.layerConfig||{}))};var group=new ol.layer.Group;if(options.style){axios.get(options.style).then(function(response){var _glStyle$sprite,_glStyle$glyphs;var glStyle=response.data;((_glStyle$sprite=glStyle.sprite)===null||_glStyle$sprite===void 0?void 0:_glStyle$sprite.startsWith("."))&&(glStyle.sprite=new URL(glStyle.sprite,options.style).href);((_glStyle$glyphs=glStyle.glyphs)===null||_glStyle$glyphs===void 0?void 0:_glStyle$glyphs.startsWith("."))&&(glStyle.glyphs=new URL(glStyle.glyphs,options.style).href);Object.keys(glStyle.sources).forEach(function(styleSource){var _glStyle$sources$styl;((_glStyle$sources$styl=glStyle.sources[styleSource].url)===null||_glStyle$sources$styl===void 0?void 0:_glStyle$sources$styl.startsWith("."))&&(glStyle.sources[styleSource].url=new URL(glStyle.sources[styleSource].url,options.style).href);var layer=createLayer();applyStyle(layer,glStyle,styleSource,options.styleOptions).then(function(){group.getLayers().push(layer)})})})}else{group.getLayers().push(createLayer())}return group}};
|