qwc2 2025.5.27 → 2025.6.3
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/components/PluginsContainer.js +1 -1
- package/components/style/PluginsContainer.css +1 -0
- package/package.json +2 -1
- package/plugins/LayerCatalog.js +2 -2
- package/plugins/LayerTree.js +1 -1
- package/plugins/TourGuide.js +1 -0
- package/plugins/style/LayerTree.css +1 -1
- package/plugins/style/TourGuide.css +63 -0
- package/reducers/layers.js +2 -2
- package/static/translations/bg-BG.json +6 -0
- package/static/translations/ca-ES.json +6 -0
- package/static/translations/cs-CZ.json +6 -0
- package/static/translations/de-CH.json +6 -0
- package/static/translations/de-DE.json +6 -0
- package/static/translations/en-US.json +6 -0
- package/static/translations/es-ES.json +6 -0
- package/static/translations/fi-FI.json +6 -0
- package/static/translations/fr-FR.json +6 -0
- package/static/translations/hu-HU.json +6 -0
- package/static/translations/it-IT.json +6 -0
- package/static/translations/ja-JP.json +6 -0
- package/static/translations/nl-NL.json +6 -0
- package/static/translations/no-NO.json +6 -0
- package/static/translations/pl-PL.json +6 -0
- package/static/translations/pt-BR.json +6 -0
- package/static/translations/pt-PT.json +6 -0
- package/static/translations/ro-RO.json +6 -0
- package/static/translations/ru-RU.json +6 -0
- package/static/translations/sv-SE.json +6 -0
- package/static/translations/tr-TR.json +6 -0
- package/static/translations/tsconfig.json +4 -0
- package/utils/LayerUtils.js +4 -5
- package/utils/SearchProviders.js +1 -1
|
@@ -10,4 +10,4 @@ return}var scrollEvent=false;var element=ev.target;var direction=ev.targetTouche
|
|
|
10
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
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
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
|
|
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)"};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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qwc2",
|
|
3
|
-
"version": "2025.
|
|
3
|
+
"version": "2025.06.03",
|
|
4
4
|
"description": "QGIS Web Client",
|
|
5
5
|
"author": "Sourcepole AG",
|
|
6
6
|
"license": "BSD-2-Clause",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"dayjs": "^1.11.13",
|
|
35
35
|
"deepmerge": "^4.3.1",
|
|
36
36
|
"diacritics": "^1.3.0",
|
|
37
|
+
"driver.js": "^1.3.6",
|
|
37
38
|
"fast-xml-parser": "^4.5.0",
|
|
38
39
|
"file-saver": "^2.0.5",
|
|
39
40
|
"flat": "^6.0.1",
|
package/plugins/LayerCatalog.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 React from"react";import{connect}from"react-redux";import axios from"axios";import PropTypes from"prop-types";import{addLayer,removeLayer,replacePlaceholderLayer}from"../actions/layers";import{setCurrentTask}from"../actions/task";import ResizeableWindow from"../components/ResizeableWindow";import LayerCatalogWidget from"../components/widgets/LayerCatalogWidget";import LocaleUtils from"../utils/LocaleUtils";import"./style/LayerCatalog.css";/**
|
|
7
|
+
*/import React from"react";import{connect}from"react-redux";import axios from"axios";import PropTypes from"prop-types";import{addLayer,removeLayer,replacePlaceholderLayer}from"../actions/layers";import{setCurrentTask}from"../actions/task";import ResizeableWindow from"../components/ResizeableWindow";import LayerCatalogWidget from"../components/widgets/LayerCatalogWidget";import LocaleUtils from"../utils/LocaleUtils";import MiscUtils from"../utils/MiscUtils";import"./style/LayerCatalog.css";/**
|
|
8
8
|
* Displays a pre-configured catalog of external layers in a window.
|
|
9
9
|
*
|
|
10
10
|
* Configured through a catalog JSON containing a tree of external layer identifiers.
|
|
@@ -41,5 +41,5 @@ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof
|
|
|
41
41
|
* ]
|
|
42
42
|
* }
|
|
43
43
|
* ```
|
|
44
|
-
*/var LayerCatalog=/*#__PURE__*/function(_React$Component){function LayerCatalog(){var _this;_classCallCheck(this,LayerCatalog);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,LayerCatalog,[].concat(args));_defineProperty(_this,"state",{catalog:null});_defineProperty(_this,"setCatalog",function(response){_this.setState({catalog:response.data.catalog||[]});_this.props.setCurrentTask("LayerTree")});_defineProperty(_this,"onClose",function(){_this.setState({catalog:null})});return _this}_inherits(LayerCatalog,_React$Component);return _createClass(LayerCatalog,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){var _this2=this;if(this.props.active&&!prevProps.active&&this.props.catalogUrl){axios.get(this.props.catalogUrl).then(this.setCatalog)["catch"](function(e){_this2.setState({catalog:[]});// eslint-disable-next-line
|
|
44
|
+
*/var LayerCatalog=/*#__PURE__*/function(_React$Component){function LayerCatalog(){var _this;_classCallCheck(this,LayerCatalog);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,LayerCatalog,[].concat(args));_defineProperty(_this,"state",{catalog:null});_defineProperty(_this,"setCatalog",function(response){_this.setState({catalog:response.data.catalog||[]});_this.props.setCurrentTask("LayerTree")});_defineProperty(_this,"onClose",function(){_this.setState({catalog:null})});return _this}_inherits(LayerCatalog,_React$Component);return _createClass(LayerCatalog,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){var _this2=this;if(this.props.active&&!prevProps.active&&this.props.catalogUrl){axios.get(MiscUtils.resolveAssetsPath(this.props.catalogUrl)).then(this.setCatalog)["catch"](function(e){_this2.setState({catalog:[]});// eslint-disable-next-line
|
|
45
45
|
console.warn("Failed to load catalog: "+e)})}}},{key:"render",value:function render(){if(!this.state.catalog){return null}return/*#__PURE__*/React.createElement(ResizeableWindow,{dockable:this.props.geometry.side,icon:"catalog",initialHeight:this.props.geometry.initialHeight,initialWidth:this.props.geometry.initialWidth,initialX:this.props.geometry.initialX,initialY:this.props.geometry.initialY,initiallyDocked:this.props.geometry.initiallyDocked,onClose:this.onClose,title:LocaleUtils.tr("layercatalog.windowtitle")},/*#__PURE__*/React.createElement("div",{className:"layer-catalog",role:"body"},/*#__PURE__*/React.createElement(LayerCatalogWidget,{addLayer:this.props.addLayer,catalog:this.state.catalog,levelBasedIndentSize:this.props.levelBasedIndentSize,pendingRequests:0,removeLayer:this.props.removeLayer,replacePlaceholderLayer:this.props.replacePlaceholderLayer})))}}])}(React.Component);_defineProperty(LayerCatalog,"propTypes",{active:PropTypes.bool,addLayer:PropTypes.func,/** The URL to the catalog JSON file. */catalogUrl:PropTypes.string,/** Default window geometry with size, position and docking status. Positive position values (including '0') are related to top (InitialY) and left (InitialX), negative values (including '-0') to bottom (InitialY) and right (InitialX). */geometry:PropTypes.shape({initialWidth:PropTypes.number,initialHeight:PropTypes.number,initialX:PropTypes.number,initialY:PropTypes.number,initiallyDocked:PropTypes.bool,side:PropTypes.string}),/** Whether to increase the indent size dynamically according to the current level (`true`) or keep the indent size constant (`false`). */levelBasedIndentSize:PropTypes.bool,removeLayer:PropTypes.func,replacePlaceholderLayer:PropTypes.func,setCurrentTask:PropTypes.func});_defineProperty(LayerCatalog,"defaultProps",{geometry:{initialWidth:320,initialHeight:320,initialX:0,initialY:0,initiallyDocked:false,side:"left"},levelBasedIndentSize:true});export default connect(function(state){return{active:state.task.id==="LayerCatalog"}},{addLayer:addLayer,removeLayer:removeLayer,replacePlaceholderLayer:replacePlaceholderLayer,setCurrentTask:setCurrentTask})(LayerCatalog);
|
package/plugins/LayerTree.js
CHANGED
|
@@ -11,5 +11,5 @@ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof
|
|
|
11
11
|
* with containing a container element with id=legendcontainer.
|
|
12
12
|
*/var LayerTree=/*#__PURE__*/function(_React$Component){function LayerTree(props){var _this;_classCallCheck(this,LayerTree);_this=_callSuper(this,LayerTree,[props]);_defineProperty(_this,"state",{activemenu:null,activestylemenu:null,legendTooltip:null,sidebarwidth:null,importvisible:false,filterinvisiblelayers:false,legendPrintVisible:false,visibilityMenu:false,activePreset:null});_defineProperty(_this,"renderSubLayers",function(layer,group,path,enabled){var inMutuallyExclusiveGroup=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;return(group.sublayers||[]).map(function(sublayer,idx){var subpath=[].concat(_toConsumableArray(path),[idx]);if(sublayer.sublayers){return _this.renderLayerGroup(layer,sublayer,subpath,enabled,inMutuallyExclusiveGroup)}else{return _this.renderLayer(layer,sublayer,subpath,enabled,inMutuallyExclusiveGroup)}})});_defineProperty(_this,"renderLayerGroup",function(layer,group,path,enabled){var inMutuallyExclusiveGroup=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var flattenGroups=ConfigUtils.getConfigProp("flattenLayerTreeGroups",_this.props.theme)||_this.props.flattenGroups;if(flattenGroups){return _this.renderSubLayers(layer,group,path,enabled,false)}var subtreevisibility=LayerUtils.computeLayerVisibility(group);if(subtreevisibility===0&&_this.state.filterinvisiblelayers){return null}var groupId=layer.id+":"+group.name;var visibility=true;var checkboxstate="";if(_this.props.groupTogglesSublayers&&!inMutuallyExclusiveGroup){visibility=subtreevisibility>0;if(subtreevisibility===1){checkboxstate="checked"}else if(subtreevisibility===0){checkboxstate="unchecked"}else{checkboxstate="tristate"}}else{visibility=group.visibility===undefined?subtreevisibility>0:group.visibility;if(visibility){checkboxstate=subtreevisibility===1?"checked":"tristate"}else{checkboxstate="unchecked"}}var omitqueryable;var identifyableClassName="";var subtreequeryable=LayerUtils.computeLayerQueryable(group);if(subtreequeryable===1){identifyableClassName="layertree-item-identifyable-checked";omitqueryable=false}else if(subtreequeryable===0){identifyableClassName="layertree-item-identifyable-unchecked";omitqueryable=true}else{identifyableClassName="layertree-item-identifyable-tristate";omitqueryable=true}if(inMutuallyExclusiveGroup){checkboxstate="radio_"+checkboxstate}var expanderstate=group.expanded?"tree_minus":"tree_plus";var showExpander=!_this.props.onlyGroups||(group.sublayers||[]).some(function(sublayer){return sublayer.sublayers});var itemclasses={"layertree-item":true,"layertree-item-disabled":!_this.props.groupTogglesSublayers&&!enabled||_this.props.grayUnchecked&&!visibility};var sublayersContent=null;if(group.expanded){sublayersContent=_this.renderSubLayers(layer,group,path,enabled&&visibility,group.mutuallyExclusive===true)}var optMenuClasses=classnames({"layertree-item-menubutton":true,"layertree-item-menubutton-active":_this.state.activemenu===groupId});var styleMenuClasses=classnames({"layertree-item-menubutton":true,"layertree-item-menubutton-active":_this.state.activestylemenu===groupId});var allowRemove=ConfigUtils.getConfigProp("allowRemovingThemeLayers",_this.props.theme)===true||layer.role!==LayerRole.THEME;var allowReordering=ConfigUtils.getConfigProp("allowReorderingLayers",_this.props.theme)===true&&!_this.state.filterinvisiblelayers;var sortable=allowReordering&&ConfigUtils.getConfigProp("preventSplittingGroupsWhenReordering",_this.props.theme)===true;var styles=layer.type==="wms"&&path.length===0?_this.getLayerStyles(layer):null;return/*#__PURE__*/React.createElement("div",{className:"layertree-item-container","data-id":JSON.stringify({layer:layer.id,path:path}),key:groupId},/*#__PURE__*/React.createElement("div",{className:classnames(itemclasses)},showExpander?/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-expander",icon:expanderstate,onClick:function onClick(){return _this.groupExpandedToggled(layer,path,group.expanded)}}):/*#__PURE__*/React.createElement("span",{className:"layertree-item-expander"}),/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-checkbox",icon:checkboxstate,onClick:function onClick(){return _this.itemVisibilityToggled(layer,path,visibility)}}),/*#__PURE__*/React.createElement("span",{className:"layertree-item-title",onClick:function onClick(){return _this.itemVisibilityToggled(layer,path,visibility)},title:group.title},group.title),LayerUtils.hasQueryableSublayers(group)&&_this.props.allowSelectIdentifyableLayers?/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-identifyable "+identifyableClassName,icon:"info-sign",onClick:function onClick(){return _this.itemOmitQueryableToggled(layer,path,omitqueryable)}}):null,/*#__PURE__*/React.createElement("span",{className:"layertree-item-spacer"}),!isEmpty(styles)?/*#__PURE__*/React.createElement(Icon,{className:styleMenuClasses,icon:"paint",onClick:function onClick(){return _this.layerStyleMenuToggled(groupId)}}):null,/*#__PURE__*/React.createElement(Icon,{className:optMenuClasses,icon:"cog",onClick:function onClick(){return _this.layerMenuToggled(groupId)}}),allowRemove?/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-remove",icon:"trash",onClick:function onClick(){return _this.props.removeLayer(layer.id,path)}}):null),_this.state.activemenu===groupId?_this.renderOptionsMenu(layer,group,path,allowRemove):null,_this.state.activestylemenu===groupId?_this.renderStyleMenu(styles,_this.getSelectedStyles(layer),function(style){return _this.applyLayerStyle(style,layer)}):null,/*#__PURE__*/React.createElement(Sortable,{onChange:_this.onSortChange,options:{disabled:sortable===false,ghostClass:"drop-ghost",delay:200,forceFallback:_this.props.fallbackDrag}},sublayersContent))});_defineProperty(_this,"renderLayer",function(layer,sublayer,path){var enabled=arguments.length>3&&arguments[3]!==undefined?arguments[3]:true;var inMutuallyExclusiveGroup=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var skipExpanderPlaceholder=arguments.length>5&&arguments[5]!==undefined?arguments[5]:false;if(_this.props.onlyGroups){return null}if(_this.state.filterinvisiblelayers&&!sublayer.visibility){return null}if(Array.isArray(layer.layerTreeHiddenSublayers)&&layer.layerTreeHiddenSublayers.includes(sublayer.name)){return null}var sublayerId=layer.id+":"+sublayer.name;var allowRemove=ConfigUtils.getConfigProp("allowRemovingThemeLayers",_this.props.theme)===true||layer.role!==LayerRole.THEME;var allowReordering=ConfigUtils.getConfigProp("allowReorderingLayers",_this.props.theme)===true;var checkboxstate=sublayer.visibility===true?"checked":"unchecked";if(inMutuallyExclusiveGroup){checkboxstate="radio_"+checkboxstate}var optMenuClasses=classnames({"layertree-item-menubutton":true,"layertree-item-menubutton-active":_this.state.activemenu===sublayerId});var styleMenuClasses=classnames({"layertree-item-menubutton":true,"layertree-item-menubutton-active":_this.state.activestylemenu===sublayerId});var itemclasses={"layertree-item":true,"layertree-item-disabled":layer.type!=="separator"&&(!_this.props.groupTogglesSublayers&&!enabled||_this.props.grayUnchecked&&!sublayer.visibility),"layertree-item-separator":layer.type==="separator","layertree-item-outsidescalerange":sublayer.minScale!==undefined&&_this.props.mapScale<sublayer.minScale||sublayer.maxScale!==undefined&&_this.props.mapScale>sublayer.maxScale};var infoButton=null;if(layer.type==="wms"||layer.type==="wfs"||layer.type==="wmts"){infoButton=/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-metadata",icon:"info-sign",onClick:function onClick(){return _this.props.setActiveLayerInfo(layer,sublayer)}})}var legendicon=null;if(_this.props.showLegendIcons){var legendUrl=LayerUtils.getLegendUrl(layer,sublayer,_this.props.mapScale,_this.props.map,_this.props.bboxDependentLegend,_this.props.scaleDependentLegend,_this.props.extraLegendParameters);if(legendUrl){legendicon=/*#__PURE__*/React.createElement(Image,{className:"layertree-item-legend-thumbnail",onMouseOut:_this.hideLegendTooltip,onMouseOver:function onMouseOver(ev){return _this.showLegendTooltip(ev,legendUrl)},onTouchStart:function onTouchStart(ev){return _this.showLegendTooltip(ev,legendUrl)},src:legendUrl+"&TYPE=thumbnail"})}else if(layer.color){legendicon=/*#__PURE__*/React.createElement("span",{className:"layertree-item-legend-coloricon",style:{backgroundColor:layer.color}})}}var checkbox=null;if(layer.type==="placeholder"){checkbox=/*#__PURE__*/React.createElement(Spinner,null)}else if(layer.type==="separator"){checkbox=null}else{checkbox=/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-checkbox",icon:checkboxstate,onClick:function onClick(){return _this.itemVisibilityToggled(layer,path,sublayer.visibility)}})}var title=null;if(layer.type==="separator"){title=/*#__PURE__*/React.createElement("input",{onChange:function onChange(ev){return _this.props.changeLayerProperty(layer.id,"title",ev.target.value)},value:sublayer.title})}else{title=/*#__PURE__*/React.createElement("span",{className:"layertree-item-title",onClick:function onClick(){return _this.itemVisibilityToggled(layer,path,sublayer.visibility)},title:sublayer.title},sublayer.title)}var queryableicon=null;if(_this.props.allowSelectIdentifyableLayers){var identifyableClassName=!sublayer.omitFromQueryLayers?"layertree-item-identifyable-checked":"layertree-item-identifyable-unchecked";queryableicon=/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-identifyable "+identifyableClassName,icon:"info-sign",onClick:function onClick(){return _this.itemOmitQueryableToggled(layer,path,sublayer.omitFromQueryLayers)}})}else{queryableicon=/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-queryable",icon:"info-sign"})}var allowOptions=layer.type!=="placeholder"&&layer.type!=="separator";var flattenGroups=ConfigUtils.getConfigProp("flattenLayerTreeGroups",_this.props.theme)||_this.props.flattenGroups;var allowSeparators=flattenGroups&&allowReordering&&ConfigUtils.getConfigProp("allowLayerTreeSeparators",_this.props.theme);var separatorTitle=LocaleUtils.tr("layertree.separator");var separatorTooltip=LocaleUtils.tr("layertree.separatortooltip");return/*#__PURE__*/React.createElement("div",{className:"layertree-item-container","data-id":JSON.stringify({layer:layer.id,path:path}),key:sublayerId},allowSeparators?/*#__PURE__*/React.createElement("div",{className:"layertree-item-addsep",onClick:function onClick(){return _this.props.addLayerSeparator(separatorTitle,layer.id,path)},title:separatorTooltip}):null,/*#__PURE__*/React.createElement("div",{className:classnames(itemclasses)},flattenGroups||skipExpanderPlaceholder?null:/*#__PURE__*/React.createElement("span",{className:"layertree-item-expander"}),checkbox,legendicon,title,sublayer.queryable&&_this.props.showQueryableIcon?queryableicon:null,sublayer.name in(_this.props.filter.filterParams||{})||_this.props.filter.filterGeom?/*#__PURE__*/React.createElement(Icon,{icon:"filter"}):null,_this.props.loadingLayers.includes(layer.id)?/*#__PURE__*/React.createElement(Spinner,null):null,/*#__PURE__*/React.createElement("span",{className:"layertree-item-spacer"}),allowOptions&&!_this.props.infoInSettings?infoButton:null,Object.keys(sublayer.styles||{}).length>1?/*#__PURE__*/React.createElement(Icon,{className:styleMenuClasses,icon:"paint",onClick:function onClick(){return _this.layerStyleMenuToggled(sublayerId)}}):null,allowOptions?/*#__PURE__*/React.createElement(Icon,{className:optMenuClasses,icon:"cog",onClick:function onClick(){return _this.layerMenuToggled(sublayerId)}}):null,allowRemove?/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-remove",icon:"trash",onClick:function onClick(){return _this.props.removeLayer(layer.id,path)}}):null),_this.state.activemenu===sublayerId?_this.renderOptionsMenu(layer,sublayer,path,allowRemove):null,_this.state.activestylemenu===sublayerId?_this.renderStyleMenu(sublayer.styles,[sublayer.style],function(style){return _this.layerStyleChanged(layer,path,style)}):null)});_defineProperty(_this,"renderOptionsMenu",function(layer,sublayer,path){var marginRight=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0;var allowReordering=ConfigUtils.getConfigProp("allowReorderingLayers",_this.props.theme)===true;var reorderButtons=null;if(allowReordering&&!_this.state.filterinvisiblelayers){reorderButtons=[/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-move",icon:"arrow-down",key:"layertree-item-move-down",onClick:function onClick(){return _this.props.reorderLayer(layer,path,+1)}}),/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-move",icon:"arrow-up",key:"layertree-item-move-up",onClick:function onClick(){return _this.props.reorderLayer(layer,path,-1)}})]}var zoomToLayerButton=null;if(sublayer.bbox&&sublayer.bbox.bounds){var zoomToLayerTooltip=LocaleUtils.tr("layertree.zoomtolayer");var crs=sublayer.bbox.crs||_this.props.map.projection;zoomToLayerButton=/*#__PURE__*/React.createElement(Icon,{icon:"zoom",onClick:function onClick(){return _this.props.zoomToExtent(sublayer.bbox.bounds,crs)},title:zoomToLayerTooltip})}var infoButton=null;if(_this.props.infoInSettings&&(layer.type==="wms"||layer.type==="wfs"||layer.type==="wmts")){infoButton=/*#__PURE__*/React.createElement(Icon,{className:"layertree-item-metadata",icon:"info-sign",onClick:function onClick(){return _this.props.setActiveLayerInfo(layer,sublayer)}})}var attrTableButton=null;if(_this.props.showAttributeTableLink&&ConfigUtils.havePlugin("AttributeTable")&&layer.role===LayerRole.THEME&&_this.props.theme.editConfig[sublayer.name]){attrTableButton=/*#__PURE__*/React.createElement(Icon,{icon:"editing",onClick:function onClick(){return _this.props.setCurrentTask("AttributeTable",null,null,{layer:sublayer.name})}})}return/*#__PURE__*/React.createElement("div",{className:"layertree-item-optionsmenu",onMouseDown:_this.preventLayerTreeItemDrag,style:{marginRight:marginRight*1.75+"em"}},zoomToLayerButton,_this.props.transparencyIcon?/*#__PURE__*/React.createElement(Icon,{icon:"transparency"}):LocaleUtils.tr("layertree.transparency"),/*#__PURE__*/React.createElement("input",{className:"layertree-item-transparency-slider",max:"255",min:"0",onChange:function onChange(ev){return _this.layerTransparencyChanged(layer,path,ev.target.value,!isEmpty(sublayer.sublayers)?"children":null)},step:"1",type:"range",value:255-LayerUtils.computeLayerOpacity(sublayer)}),reorderButtons,infoButton,attrTableButton,layer.type==="vector"?/*#__PURE__*/React.createElement(Icon,{icon:"export",onClick:function onClick(){return _this.exportRedliningLayer(layer)}}):null)});_defineProperty(_this,"renderStyleMenu",function(styles,selectedStyles,onStyleChange){var marginRight=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0;var checkedIcon=selectedStyles.length===1?"radio_checked":"radio_tristate";return/*#__PURE__*/React.createElement("div",{className:"layertree-item-stylemenu",style:{marginRight:marginRight*1.75+"em"}},Object.entries(styles).map(function(_ref){var _ref2=_slicedToArray(_ref,2),name=_ref2[0],title=_ref2[1];return/*#__PURE__*/React.createElement("div",{key:name,onClick:function onClick(){return onStyleChange(name)}},/*#__PURE__*/React.createElement(Icon,{icon:selectedStyles.includes(name)?checkedIcon:"radio_unchecked"}),/*#__PURE__*/React.createElement("div",null,title))}))});_defineProperty(_this,"preventLayerTreeItemDrag",function(ev){var draggableEl=ev.currentTarget.parentNode;if(draggableEl.draggable){draggableEl.draggable=false;document.addEventListener("mouseup",function(){draggableEl.draggable=true},{once:true})}});_defineProperty(_this,"renderLayerTree",function(layers){var flattenGroups=ConfigUtils.getConfigProp("flattenLayerTreeGroups",_this.props.theme)||_this.props.flattenGroups;var haveGroups=!flattenGroups&&layers.find(function(layer){if(layer.role===LayerRole.THEME&&!_this.props.showRootEntry){return(layer.sublayers||[]).find(function(sublayer){return!isEmpty(sublayer.sublayers)})}else{return!isEmpty(layer.sublayers)}});return layers.map(function(layer){if(isEmpty(layer.sublayers)&&layer.role!==LayerRole.THEME){return _this.renderLayer(layer,layer,[],layer.visibility,false,!haveGroups)}else if(_this.props.showRootEntry||layer.role!==LayerRole.THEME){return _this.renderLayerGroup(layer,layer,[],layer.visibility)}else{return layer.sublayers.map(function(sublayer,idx){var subpath=[idx];if(sublayer.sublayers){return _this.renderLayerGroup(layer,sublayer,subpath,layer.visibility)}else{return _this.renderLayer(layer,sublayer,subpath,layer.visibility,false,!haveGroups)}})}})});_defineProperty(_this,"renderBody",function(){var maptipcheckboxstate=_this.props.mapTipsEnabled===true?"checked":"unchecked";var maptipCheckbox=null;var maptipsEnabled=false;if(_this.props.theme.mapTips!==undefined){maptipsEnabled=_this.props.theme.mapTips!==null&&_this.props.allowMapTips}else{maptipsEnabled=_this.props.allowMapTips}if(!ConfigUtils.isMobile()&&maptipsEnabled){maptipCheckbox=/*#__PURE__*/React.createElement("div",{className:"layertree-option"},/*#__PURE__*/React.createElement(Icon,{icon:maptipcheckboxstate,onClick:_this.toggleMapTips}),/*#__PURE__*/React.createElement("span",{onClick:_this.toggleMapTips},LocaleUtils.tr("layertree.maptip")))}var allowReordering=ConfigUtils.getConfigProp("allowReorderingLayers",_this.props.theme)===true&&!_this.state.filterinvisiblelayers;var haveMapCompare=ConfigUtils.havePlugin("MapCompare");var compareCheckbox=null;if(haveMapCompare&&_this.props.allowCompare&&allowReordering){var swipecheckboxstate=_this.props.swipe||_this.props.swipe===0?"checked":"unchecked";compareCheckbox=/*#__PURE__*/React.createElement("div",{className:"layertree-option"},/*#__PURE__*/React.createElement(Icon,{icon:swipecheckboxstate,onClick:_this.toggleSwipe}),/*#__PURE__*/React.createElement("span",{onClick:_this.toggleSwipe},LocaleUtils.tr("layertree.compare")))}var layerImportExpander=null;if(_this.props.allowImport){layerImportExpander=/*#__PURE__*/React.createElement("div",{className:"layertree-option",onClick:_this.toggleImportLayers},/*#__PURE__*/React.createElement(Icon,{icon:_this.state.importvisible?"collapse":"expand"})," ",LocaleUtils.tr("layertree.importlayer"))}var flattenGroups=ConfigUtils.getConfigProp("flattenLayerTreeGroups",_this.props.theme)||_this.props.flattenGroups;var sortable=allowReordering&&(ConfigUtils.getConfigProp("preventSplittingGroupsWhenReordering",_this.props.theme)===true||flattenGroups===true);var treelayers=_this.props.layers.filter(function(layer){return layer.role!==LayerRole.BACKGROUND&&!layer.layertreehidden});return/*#__PURE__*/React.createElement("div",{className:"layertree-container-wrapper",role:"body"},/*#__PURE__*/React.createElement("div",{className:"layertree-container"},/*#__PURE__*/React.createElement("div",{className:"layertree-tree",onContextMenuCapture:function onContextMenuCapture(ev){// Prevent context menu on drag-sort
|
|
13
13
|
ev.stopPropagation();ev.preventDefault();return false},onTouchEnd:function onTouchEnd(ev){var target=ev.currentTarget;clearTimeout(target.preventScrollTimeout);target.preventScrollTimeout=null;target.removeEventListener("touchmove",MiscUtils.killEvent)},onTouchStart:function onTouchStart(ev){// Prevent touch-scroll after sortable trigger delay
|
|
14
|
-
var target=ev.currentTarget;target.preventScrollTimeout=setTimeout(function(){target.addEventListener("touchmove",MiscUtils.killEvent,{passive:false})},200)},ref:MiscUtils.setupKillTouchEvents},/*#__PURE__*/React.createElement(Sortable,{onChange:_this.onSortChange,options:{disabled:sortable===false,ghostClass:"drop-ghost",delay:200,forceFallback:_this.props.fallbackDrag}},_this.renderLayerTree(treelayers))),maptipCheckbox,compareCheckbox,layerImportExpander,_this.state.importvisible?/*#__PURE__*/React.createElement(ImportLayer,{theme:_this.props.theme}):null))});_defineProperty(_this,"renderVisibilityButton",function(){if(!_this.props.showToggleAllLayersCheckbox&&!_this.props.enableVisibleFilter&&isEmpty(_this.props.theme.visibilityPresets)){return null}var vis=0;var count=0;var _iterator=_createForOfIteratorHelper(_this.props.layers),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var layer=_step.value;if(layer.role===LayerRole.THEME||layer.role===LayerRole.USERLAYER){count+=1;vis+=layer.visibility}}}catch(err){_iterator.e(err)}finally{_iterator.f()}vis/=Math.min(1,count);var buttonClasses=classnames({"layertree-visibility-button":true,"layertree-visibility-button-active":_this.state.visibilityMenu});return/*#__PURE__*/React.createElement("span",{className:buttonClasses,onClick:function onClick(){return _this.setState(function(state){return{visibilityMenu:!state.visibilityMenu}})}},/*#__PURE__*/React.createElement(Icon,{icon:"eye"}),/*#__PURE__*/React.createElement(Icon,{icon:"chevron-down"}),_this.state.visibilityMenu?/*#__PURE__*/React.createElement("div",{className:"layertree-visibility-menu"},_this.props.showToggleAllLayersCheckbox?/*#__PURE__*/React.createElement("div",{onClick:function onClick(){return _this.toggleLayerTreeVisibility(vis===0)}},/*#__PURE__*/React.createElement(Icon,{icon:vis===0?"checked":"unchecked"})," ",LocaleUtils.tr("layertree.hidealllayers")):null,_this.props.enableVisibleFilter?/*#__PURE__*/React.createElement("div",{onClick:function onClick(){return _this.setState(function(state){return{filterinvisiblelayers:!state.filterinvisiblelayers}})}},/*#__PURE__*/React.createElement(Icon,{icon:_this.state.filterinvisiblelayers?"checked":"unchecked"})," ",LocaleUtils.tr("layertree.visiblefilter")):null,Object.entries(_this.props.theme.visibilityPresets||{}).map(function(_ref3,idx){var _ref4=_slicedToArray(_ref3,2),name=_ref4[0],preset=_ref4[1];return/*#__PURE__*/React.createElement("div",{className:idx===0?"layertree-visibility-menu-sep":"",key:name,onClick:function onClick(){return _this.props.setThemeLayersVisibilityPreset(preset)}},/*#__PURE__*/React.createElement(Icon,{icon:_this.state.activePreset===name?"radio_checked":"radio_unchecked"})," ",name)})):null)});_defineProperty(_this,"renderLegendPrintWindow",function(){if(!_this.state.legendPrintVisible){return null}var setLegendPrintContents=function setLegendPrintContents(el){if(!el){return}el.addEventListener("load",function(){var container=el.contentWindow.document.getElementById("legendcontainer");if(container){var body="<p id=\"legendcontainerbody\">";body+=_this.props.layers.map(function(layer){if(!layer.visibility){return""}else if(layer.legendUrl){return _this.printLayerLegend(layer,layer)}else if(layer.color){return"<div class=\"legend-entry\"><span style=\"display: inline-block; width: 1em; height: 1em; box-shadow: inset 0 0 0 1000px "+layer.color+"; margin: 0.25em; border: 1px solid black;\"> </span>"+(layer.title||layer.name)+"</div>"}else{return""}}).join("");body+="</p>";container.innerHTML=body}else{_this.legendPrintWindow.document.body.innerHTML="Broken template. An element with id=legendcontainer must exist."}})};var printLegend=function printLegend(ev){ev.target.parentElement.parentElement.getElementsByTagName("iframe")[0].contentWindow.print()};return/*#__PURE__*/React.createElement(ResizeableWindow,{icon:"print",initialHeight:0.75*window.innerHeight,initialWidth:0.5*window.innerWidth,onClose:function onClose(){return _this.setState({legendPrintVisible:false})},title:LocaleUtils.tr("layertree.printlegend")},/*#__PURE__*/React.createElement("div",{className:"layertree-legend-print-body",role:"body"},/*#__PURE__*/React.createElement("iframe",{ref:setLegendPrintContents,src:MiscUtils.resolveAssetsPath(_this.props.templatePath)}),/*#__PURE__*/React.createElement("div",{className:"layertree-legend-print-body-buttonbar"},/*#__PURE__*/React.createElement("button",{onClick:printLegend},LocaleUtils.tr("layertree.printlegend")))))});_defineProperty(_this,"legendTooltipLoaded",function(ev){if(ev.target.naturalWidth>1){ev.target.style.visibility="visible"}});_defineProperty(_this,"onSortChange",function(order,sortable,ev){var moved=JSON.parse(order[ev.newIndex]);var layer=_this.props.layers.find(function(l){return l.id===moved.layer});if(layer){_this.props.reorderLayer(layer,moved.path,ev.newIndex-ev.oldIndex)}});_defineProperty(_this,"toggleImportLayers",function(){_this.setState(function(state){var visible=!state.importvisible;return{importvisible:visible,sidebarwidth:visible?"40em":null}})});_defineProperty(_this,"propagateOptions",function(layer,options){var path=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(layer.sublayers){layer.sublayers=layer.sublayers.map(function(sublayer,idx){if(path===null||!isEmpty(path)&&path[0]===idx){var newsublayer=_objectSpread(_objectSpread({},sublayer),options);_this.propagateOptions(newsublayer,options,path?path.slice(1):null);return newsublayer}else{return sublayer}})}});_defineProperty(_this,"groupExpandedToggled",function(layer,grouppath,oldexpanded){_this.props.changeLayerProperty(layer.id,"expanded",!oldexpanded,grouppath)});_defineProperty(_this,"itemVisibilityToggled",function(layer,grouppath,oldvisibility){var recurseDirection=null;// If item becomes visible, also make parents visible
|
|
14
|
+
var target=ev.currentTarget;target.preventScrollTimeout=setTimeout(function(){target.addEventListener("touchmove",MiscUtils.killEvent,{passive:false})},200)},ref:MiscUtils.setupKillTouchEvents},/*#__PURE__*/React.createElement(Sortable,{onChange:_this.onSortChange,options:{disabled:sortable===false,ghostClass:"drop-ghost",delay:200,forceFallback:_this.props.fallbackDrag}},_this.renderLayerTree(treelayers))),maptipCheckbox,compareCheckbox,layerImportExpander,_this.state.importvisible?/*#__PURE__*/React.createElement(ImportLayer,{theme:_this.props.theme}):null))});_defineProperty(_this,"renderVisibilityButton",function(){if(!_this.props.showToggleAllLayersCheckbox&&!_this.props.enableVisibleFilter&&isEmpty(_this.props.theme.visibilityPresets)){return null}var vis=0;var count=0;var _iterator=_createForOfIteratorHelper(_this.props.layers),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var layer=_step.value;if(layer.role===LayerRole.THEME||layer.role===LayerRole.USERLAYER){count+=1;vis+=layer.visibility}}}catch(err){_iterator.e(err)}finally{_iterator.f()}vis/=Math.min(1,count);var buttonClasses=classnames({"layertree-visibility-button":true,"layertree-visibility-button-active":_this.state.visibilityMenu});var style={};if(_this.props.side==="left"){style.left=0}else{style.right=0}return/*#__PURE__*/React.createElement("span",{className:buttonClasses,onClick:function onClick(){return _this.setState(function(state){return{visibilityMenu:!state.visibilityMenu}})}},/*#__PURE__*/React.createElement(Icon,{icon:"eye"}),/*#__PURE__*/React.createElement(Icon,{icon:"chevron-down"}),_this.state.visibilityMenu?/*#__PURE__*/React.createElement("div",{className:"layertree-visibility-menu",style:style},_this.props.showToggleAllLayersCheckbox?/*#__PURE__*/React.createElement("div",{onClick:function onClick(){return _this.toggleLayerTreeVisibility(vis===0)}},/*#__PURE__*/React.createElement(Icon,{icon:vis===0?"checked":"unchecked"})," ",LocaleUtils.tr("layertree.hidealllayers")):null,_this.props.enableVisibleFilter?/*#__PURE__*/React.createElement("div",{onClick:function onClick(){return _this.setState(function(state){return{filterinvisiblelayers:!state.filterinvisiblelayers}})}},/*#__PURE__*/React.createElement(Icon,{icon:_this.state.filterinvisiblelayers?"checked":"unchecked"})," ",LocaleUtils.tr("layertree.visiblefilter")):null,Object.entries(_this.props.theme.visibilityPresets||{}).map(function(_ref3,idx){var _ref4=_slicedToArray(_ref3,2),name=_ref4[0],preset=_ref4[1];return/*#__PURE__*/React.createElement("div",{className:idx===0?"layertree-visibility-menu-sep":"",key:name,onClick:function onClick(){return _this.props.setThemeLayersVisibilityPreset(preset)}},/*#__PURE__*/React.createElement(Icon,{icon:_this.state.activePreset===name?"radio_checked":"radio_unchecked"})," ",name)})):null)});_defineProperty(_this,"renderLegendPrintWindow",function(){if(!_this.state.legendPrintVisible){return null}var setLegendPrintContents=function setLegendPrintContents(el){if(!el){return}el.addEventListener("load",function(){var container=el.contentWindow.document.getElementById("legendcontainer");if(container){var body="<p id=\"legendcontainerbody\">";body+=_this.props.layers.map(function(layer){if(!layer.visibility){return""}else if(layer.legendUrl){return _this.printLayerLegend(layer,layer)}else if(layer.color){return"<div class=\"legend-entry\"><span style=\"display: inline-block; width: 1em; height: 1em; box-shadow: inset 0 0 0 1000px "+layer.color+"; margin: 0.25em; border: 1px solid black;\"> </span>"+(layer.title||layer.name)+"</div>"}else{return""}}).join("");body+="</p>";container.innerHTML=body}else{_this.legendPrintWindow.document.body.innerHTML="Broken template. An element with id=legendcontainer must exist."}})};var printLegend=function printLegend(ev){ev.target.parentElement.parentElement.getElementsByTagName("iframe")[0].contentWindow.print()};return/*#__PURE__*/React.createElement(ResizeableWindow,{icon:"print",initialHeight:0.75*window.innerHeight,initialWidth:0.5*window.innerWidth,onClose:function onClose(){return _this.setState({legendPrintVisible:false})},title:LocaleUtils.tr("layertree.printlegend")},/*#__PURE__*/React.createElement("div",{className:"layertree-legend-print-body",role:"body"},/*#__PURE__*/React.createElement("iframe",{ref:setLegendPrintContents,src:MiscUtils.resolveAssetsPath(_this.props.templatePath)}),/*#__PURE__*/React.createElement("div",{className:"layertree-legend-print-body-buttonbar"},/*#__PURE__*/React.createElement("button",{onClick:printLegend},LocaleUtils.tr("layertree.printlegend")))))});_defineProperty(_this,"legendTooltipLoaded",function(ev){if(ev.target.naturalWidth>1){ev.target.style.visibility="visible"}});_defineProperty(_this,"onSortChange",function(order,sortable,ev){var moved=JSON.parse(order[ev.newIndex]);var layer=_this.props.layers.find(function(l){return l.id===moved.layer});if(layer){_this.props.reorderLayer(layer,moved.path,ev.newIndex-ev.oldIndex)}});_defineProperty(_this,"toggleImportLayers",function(){_this.setState(function(state){var visible=!state.importvisible;return{importvisible:visible,sidebarwidth:visible?"40em":null}})});_defineProperty(_this,"propagateOptions",function(layer,options){var path=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(layer.sublayers){layer.sublayers=layer.sublayers.map(function(sublayer,idx){if(path===null||!isEmpty(path)&&path[0]===idx){var newsublayer=_objectSpread(_objectSpread({},sublayer),options);_this.propagateOptions(newsublayer,options,path?path.slice(1):null);return newsublayer}else{return sublayer}})}});_defineProperty(_this,"groupExpandedToggled",function(layer,grouppath,oldexpanded){_this.props.changeLayerProperty(layer.id,"expanded",!oldexpanded,grouppath)});_defineProperty(_this,"itemVisibilityToggled",function(layer,grouppath,oldvisibility){var recurseDirection=null;// If item becomes visible, also make parents visible
|
|
15
15
|
if(_this.props.groupTogglesSublayers){recurseDirection=!oldvisibility?"both":"children"}else{recurseDirection=!oldvisibility?"parents":null}_this.props.changeLayerProperty(layer.id,"visibility",!oldvisibility,grouppath,recurseDirection)});_defineProperty(_this,"itemOmitQueryableToggled",function(layer,grouppath,oldomitqueryable){_this.props.changeLayerProperty(layer.id,"omitFromQueryLayers",!oldomitqueryable,grouppath,"children")});_defineProperty(_this,"layerTransparencyChanged",function(layer,sublayerpath,value){var recurse=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_this.props.changeLayerProperty(layer.id,"opacity",Math.max(1,255-value),sublayerpath,recurse)});_defineProperty(_this,"layerStyleChanged",function(layer,sublayerpath,value){var recurseDirection=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_this.props.changeLayerProperty(layer.id,"style",value,sublayerpath,recurseDirection)});_defineProperty(_this,"layerMenuToggled",function(sublayerid){_this.setState(function(state){return{activemenu:state.activemenu===sublayerid?null:sublayerid,activestylemenu:null}})});_defineProperty(_this,"layerStyleMenuToggled",function(sublayerid){_this.setState(function(state){return{activestylemenu:state.activestylemenu===sublayerid?null:sublayerid,activemenu:null}})});_defineProperty(_this,"showLegendTooltip",function(ev,request){_this.setState({legendTooltip:{x:ev.target.getBoundingClientRect().right,y:ev.target.getBoundingClientRect().top,img:request+"&TYPE=tooltip"}})});_defineProperty(_this,"onHide",function(){_this.setState({legendTooltip:undefined,visibilityMenu:false})});_defineProperty(_this,"hideLegendTooltip",function(){_this.setState({legendTooltip:undefined})});_defineProperty(_this,"toggleMapTips",function(){_this.props.toggleMapTips(!_this.props.mapTipsEnabled)});_defineProperty(_this,"toggleSwipe",function(){_this.props.setSwipe(_this.props.swipe!==null?null:50)});_defineProperty(_this,"printLayerLegend",function(layer,sublayer){var body="";if(sublayer.sublayers){if(sublayer.visibility){body="<div class=\"legend-group\">"+"<h3 class=\"legend-group-title\">"+(sublayer.title||sublayer.name)+"</h3>"+"<div class=\"legend-group-body\">"+sublayer.sublayers.map(function(subsublayer){return _this.printLayerLegend(layer,subsublayer)}).join("\n")+"</div>"+"</div>"}}else{if(sublayer.visibility&&LayerUtils.layerScaleInRange(sublayer,_this.props.mapScale)){var request=LayerUtils.getLegendUrl(layer,{name:sublayer.name},_this.props.mapScale,_this.props.map,_this.props.bboxDependentLegend,_this.props.scaleDependentLegend,_this.props.extraLegendParameters);body=request?"<div class=\"legend-entry\"><img src=\""+request+"\" /></div>":""}}return body});_defineProperty(_this,"deleteAllLayers",function(){var _iterator2=_createForOfIteratorHelper(_this.props.layers),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var layer=_step2.value;if(layer.role===LayerRole.THEME){var sublayers=layer.sublayers||[];for(var i=sublayers.length-1;i>=0;--i){_this.props.removeLayer(layer.id,[i])}}else if(layer.role===LayerRole.USERLAYER){_this.props.removeLayer(layer.id)}}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}});_defineProperty(_this,"toggleLayerTreeVisibility",function(visibile){var _iterator3=_createForOfIteratorHelper(_this.props.layers),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var layer=_step3.value;if(layer.role===LayerRole.THEME||layer.role===LayerRole.USERLAYER){_this.props.changeLayerProperty(layer.id,"visibility",visibile,[],null)}}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}});_defineProperty(_this,"exportRedliningLayer",function(layer){var data=JSON.stringify({type:"FeatureCollection",features:layer.features.map(function(feature){var newFeature=_objectSpread(_objectSpread({},feature),{},{geometry:VectorLayerUtils.reprojectGeometry(feature.geometry,feature.crs||_this.props.map.projection,"EPSG:4326")});delete newFeature.crs;return newFeature})},null," ");FileSaver.saveAs(new Blob([data],{type:"text/plain;charset=utf-8"}),layer.title+".json")});_defineProperty(_this,"getSelectedStyles",function(layer){var _layer$params;return _toConsumableArray(new Set((((_layer$params=layer.params)===null||_layer$params===void 0?void 0:_layer$params.STYLES)||"").split(",").filter(Boolean)))});_defineProperty(_this,"getLayerStyles",function(layer){var _layer$sublayers;return layer===null||layer===void 0||(_layer$sublayers=layer.sublayers)===null||_layer$sublayers===void 0?void 0:_layer$sublayers.reduce(function(styleList,sublayer){Object.assign(styleList,_this.getLayerStyles(sublayer.sublayers));return Object.assign(styleList,sublayer.styles)},{})});_defineProperty(_this,"applyLayerStyle",function(style,layer){var path=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];var layerId=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;layerId=layerId!==null&&layerId!==void 0?layerId:layer.id;(layer.sublayers||[]).forEach(function(sublayer,idx){_this.applyLayerStyle(style,sublayer,[].concat(_toConsumableArray(path),[idx]),layerId);if(style in(sublayer.styles||{})){_this.props.changeLayerProperty(layerId,"style",style,[].concat(_toConsumableArray(path),[idx]))}})});_this.legendPrintWindow=null;window.addEventListener("beforeunload",function(){if(_this.legendPrintWindow&&!_this.legendPrintWindow.closed){_this.legendPrintWindow.close()}});return _this}_inherits(LayerTree,_React$Component);return _createClass(LayerTree,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){if(this.props.theme.mapTips!==undefined&&this.props.theme.mapTips!==prevProps.theme.mapTips){this.props.toggleMapTips(this.props.theme.mapTips&&!ConfigUtils.isMobile())}if(this.props.layers!==prevProps.layers){this.setState({activePreset:LayerUtils.getActiveVisibilityPreset(this.props.layers,this.props.theme.visibilityPresets)})}}},{key:"render",value:function render(){var _this2=this;var legendTooltip=null;if(this.state.legendTooltip){var style={left:this.state.legendTooltip.x,top:this.state.legendTooltip.y,maxWidth:window.innerWidth-this.state.legendTooltip.x-2,maxHeight:window.innerHeight-this.state.legendTooltip.y-2,visibility:"hidden"};legendTooltip=/*#__PURE__*/React.createElement(Image,{className:"layertree-item-legend-tooltip",onLoad:this.legendTooltipLoaded,onTouchStart:this.hideLegendTooltip,src:this.state.legendTooltip.img,style:style})}var legendPrintIcon=null;if(this.props.enableLegendPrint){legendPrintIcon=/*#__PURE__*/React.createElement(Icon,{className:"layertree-print-legend",icon:"print",onClick:function onClick(){return _this2.setState({legendPrintVisible:true})},title:LocaleUtils.tr("layertree.printlegend")})}var deleteAllLayersIcon=null;if(ConfigUtils.getConfigProp("allowRemovingThemeLayers")===true){var deleteAllLayersTooltip=LocaleUtils.tr("layertree.deletealllayers");deleteAllLayersIcon=/*#__PURE__*/React.createElement(Icon,{className:"layertree-delete-legend",icon:"trash",onClick:this.deleteAllLayers,title:deleteAllLayersTooltip})}var serviceInfoIcon=null;if(this.props.enableServiceInfo){var serviceInfoTooltip=LocaleUtils.tr("serviceinfo.title");serviceInfoIcon=/*#__PURE__*/React.createElement(Icon,{className:"layertree-theme-metadata",icon:"info-sign",onClick:function onClick(){return _this2.props.setActiveServiceInfo(_this2.props.theme)},title:serviceInfoTooltip})}var extraTitlebarContent=/*#__PURE__*/React.createElement("span",null,this.renderVisibilityButton(),legendPrintIcon,deleteAllLayersIcon,serviceInfoIcon);return/*#__PURE__*/React.createElement("div",null,/*#__PURE__*/React.createElement(SideBar,{extraTitlebarContent:extraTitlebarContent,icon:"layers",id:"LayerTree",onHide:this.onHide,side:this.props.side,title:LocaleUtils.tr("appmenu.items.LayerTree"),width:this.state.sidebarwidth||this.props.width},function(){return{body:_this2.renderBody()}}),legendTooltip,this.renderLegendPrintWindow(),/*#__PURE__*/React.createElement(LayerInfoWindow,{bboxDependentLegend:this.props.bboxDependentLegend,layerInfoGeometry:this.props.layerInfoGeometry,scaleDependentLegend:this.props.scaleDependentLegend}),/*#__PURE__*/React.createElement(ServiceInfoWindow,{layerInfoGeometry:this.props.layerInfoGeometry}))}}])}(React.Component);_defineProperty(LayerTree,"propTypes",{/** Whether to allow adding separator entries in the layer tree, useful for organizing the tree. */addLayerSeparator:PropTypes.func,/** Whether to enable the compare function. Requires the `MapCompare` plugin. */allowCompare:PropTypes.bool,/** Whether to allow importing external layers. */allowImport:PropTypes.bool,/** Whether to allow enabling map tips. */allowMapTips:PropTypes.bool,/** Whether to allow selection of identifyable layers. The `showQueryableIcon` property should be `true` to be able to select identifyable layers. */allowSelectIdentifyableLayers:PropTypes.bool,/** Whether to display a BBOX dependent legend. Can be `true|false|"theme"`, latter means only for theme layers. */bboxDependentLegend:PropTypes.oneOfType([PropTypes.bool,PropTypes.string]),changeLayerProperty:PropTypes.func,/** Whether to enable the legend print functionality. */enableLegendPrint:PropTypes.bool,/** Whether to display a service info button to display the WMS service metadata. */enableServiceInfo:PropTypes.bool,/** Whether to display a button to filter invisible layers from the layertree. */enableVisibleFilter:PropTypes.bool,/** Additional parameters to pass to the GetLegendGraphics request. */extraLegendParameters:PropTypes.string,/** Whether to use the fallback logic for drag-and-drop. */fallbackDrag:PropTypes.bool,filter:PropTypes.object,/** Whether to display a flat layer tree, omitting any groups. */flattenGroups:PropTypes.bool,/** Whether to display unchecked layers gray in the layertree. */grayUnchecked:PropTypes.bool,/** Whether toggling a group also toggles all sublayers. */groupTogglesSublayers:PropTypes.bool,/** Whether to display the layer info button inside the layer settings menu rather than next to the layer title. */infoInSettings:PropTypes.bool,/** Default layer info window geometry with size, position and docking status. */layerInfoGeometry:PropTypes.shape({initialWidth:PropTypes.number,initialHeight:PropTypes.number,initialX:PropTypes.number,initialY:PropTypes.number,initiallyDocked:PropTypes.bool}),layers:PropTypes.array,loadingLayers:PropTypes.array,map:PropTypes.object,mapScale:PropTypes.number,mapTipsEnabled:PropTypes.bool,mobile:PropTypes.bool,/** Whether to only display layer groups but not individual layers in layertree. */onlyGroups:PropTypes.bool,removeLayer:PropTypes.func,reorderLayer:PropTypes.func,/** Whether to display a scale dependent legend. Can be `true|false|"theme"`, latter means only for theme layers. */scaleDependentLegend:PropTypes.oneOfType([PropTypes.bool,PropTypes.string]),setActiveLayerInfo:PropTypes.func,setActiveServiceInfo:PropTypes.func,setCurrentTask:PropTypes.func,setSwipe:PropTypes.func,setThemeLayersVisibilityPreset:PropTypes.func,/** Whether to display an icon linking to the layer attribute table in the layer options menu. */showAttributeTableLink:PropTypes.bool,/** Whether to display legend icons. */showLegendIcons:PropTypes.bool,/** Whether to display the queryable icon to indicate that a layer is identifyable. */showQueryableIcon:PropTypes.bool,/** Whether to display the root entry of the layertree. */showRootEntry:PropTypes.bool,/** Whether to display a checkbox to toggle all layers. */showToggleAllLayersCheckbox:PropTypes.bool,/** The side of the application on which to display the sidebar. */side:PropTypes.string,swipe:PropTypes.number,/** Template location for the legend print functionality */templatePath:PropTypes.string,theme:PropTypes.object,toggleMapTips:PropTypes.func,transparencyIcon:PropTypes.bool,/** The initial width of the layertree, as a CSS width string. */width:PropTypes.string,zoomToExtent:PropTypes.func});_defineProperty(LayerTree,"defaultProps",{layers:[],showLegendIcons:true,showRootEntry:true,showQueryableIcon:true,allowMapTips:true,allowCompare:true,allowImport:true,allowSelectIdentifyableLayers:false,groupTogglesSublayers:false,grayUnchecked:true,layerInfoGeometry:{initialWidth:480,initialHeight:480,initialX:null,initialY:null,initiallyDocked:false},bboxDependentLegend:false,flattenGroups:false,onlyGroups:false,width:"25em",enableLegendPrint:true,enableVisibleFilter:true,enableServiceInfo:true,infoInSettings:true,showToggleAllLayersCheckbox:true,transparencyIcon:true,side:"right",templatePath:":/templates/legendprint.html"});var selector=function selector(state){return{layers:state.layers.flat,filter:state.layers.filter,loadingLayers:state.layers.loading,map:state.map,mapScale:MapUtils.computeForZoom(state.map.scales,state.map.zoom),swipe:state.layers.swipe,theme:state.theme.current||{},mapTipsEnabled:state.map.maptips}};export default connect(selector,{addLayerSeparator:addLayerSeparator,changeLayerProperty:changeLayerProperty,removeLayer:removeLayer,reorderLayer:reorderLayer,toggleMapTips:toggleMapTips,setSwipe:setSwipe,setActiveLayerInfo:setActiveLayerInfo,setActiveServiceInfo:setActiveServiceInfo,setCurrentTask:setCurrentTask,setThemeLayersVisibilityPreset:setThemeLayersVisibilityPreset,zoomToExtent:zoomToExtent})(LayerTree);
|
|
@@ -0,0 +1 @@
|
|
|
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)}import React from"react";import{connect}from"react-redux";import PropTypes from"prop-types";import{setCurrentTask}from"../actions/task";import LocaleUtils from"../utils/LocaleUtils";import MiscUtils from"../utils/MiscUtils";var TourGuide=/*#__PURE__*/function(_React$Component){function TourGuide(){var _this;_classCallCheck(this,TourGuide);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,TourGuide,[].concat(args));_defineProperty(_this,"state",{tourSteps:[],driverObj:null,currentStepIndex:0,rawStepData:[]});_defineProperty(_this,"handleClick",function(driverObj,direction){var _this$state=_this.state,currentStepIndex=_this$state.currentStepIndex,rawStepData=_this$state.rawStepData;var currentRawStep=rawStepData[currentStepIndex];var actionNames=direction==="next"?currentRawStep===null||currentRawStep===void 0?void 0:currentRawStep.onNextClick:currentRawStep===null||currentRawStep===void 0?void 0:currentRawStep.onPrevClick;if(Array.isArray(actionNames)){actionNames.forEach(function(actionName){return _this.runCustomAction(actionName)})}else if(actionNames){_this.runCustomAction(actionNames)}_this.setState(function(prevState){return{currentStepIndex:direction==="next"?prevState.currentStepIndex+1:Math.max(prevState.currentStepIndex-1,0)}},function(){direction==="next"?driverObj.moveNext():driverObj.movePrevious()})});_defineProperty(_this,"runCustomAction",function(actionName){var _document$querySelect,_document$querySelect2;if(actionName.startsWith("setTask:")){_this.props.setCurrentTask(actionName.replace("setTask:","").trim());return}if(actionName.startsWith("openSubMenu:")){var submenuName=actionName.replace("openSubMenu:","").trim();var submenu=Array.from(document.querySelectorAll(".appmenu-submenu")).find(function(el){return el.querySelector("span.icon-".concat(submenuName))});if(submenu){submenu.classList.add("appmenu-submenu-expanded")}else{/* eslint-disable-next-line */console.warn("Submenu with icon-".concat(submenuName," not found."))}return}if(actionName.startsWith("closeSubMenu:")){var _submenuName=actionName.replace("closeSubMenu:","").trim();var _submenu=Array.from(document.querySelectorAll(".appmenu-submenu")).find(function(el){return el.querySelector("span.icon-".concat(_submenuName))});if(_submenu){_submenu.classList.remove("appmenu-submenu-expanded")}else{/* eslint-disable-next-line */console.warn("Submenu with icon-".concat(_submenuName," not found."))}return}switch(actionName){case"openMenu":(_document$querySelect=document.querySelector(".AppMenu"))===null||_document$querySelect===void 0||_document$querySelect.classList.add("appmenu-visible");break;case"closeMenu":(_document$querySelect2=document.querySelector(".AppMenu"))===null||_document$querySelect2===void 0||_document$querySelect2.classList.remove("appmenu-visible");break;default:/* eslint-disable-next-line */console.warn("Unknown action:",actionName)}});_defineProperty(_this,"startTour",function(){var _this$state$driverObj;(_this$state$driverObj=_this.state.driverObj)===null||_this$state$driverObj===void 0||_this$state$driverObj.drive()});return _this}_inherits(TourGuide,_React$Component);return _createClass(TourGuide,[{key:"componentDidMount",value:function componentDidMount(){var _this2=this;fetch(MiscUtils.resolveAssetsPath(this.props.tourGuideUrl)).then(function(response){return response.json()}).then(function(data){var steps=data.map(function(step){return{element:step.selector,popover:{title:step.title,description:step.content,side:step.side,align:step.align},disableActiveInteraction:step.disableActiveInteraction}});_this2.setState({tourSteps:steps,rawStepData:data})})["catch"](function(err){/* eslint-disable-next-line */console.error("Failed to fetch tour guide data:",err)})}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){var _this3=this;if(this.props.active&&!prevProps.active&&this.state.tourSteps){var tourSteps=this.state.tourSteps;import("driver.js/dist/driver.css");import("./style/TourGuide.css");import("driver.js").then(function(module){var driver=module.driver;var driverObj=driver({popoverClass:"driverjs-theme",nextBtnText:LocaleUtils.tr("tourguide.next")+" \u2192",prevBtnText:"\u2190 "+LocaleUtils.tr("tourguide.previous"),doneBtnText:LocaleUtils.tr("tourguide.done"),progressText:"{{current}} / {{total}}",showProgress:true,steps:tourSteps,onNextClick:function onNextClick(){return _this3.handleClick(driverObj,"next")},onPrevClick:function onPrevClick(){return _this3.handleClick(driverObj,"prev")},onDestroyed:function onDestroyed(){var _document$querySelect3;document.querySelectorAll(".AppMenu .appmenu-submenu").forEach(function(submenu){return submenu.classList.remove("appmenu-submenu-expanded")});(_document$querySelect3=document.querySelector(".AppMenu"))===null||_document$querySelect3===void 0||_document$querySelect3.classList.remove("appmenu-visible");_this3.props.setCurrentTask(null)},onHighlightStarted:function onHighlightStarted(_,step){var index=tourSteps.findIndex(function(s){return s.element===step.element});_this3.setState({currentStepIndex:index})}});_this3.setState({driverObj:driverObj},function(){_this3.startTour();_this3.props.setCurrentTask(null)})})["catch"](function(err){/* eslint-disable-next-line */console.error("Failed to load Driver.js:",err)})}}},{key:"render",value:function render(){return null}}])}(React.Component);_defineProperty(TourGuide,"propTypes",{active:PropTypes.bool,setCurrentTask:PropTypes.func,/** Url of the Tourguide JSON configuration. */tourGuideUrl:PropTypes.string});_defineProperty(TourGuide,"defaultProps",{tourGuideUrl:":/tourguide.json"});export default connect(function(state){return{active:state.task.id==="TourGuide"}},{setCurrentTask:setCurrentTask})(TourGuide);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
.driver-popover.driverjs-theme {
|
|
2
|
+
background-color: #f8f8f8;
|
|
3
|
+
color: #000;
|
|
4
|
+
border-radius: 0px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.driver-popover.driverjs-theme .driver-popover-title {
|
|
8
|
+
font-size: 20px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.driver-popover.driverjs-theme .driver-popover-title,
|
|
12
|
+
.driver-popover.driverjs-theme .driver-popover-description,
|
|
13
|
+
.driver-popover.driverjs-theme .driver-popover-progress-text {
|
|
14
|
+
color: #000;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.driver-popover.driverjs-theme button {
|
|
18
|
+
background-color: var(--button-bg-color);
|
|
19
|
+
color: var(--button-text-color);
|
|
20
|
+
border: 1px solid var(--border-color);
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
outline: none;
|
|
23
|
+
border-radius: 0px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.driver-popover.driverjs-theme button:hover {
|
|
27
|
+
background-color: var(--button-bg-color-hover);
|
|
28
|
+
color: var(--button-text-color-hover);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.driver-popover.driverjs-theme .driver-popover-navigation-btns {
|
|
32
|
+
gap: 3px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.driver-popover.driverjs-theme .driver-popover-close-btn {
|
|
36
|
+
background: none;
|
|
37
|
+
border: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.driver-popover.driverjs-theme .driver-popover-close-btn:hover {
|
|
41
|
+
background: none;
|
|
42
|
+
color: black;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.driver-popover.driverjs-theme
|
|
46
|
+
.driver-popover-arrow-side-left.driver-popover-arrow {
|
|
47
|
+
border-left-color: #f8f8f8;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.driver-popover.driverjs-theme
|
|
51
|
+
.driver-popover-arrow-side-right.driver-popover-arrow {
|
|
52
|
+
border-right-color: #f8f8f8;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.driver-popover.driverjs-theme
|
|
56
|
+
.driver-popover-arrow-side-top.driver-popover-arrow {
|
|
57
|
+
border-top-color: #f8f8f8;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.driver-popover.driverjs-theme
|
|
61
|
+
.driver-popover-arrow-side-bottom.driver-popover-arrow {
|
|
62
|
+
border-bottom-color: #f8f8f8;
|
|
63
|
+
}
|
package/reducers/layers.js
CHANGED
|
@@ -12,5 +12,5 @@ LayerUtils.propagateLayerProperty(newsublayer,action.property,action.newvalue)}i
|
|
|
12
12
|
LayerUtils.propagateLayerProperty(newlayer,action.property,action.newvalue,action.sublayerpath)}if(newlayer.type==="wms"){Object.assign(newlayer,LayerUtils.buildWMSLayerParams(newlayer,state.filter))}if(newlayer.role===LayerRole.BACKGROUND){UrlParams.updateParams({bl:newlayer.visibility?newlayer.name:""})}return newlayer}else if(layer.role===LayerRole.BACKGROUND&&backgroundVisibilityChanged){return _objectSpread(_objectSpread({},layer),{},{visibility:false})}return layer});UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(newLayers)});return _objectSpread(_objectSpread({},state),{},{flat:newLayers})}case SET_LAYER_DIMENSIONS:{var _state$flat$find;// Set dimensions for all layers with the same URL (i.e. if a WMS is split)
|
|
13
13
|
var layerUrl=(_state$flat$find=state.flat.find(function(layer){return layer.id===action.layerId}))===null||_state$flat$find===void 0?void 0:_state$flat$find.url;if(!layerUrl){return""}var _newLayers=(state.flat||[]).map(function(layer){if(layer.url===layerUrl){var newLayer=_objectSpread(_objectSpread({},layer),{},{dimensionValues:action.dimensions});Object.assign(newLayer,LayerUtils.buildWMSLayerParams(newLayer,state.filter));return newLayer}return layer});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers})}case ADD_LAYER:{var _action$layer$visibil,_action$layer$opacity;var _newLayers2=(state.flat||[]).concat();var layerId=action.layer.id||uuidv4();var newLayer=_objectSpread(_objectSpread({},action.layer),{},{id:layerId,name:action.layer.name||layerId,role:action.layer.role||LayerRole.USERLAYER,queryable:action.layer.queryable||false,visibility:(_action$layer$visibil=action.layer.visibility)!==null&&_action$layer$visibil!==void 0?_action$layer$visibil:true,opacity:(_action$layer$opacity=action.layer.opacity)!==null&&_action$layer$opacity!==void 0?_action$layer$opacity:255,layertreehidden:action.layer.layertreehidden||action.layer.role>LayerRole.USERLAYER});if(action.beforename){_newLayers2=LayerUtils.insertLayer(_newLayers2,newLayer,"name",action.beforename)}else{var inspos=0;if(action.pos===null){for(;inspos<_newLayers2.length&&newLayer.role<_newLayers2[inspos].role;++inspos);}else{inspos=action.pos}_newLayers2.splice(inspos,0,newLayer);// Compress layers if possible
|
|
14
14
|
_newLayers2=LayerUtils.implodeLayers(LayerUtils.explodeLayers(_newLayers2))}var _iterator=_createForOfIteratorHelper(_newLayers2),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var lyr=_step.value;if(lyr.type==="wms"){Object.assign(lyr,LayerUtils.buildWMSLayerParams(lyr,state.filter))}}}catch(err){_iterator.e(err)}finally{_iterator.f()}UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers2)});if(newLayer.role===LayerRole.BACKGROUND&&newLayer.visibility){UrlParams.updateParams({bl:newLayer.name})}return _objectSpread(_objectSpread({},state),{},{flat:_newLayers2})}case ADD_LAYER_SEPARATOR:{var _newLayers3=LayerUtils.insertSeparator(state.flat,action.title,action.afterLayerId,action.afterSublayerPath);var _iterator2=_createForOfIteratorHelper(_newLayers3),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var layer=_step2.value;if(layer.type==="wms"){Object.assign(layer,LayerUtils.buildWMSLayerParams(layer,state.filter))}}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers3)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers3})}case REMOVE_LAYER:{var _layer=state.flat.find(function(l){return l.id===action.layerId});if(!_layer){return state}var _newLayers4=state.flat;if(_layer.role===LayerRole.BACKGROUND||isEmpty(action.sublayerpath)){var position=state.flat.findIndex(function(l){return l.id===action.layerId});_newLayers4=_toConsumableArray(_newLayers4);_newLayers4.splice(position,1);if(position>0&&position<_newLayers4.length&&_newLayers4[position-1].id===_newLayers4[position].id){// Compress layers
|
|
15
|
-
_newLayers4=LayerUtils.implodeLayers(LayerUtils.explodeLayers(_newLayers4))}}else{_newLayers4=LayerUtils.removeLayer(state.flat,_layer,action.sublayerpath).map(function(l){if(l.type==="wms"){return _objectSpread(_objectSpread({},l),LayerUtils.buildWMSLayerParams(l,state.filter))}else{return l}})}UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers4)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers4})}case ADD_LAYER_FEATURES:{var _layerId=action.layer.id||uuidv4();var _newLayers5=(state.flat||[]).concat();var idx=_newLayers5.findIndex(function(layer){return layer.id===_layerId});if(idx===-1){var newFeatures=action.features.map(function(f){return _objectSpread(_objectSpread({},f),{},{id:f.id||(f.properties||{}).id||uuidv4()})});var _newLayer=_objectSpread(_objectSpread({},action.layer),{},{id:_layerId,type:"vector",name:action.layer.name||_layerId,features:newFeatures,role:action.layer.role||LayerRole.USERLAYER,queryable:action.layer.queryable||false,visibility:action.layer.visibility||true,opacity:action.layer.opacity||255,layertreehidden:action.layer.layertreehidden||action.layer.role>LayerRole.USERLAYER,bbox:VectorLayerUtils.computeFeaturesBBox(action.features)});var _inspos=0;for(;_inspos<_newLayers5.length&&_newLayer.role<_newLayers5[_inspos].role;++_inspos);_newLayers5.splice(_inspos,0,_newLayer)}else{var addFeatures=action.features.map(function(f){return _objectSpread(_objectSpread({},f),{},{id:f.id||(f.properties||{}).id||uuidv4()})});var _newFeatures=action.clear?addFeatures:[].concat(_toConsumableArray((_newLayers5[idx].features||[]).filter(function(f){return!addFeatures.find(function(g){return g.id===f.id})})),_toConsumableArray(addFeatures));_newLayers5[idx]=_objectSpread(_objectSpread({},_newLayers5[idx]),{},{features:_newFeatures,bbox:VectorLayerUtils.computeFeaturesBBox(_newFeatures),rev:action.layer.rev})}return _objectSpread(_objectSpread({},state),{},{flat:_newLayers5})}case REMOVE_LAYER_FEATURES:{var changed=false;var _newLayers6=(state.flat||[]).reduce(function(result,layer){if(layer.id===action.layerId){var _newFeatures2=(layer.features||[]).filter(function(f){return action.featureIds.includes(f.id)===false});if(!isEmpty(_newFeatures2)||action.keepEmptyLayer){result.push(_objectSpread(_objectSpread({},layer),{},{features:_newFeatures2,bbox:VectorLayerUtils.computeFeaturesBBox(_newFeatures2)}))}changed=true}else{result.push(layer)}return result},[]);if(changed){return _objectSpread(_objectSpread({},state),{},{flat:_newLayers6})}else{return state}}case CLEAR_LAYER:{var _newLayers7=(state.flat||[]).map(function(layer){if(layer.id===action.layerId){return _objectSpread(_objectSpread({},layer),{},{features:[],bbox:null})}else{return layer}});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers7})}case ADD_THEME_SUBLAYER:{var themeLayerIdx=state.flat.findIndex(function(layer){return layer.role===LayerRole.THEME});if(themeLayerIdx>=0){var _newLayers8=state.flat.slice(0);_newLayers8[themeLayerIdx]=LayerUtils.mergeSubLayers(state.flat[themeLayerIdx],action.layer);_newLayers8[themeLayerIdx].visibility=true;Object.assign(_newLayers8[themeLayerIdx],LayerUtils.buildWMSLayerParams(_newLayers8[themeLayerIdx],state.filter));UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers8)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers8})}return state}case REFRESH_LAYER:{var _newLayers9=(state.flat||[]).map(function(layer){if(action.filter(layer)){return _objectSpread(_objectSpread({},layer),{},{rev:+new Date})}return layer});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers9})}case REMOVE_ALL_LAYERS:{return defaultState}case REORDER_LAYER:{var _newLayers10=LayerUtils.reorderLayer(state.flat,action.layer,action.sublayerpath,action.direction,action.preventSplittingGroups).map(function(layer){if(layer.type==="wms"){return _objectSpread(_objectSpread({},layer),LayerUtils.buildWMSLayerParams(layer,state.filter))}else{return layer}});UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers10)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers10})}case REPLACE_PLACEHOLDER_LAYER:{var _newLayers11=state.flat||[];if(action.layer){_newLayers11=_newLayers11.map(function(layer){if(layer.type==="placeholder"&&layer.id===action.id){var _newLayer2=_objectSpread(_objectSpread(_objectSpread({},layer),action.layer),{},{role:layer.role,id:layer.id});// For background layers, preserve any custom title/attribution
|
|
16
|
-
if(layer.role===LayerRole.BACKGROUND){_newLayer2.title=layer.title||action.layer.title;_newLayer2.attribution=layer.attribution||action.layer.attribution}delete _newLayer2.loading;if(_newLayer2.type==="wms"){Object.assign(_newLayer2,LayerUtils.buildWMSLayerParams(_newLayer2,state.filter))}return _newLayer2}else{return layer}})}else{_newLayers11=_newLayers11.filter(function(layer){return!(layer.type==="placeholder"&&layer.id===action.id)})}UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers11)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers11})}case SET_SWIPE:{return _objectSpread(_objectSpread({},state),{},{swipe:action.swipe})}case SET_FILTER:{var filter={filterParams:action.filter,filterGeom:action.filterGeom,timeRange:action.timeRange};var _newLayers12=state.flat.map(function(layer){if(layer.type==="wms"){return _objectSpread(_objectSpread({},layer),LayerUtils.buildWMSLayerParams(layer,filter))}return layer});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers12,filter:filter})}case SET_THEME_LAYERS_VISIBILITY_PRESET:{var _newLayers13=state.flat.map(function(layer){if(layer.role===LayerRole.THEME){var _newLayer3=LayerUtils.applyVisibilityPreset(layer,action.preset);return _objectSpread(_objectSpread({},_newLayer3),LayerUtils.buildWMSLayerParams(_newLayer3,state.filter))}else{return layer}});UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers13)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers13})}default:return state}}
|
|
15
|
+
_newLayers4=LayerUtils.implodeLayers(LayerUtils.explodeLayers(_newLayers4))}}else{_newLayers4=LayerUtils.removeLayer(state.flat,_layer,action.sublayerpath).map(function(l){if(l.type==="wms"){return _objectSpread(_objectSpread({},l),LayerUtils.buildWMSLayerParams(l,state.filter))}else{return l}})}UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers4)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers4})}case ADD_LAYER_FEATURES:{var _layerId=action.layer.id||uuidv4();var _newLayers5=(state.flat||[]).concat();var idx=_newLayers5.findIndex(function(layer){return layer.id===_layerId});if(idx===-1){var newFeatures=action.features.map(function(f){return _objectSpread(_objectSpread({},f),{},{id:f.id||(f.properties||{}).id||uuidv4()})});var _newLayer=_objectSpread(_objectSpread({},action.layer),{},{id:_layerId,type:"vector",name:action.layer.name||_layerId,features:newFeatures,role:action.layer.role||LayerRole.USERLAYER,queryable:action.layer.queryable||false,visibility:action.layer.visibility||true,opacity:action.layer.opacity||255,layertreehidden:action.layer.layertreehidden||action.layer.role>LayerRole.USERLAYER,bbox:VectorLayerUtils.computeFeaturesBBox(action.features)});var _inspos=0;for(;_inspos<_newLayers5.length&&_newLayer.role<_newLayers5[_inspos].role;++_inspos);_newLayers5.splice(_inspos,0,_newLayer)}else{var addFeatures=action.features.map(function(f){return _objectSpread(_objectSpread({},f),{},{id:f.id||(f.properties||{}).id||uuidv4()})});var _newFeatures=action.clear?addFeatures:[].concat(_toConsumableArray((_newLayers5[idx].features||[]).filter(function(f){return!addFeatures.find(function(g){return g.id===f.id})})),_toConsumableArray(addFeatures));_newLayers5[idx]=_objectSpread(_objectSpread({},_newLayers5[idx]),{},{features:_newFeatures,bbox:VectorLayerUtils.computeFeaturesBBox(_newFeatures),rev:action.layer.rev})}return _objectSpread(_objectSpread({},state),{},{flat:_newLayers5})}case REMOVE_LAYER_FEATURES:{var changed=false;var _newLayers6=(state.flat||[]).reduce(function(result,layer){if(layer.id===action.layerId){var _newFeatures2=(layer.features||[]).filter(function(f){return action.featureIds.includes(f.id)===false});if(!isEmpty(_newFeatures2)||action.keepEmptyLayer){result.push(_objectSpread(_objectSpread({},layer),{},{features:_newFeatures2,bbox:VectorLayerUtils.computeFeaturesBBox(_newFeatures2)}))}changed=true}else{result.push(layer)}return result},[]);if(changed){return _objectSpread(_objectSpread({},state),{},{flat:_newLayers6})}else{return state}}case CLEAR_LAYER:{var _newLayers7=(state.flat||[]).map(function(layer){if(layer.id===action.layerId){return _objectSpread(_objectSpread({},layer),{},{features:[],bbox:null})}else{return layer}});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers7})}case ADD_THEME_SUBLAYER:{var themeLayerIdx=state.flat.findIndex(function(layer){return layer.role===LayerRole.THEME});if(themeLayerIdx>=0){var _newLayers8=state.flat.slice(0);_newLayers8[themeLayerIdx]=LayerUtils.mergeSubLayers(state.flat[themeLayerIdx],action.layer);_newLayers8[themeLayerIdx].visibility=true;Object.assign(_newLayers8[themeLayerIdx],LayerUtils.buildWMSLayerParams(_newLayers8[themeLayerIdx],state.filter));UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers8)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers8})}return state}case REFRESH_LAYER:{var _newLayers9=(state.flat||[]).map(function(layer){if(action.filter(layer)){return _objectSpread(_objectSpread({},layer),{},{rev:+new Date})}return layer});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers9})}case REMOVE_ALL_LAYERS:{return defaultState}case REORDER_LAYER:{var _newLayers10=LayerUtils.reorderLayer(state.flat,action.layer,action.sublayerpath,action.direction,action.preventSplittingGroups).map(function(layer){if(layer.type==="wms"){return _objectSpread(_objectSpread({},layer),LayerUtils.buildWMSLayerParams(layer,state.filter))}else{return layer}});UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers10)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers10})}case REPLACE_PLACEHOLDER_LAYER:{var _newLayers11=state.flat||[];if(action.layer){_newLayers11=_newLayers11.map(function(layer){if(layer.type==="placeholder"&&layer.id===action.id){var _newLayer2=_objectSpread(_objectSpread(_objectSpread({},layer),action.layer),{},{role:layer.role,id:layer.id});// For background layers, preserve any custom title/attribution/opacity
|
|
16
|
+
if(layer.role===LayerRole.BACKGROUND){_newLayer2.title=layer.title||action.layer.title;_newLayer2.attribution=layer.attribution||action.layer.attribution;_newLayer2.opacity=layer.opacity||action.layer.opacity}delete _newLayer2.loading;if(_newLayer2.type==="wms"){Object.assign(_newLayer2,LayerUtils.buildWMSLayerParams(_newLayer2,state.filter))}return _newLayer2}else{return layer}})}else{_newLayers11=_newLayers11.filter(function(layer){return!(layer.type==="placeholder"&&layer.id===action.id)})}UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers11)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers11})}case SET_SWIPE:{return _objectSpread(_objectSpread({},state),{},{swipe:action.swipe})}case SET_FILTER:{var filter={filterParams:action.filter,filterGeom:action.filterGeom,timeRange:action.timeRange};var _newLayers12=state.flat.map(function(layer){if(layer.type==="wms"){return _objectSpread(_objectSpread({},layer),LayerUtils.buildWMSLayerParams(layer,filter))}return layer});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers12,filter:filter})}case SET_THEME_LAYERS_VISIBILITY_PRESET:{var _newLayers13=state.flat.map(function(layer){if(layer.role===LayerRole.THEME){var _newLayer3=LayerUtils.applyVisibilityPreset(layer,action.preset);return _objectSpread(_objectSpread({},_newLayer3),LayerUtils.buildWMSLayerParams(_newLayer3,state.filter))}else{return layer}});UrlParams.updateParams({l:LayerUtils.buildWMSLayerUrlParam(_newLayers13)});return _objectSpread(_objectSpread({},state),{},{flat:_newLayers13})}default:return state}}
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Redlining",
|
|
54
54
|
"Routing": "Маршрутизиране",
|
|
55
55
|
"Tools": "Инструменти за карта",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Мениджър на времето",
|
|
57
58
|
"View3D": "3D изглед"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Увеличаване на мащаба",
|
|
682
683
|
"zoomout": "Увеличаване на мащаба"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Línia de demarcació",
|
|
54
54
|
"Routing": "Routing",
|
|
55
55
|
"Tools": "Eines de Mapa",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Gestor de Temps",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Apropar",
|
|
682
683
|
"zoomout": "Allunyar"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Připomínkování",
|
|
54
54
|
"Routing": "Trasy",
|
|
55
55
|
"Tools": "Nástroje mapy",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Přiblížit",
|
|
682
683
|
"zoomout": "Oddálit"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Zeichnen",
|
|
54
54
|
"Routing": "Routing",
|
|
55
55
|
"Tools": "Werkzeuge",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Zeitleiste",
|
|
57
58
|
"View3D": "3D Ansicht"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Hineinzoomen",
|
|
682
683
|
"zoomout": "Hinauszoomen"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "Alle",
|
|
686
692
|
"allbands": "Alle Bänder",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Zeichnen",
|
|
54
54
|
"Routing": "Routing",
|
|
55
55
|
"Tools": "Werkzeuge",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Zeitleiste",
|
|
57
58
|
"View3D": "3D Ansicht"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Hineinzoomen",
|
|
682
683
|
"zoomout": "Hinauszoomen"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "Alle",
|
|
686
692
|
"allbands": "Alle Bänder",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Redlining",
|
|
54
54
|
"Routing": "Routing",
|
|
55
55
|
"Tools": "Map Tools",
|
|
56
|
+
"TourGuide": "Tour Guide",
|
|
56
57
|
"TimeManager": "Time Manager",
|
|
57
58
|
"View3D": "3D View"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Zoom in",
|
|
682
683
|
"zoomout": "Zoom out"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "Done",
|
|
687
|
+
"next": "Next",
|
|
688
|
+
"previous": "Previous"
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "All",
|
|
686
692
|
"allbands": "All bands",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Línea de demarcación",
|
|
54
54
|
"Routing": "Routing",
|
|
55
55
|
"Tools": "Herramientas de Mapa",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Gestor de Tiempo",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Acercarse",
|
|
682
683
|
"zoomout": "Alejarse"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Omat merkinnät",
|
|
54
54
|
"Routing": "",
|
|
55
55
|
"Tools": "Karttatyökalut",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Zoomaa sisään",
|
|
682
683
|
"zoomout": "Zoomaa ulos"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Dessiner",
|
|
54
54
|
"Routing": "Routage",
|
|
55
55
|
"Tools": "Outils",
|
|
56
|
+
"TourGuide": "Visite Guidée",
|
|
56
57
|
"TimeManager": "Ligne du temps",
|
|
57
58
|
"View3D": "Vue 3D"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Zoomer",
|
|
682
683
|
"zoomout": "Dézoomer"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "Terminé",
|
|
687
|
+
"next": "Suivant",
|
|
688
|
+
"previous": "Précédent"
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "Tous",
|
|
686
692
|
"allbands": "Tous les bandes",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Vázlat",
|
|
54
54
|
"Routing": "",
|
|
55
55
|
"Tools": "Térkép eszközök",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "",
|
|
682
683
|
"zoomout": ""
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Strumenti di disegno",
|
|
54
54
|
"Routing": "Routing",
|
|
55
55
|
"Tools": "Strumenti",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Linea temporale",
|
|
57
58
|
"View3D": "Vista 3D"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Ingrandisci",
|
|
682
683
|
"zoomout": "Rimpicciolisci"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "Tutte",
|
|
686
692
|
"allbands": "Tutte le bande",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "スケッチ",
|
|
54
54
|
"Routing": "ルート探索",
|
|
55
55
|
"Tools": "地図ツール",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "タイム・マネージャ",
|
|
57
58
|
"View3D": "3D 表示"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "ズーム・イン",
|
|
682
683
|
"zoomout": "ズーム・アウト"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Redlining",
|
|
54
54
|
"Routing": "Routing",
|
|
55
55
|
"Tools": "Tools",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Tijd Manager",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Inzoomen",
|
|
682
683
|
"zoomout": "Uitzoomen"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Redlining",
|
|
54
54
|
"Routing": "",
|
|
55
55
|
"Tools": "Kartverktøy",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Zoom inn",
|
|
682
683
|
"zoomout": "Zoom ut"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Redlining",
|
|
54
54
|
"Routing": "",
|
|
55
55
|
"Tools": "Narzędzia Mapy",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Przybliż",
|
|
682
683
|
"zoomout": "Oddal"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Linha de demarcação",
|
|
54
54
|
"Routing": "Roteamento",
|
|
55
55
|
"Tools": "Ferramentas de mapa",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Gerenciador de tempo",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Mais zoom",
|
|
682
683
|
"zoomout": "Reduzir o zoom"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Marcação",
|
|
54
54
|
"Routing": "Roteamento",
|
|
55
55
|
"Tools": "Ferramentas do Mapa",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Gestor de Tempo",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Aumentar Zoom",
|
|
682
683
|
"zoomout": "Diminuir Zoom"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Evidențiere",
|
|
54
54
|
"Routing": "Traseu",
|
|
55
55
|
"Tools": "Unelte hartă",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Informații temporale",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Mărire",
|
|
682
683
|
"zoomout": "Micșorare"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Обводка",
|
|
54
54
|
"Routing": "",
|
|
55
55
|
"Tools": "Средства картографии",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Увеличить",
|
|
682
683
|
"zoomout": "Уменьшить"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Rita",
|
|
54
54
|
"Routing": "",
|
|
55
55
|
"Tools": "Kartverktyg",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "",
|
|
57
58
|
"View3D": ""
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Zooma in",
|
|
682
683
|
"zoomout": "Zooma ut"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"Redlining": "Serbest Çizim",
|
|
54
54
|
"Routing": "Navigasyon",
|
|
55
55
|
"Tools": "Harita Araçları",
|
|
56
|
+
"TourGuide": "",
|
|
56
57
|
"TimeManager": "Zaman Yöneticisi",
|
|
57
58
|
"View3D": "3 Boyutlu Görünüm"
|
|
58
59
|
},
|
|
@@ -681,6 +682,11 @@
|
|
|
681
682
|
"zoomin": "Yaklaş",
|
|
682
683
|
"zoomout": "Uzaklaş"
|
|
683
684
|
},
|
|
685
|
+
"tourguide": {
|
|
686
|
+
"done": "",
|
|
687
|
+
"next": "",
|
|
688
|
+
"previous": ""
|
|
689
|
+
},
|
|
684
690
|
"valuetool": {
|
|
685
691
|
"all": "",
|
|
686
692
|
"allbands": "",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"appmenu.items.Redlining",
|
|
51
51
|
"appmenu.items.Routing",
|
|
52
52
|
"appmenu.items.Tools",
|
|
53
|
+
"appmenu.items.TourGuide",
|
|
53
54
|
"appmenu.items.Bookmark",
|
|
54
55
|
"appmenu.items.TimeManager",
|
|
55
56
|
"appmenu.items.View3D",
|
|
@@ -587,6 +588,9 @@
|
|
|
587
588
|
"tooltip.home",
|
|
588
589
|
"tooltip.zoomin",
|
|
589
590
|
"tooltip.zoomout",
|
|
591
|
+
"tourguide.done",
|
|
592
|
+
"tourguide.next",
|
|
593
|
+
"tourguide.previous",
|
|
590
594
|
"valuetool.all",
|
|
591
595
|
"valuetool.allbands",
|
|
592
596
|
"valuetool.alllayers",
|
package/utils/LayerUtils.js
CHANGED
|
@@ -9,13 +9,12 @@ var _iterator=_createForOfIteratorHelper(exploded),_step;try{var _loop=function
|
|
|
9
9
|
}catch(err){_iterator.e(err)}finally{_iterator.f()}var external=[];var _iterator2=_createForOfIteratorHelper(layerConfigs),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var layerConfig=_step2.value;if(layerConfig.type==="separator"){// No point restoring separators
|
|
10
10
|
}else if(layerConfig.type!=="theme"){external=external.concat(LayerUtils.createExternalLayerPlaceholder(layerConfig,externalLayers,layerConfig.id))}}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}exploded=[].concat(_toConsumableArray(external),_toConsumableArray(exploded));LayerUtils.insertPermalinkLayers(exploded,permalinkLayers);var layers=LayerUtils.implodeLayers(exploded);LayerUtils.setGroupVisiblities(layers);return layers},restoreOrderedLayerParams:function restoreOrderedLayerParams(themeLayer,layerConfigs,permalinkLayers,externalLayers){var exploded=LayerUtils.explodeLayers([themeLayer]);var reordered=[];// Iterate over layer configs and reorder items accordingly, create external layer placeholders as neccessary
|
|
11
11
|
var _iterator3=_createForOfIteratorHelper(layerConfigs),_step3;try{var _loop2=function _loop2(){var layerConfig=_step3.value;if(layerConfig.type==="theme"){var entry=exploded.find(function(e){return e.sublayer.name===layerConfig.name});if(entry){entry.sublayer.opacity=layerConfig.opacity;entry.sublayer.visibility=layerConfig.visibility||layerConfig.tristate;entry.sublayer.tristate=layerConfig.tristate;entry.sublayer.style=layerConfig.style;if(!entry.sublayer.style){entry.sublayer.style=!isEmpty(entry.sublayer.styles)?Object.keys(entry.sublayer.styles)[0]:""}reordered.push(entry)}}else if(layerConfig.type==="separator"){reordered=reordered.concat(LayerUtils.createSeparatorLayer(layerConfig.name))}else{reordered=reordered.concat(LayerUtils.createExternalLayerPlaceholder(layerConfig,externalLayers,layerConfig.id))}};for(_iterator3.s();!(_step3=_iterator3.n()).done;){_loop2()}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}LayerUtils.insertPermalinkLayers(reordered,permalinkLayers);var layers=LayerUtils.implodeLayers(reordered);LayerUtils.setGroupVisiblities(layers);return layers},setGroupVisiblities:function setGroupVisiblities(layers){var parentVisible=false;var parentInvisible=false;var _iterator4=_createForOfIteratorHelper(layers),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var layer=_step4.value;if(!isEmpty(layer.sublayers)){layer.visibility=LayerUtils.setGroupVisiblities(layer.sublayers)}parentInvisible=parentInvisible||layer.tristate;delete layer.tristate;parentVisible=parentVisible||layer.visibility}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}return parentVisible&&!parentInvisible},createSeparatorLayer:function createSeparatorLayer(title){return LayerUtils.explodeLayers([{type:"separator",title:title,role:LayerRole.USERLAYER,id:uuidv4()}])},createExternalLayerPlaceholder:function createExternalLayerPlaceholder(layerConfig,externalLayers,id){var key=layerConfig.type+":"+layerConfig.url;(externalLayers[key]=externalLayers[key]||[]).push({id:id,name:layerConfig.name,opacity:layerConfig.opacity,visibility:layerConfig.visibility,style:layerConfig.style,params:layerConfig.params});return LayerUtils.explodeLayers([{id:id,type:"placeholder",name:layerConfig.name,title:layerConfig.name,role:LayerRole.USERLAYER,loading:true}])},insertPermalinkLayers:function insertPermalinkLayers(exploded,layers){var _iterator5=_createForOfIteratorHelper(layers||[]),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var layer=_step5.value;var insLayer=LayerUtils.explodeLayers([layer])[0];if(insLayer.layer.role!==LayerRole.USERLAYER||insLayer.layer.type!=="vector"){continue}delete insLayer.layer.pos;exploded.splice(layer.pos,0,insLayer)}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}},collectWMSSublayerParams:function collectWMSSublayerParams(sublayer,layerNames,opacities,styles,queryable,visibilities,parentVisibility){var layerVisibility=sublayer.visibility===undefined?true:sublayer.visibility;var visibility=layerVisibility&&parentVisibility;if(visibility||visibilities){if(!isEmpty(sublayer.sublayers)){// Is group
|
|
12
|
-
sublayer.sublayers.map(function(sublyr){LayerUtils.collectWMSSublayerParams(sublyr,layerNames,opacities,styles,queryable,visibilities,visibility)})}else{layerNames.push(sublayer.name);opacities.push(Number.isInteger(sublayer.opacity)?sublayer.opacity:255)
|
|
13
|
-
styles.push(Object.keys(sublayer.styles||{}).length>1?sublayer.style||"":"");if(sublayer.queryable&&!sublayer.omitFromQueryLayers){queryable.push(sublayer.name)}if(visibilities){// eslint-disable-next-line
|
|
12
|
+
sublayer.sublayers.map(function(sublyr){LayerUtils.collectWMSSublayerParams(sublyr,layerNames,opacities,styles,queryable,visibilities,visibility)})}else{layerNames.push(sublayer.name);opacities.push(Number.isInteger(sublayer.opacity)?sublayer.opacity:255);styles.push(sublayer.style||"");if(sublayer.queryable&&!sublayer.omitFromQueryLayers){queryable.push(sublayer.name)}if(visibilities){// eslint-disable-next-line
|
|
14
13
|
visibilities.push(layerVisibility?parentVisibility?1:0.5:0)}}}},buildWMSLayerParams:function buildWMSLayerParams(layer){var filter=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var params=layer.params||{};var newParams={};var queryLayers=[];var initialOpacities=undefined;if(!Array.isArray(layer.sublayers)){var _ref,_layer$style;var layers=(params.LAYERS||layer.name).split(",").filter(Boolean);newParams=_objectSpread({LAYERS:layers.join(","),STYLES:(_ref=(_layer$style=layer.style)!==null&&_layer$style!==void 0?_layer$style:params.STYLES)!==null&&_ref!==void 0?_ref:layers.map(function(){return""}).join(",")},layer.dimensionValues);if(params.OPACITIES){var _ref2,_layer$initialOpaciti,_layer$opacity;// Background layers may just contain layer.params.OPACITIES
|
|
15
14
|
// User layers will be controlled with layer.opacity, and value will be replicated in layer.params.OPACITIES
|
|
16
15
|
// => Store the initial layer.params.OPACITIES as initialOpacities, compute actual opacities
|
|
17
16
|
// by multipliying layer.opacity with initialOpacities
|
|
18
|
-
initialOpacities=(_ref2=(_layer$initialOpaciti=layer.initialOpacities)!==null&&_layer$initialOpaciti!==void 0?_layer$initialOpaciti:params.OPACITIES)!==null&&_ref2!==void 0?_ref2:"";var opacities=initialOpacities.split(",").filter(Boolean);var opacityMult=((_layer$opacity=layer.opacity)!==null&&_layer$opacity!==void 0?_layer$opacity:255)/255;newParams.OPACITIES=layers.map(function(x,i){var _opacities$i;return Math.round(((_opacities$i=opacities[i])!==null&&_opacities$i!==void 0?_opacities$i:"255")*opacityMult)}).map(Math.round).join(",")}queryLayers=layer.queryable&&!layer.omitFromQueryLayers?[layer.name]:[]}else{var layerNames=[];var _opacities=[];var styles=[];layer.sublayers.map(function(sublayer){LayerUtils.collectWMSSublayerParams(sublayer,layerNames,_opacities,styles,queryLayers,null,layer.visibility)});layerNames.reverse();_opacities.reverse();styles.reverse();if(layer.drawingOrder&&layer.drawingOrder.length>0){var indices=layer.drawingOrder.map(function(lyr){return layerNames.indexOf(lyr)}).filter(function(idx){return idx>=0});layerNames=indices.map(function(idx){return layerNames[idx]});_opacities=indices.map(function(idx){return _opacities[idx]});styles=indices.map(function(idx){return styles[idx]})}newParams=_objectSpread({LAYERS:layerNames.join(","),OPACITIES:_opacities.map(Math.round).join(","),STYLES:styles.join(",")},layer.dimensionValues)}if(filter.filterParams){newParams.FILTER=Object.entries(filter.filterParams).reduce(function(res,_ref3){var _ref4=_slicedToArray(_ref3,2),layername=_ref4[0],filters=_ref4[1];if(!newParams.LAYERS.split(",").includes(layername)){return res}return[].concat(_toConsumableArray(res),[layername+":"+filters.map(function(expr){return Array.isArray(expr)?LayerUtils.formatFilterExpr(expr):"AND"}).join(" ")])},[]).join(";")}if(filter.filterGeom){newParams.FILTER_GEOM=VectorLayerUtils.geoJSONGeomToWkt(filter.filterGeom)}return{params:newParams,queryLayers:queryLayers,initialOpacities:initialOpacities}},formatFilterExpr:function formatFilterExpr(expr){var _this=this;if(expr.length===3&&typeof expr[0]==="string"){var op=expr[1].toUpperCase();if(typeof expr[2]==="number"){return"\"".concat(expr[0],"\" ").concat(op," ").concat(expr[2])}else if(expr[2]===null){return"\"".concat(expr[0],"\" ").concat(op," NULL")}else if(Array.isArray(expr[2])){return"\"".concat(expr[0],"\" ").concat(op," ( ").concat(expr[2].join(" , ")," )")}else{return"\"".concat(expr[0],"\" ").concat(op," '").concat(expr[2],"'")}}else{return"( "+expr.map(function(entry){return Array.isArray(entry)?_this.formatFilterExpr(entry):entry.toUpperCase()}).join(" ")+" )"}},buildWMSLayerUrlParam:function buildWMSLayerUrlParam(layers){var layernames=[];var opacities=[];var styles=[];var visibilities=[];var queryable=[];var _iterator6=_createForOfIteratorHelper(layers),_step6;try{var _loop3=function _loop3(){var layer=_step6.value;if(layer.role===LayerRole.THEME&&!isEmpty(layer.sublayers)){LayerUtils.collectWMSSublayerParams(layer,layernames,opacities,styles,queryable,visibilities,layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="wms"){var sublayernames=[];LayerUtils.collectWMSSublayerParams(layer,sublayernames,opacities,styles,queryable,visibilities,layer.visibility);var layerurl=layer.url;if(layer.extwmsparams){layerurl+=(layerurl.includes("?")?"&":"?")+Object.entries(layer.extwmsparams||{}).map(function(_ref5){var _ref6=_slicedToArray(_ref5,2),key=_ref6[0],value=_ref6[1];return"extwms."+key+"="+value}).join("&")}layernames.push.apply(layernames,_toConsumableArray(sublayernames.map(function(name){return"wms:"+layerurl+"#"+name})))}else if(layer.role===LayerRole.USERLAYER&&(layer.type==="wfs"||layer.type==="wmts")){layernames.push(layer.type+":"+(layer.capabilitiesUrl||layer.url)+"#"+layer.name);opacities.push(layer.opacity);styles.push(layer.style);visibilities.push(layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="separator"){layernames.push("sep:"+layer.title);opacities.push(255);styles.push("");visibilities.push(true)}};for(_iterator6.s();!(_step6=_iterator6.n()).done;){_loop3()}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}var result=layernames.map(function(layername,idx){var param=layername;if(opacities[idx]<255){param+="["+(100-Math.round(opacities[idx]/255*100))+"]"}if(styles[idx]){param+="{"+styles[idx]+"}"}if(visibilities[idx]===0||visibilities[idx]===false){param+="!"}else if(visibilities[idx]===0.5){param+="~"}return param});if(ConfigUtils.getConfigProp("urlReverseLayerOrder")){result.reverse()}return result.join(",")},splitLayerUrlParam:function splitLayerUrlParam(entry){var opacityPattern=/\[(\d+)\]/;var stylePattern=/{([^}]+)}/;var extPattern=/^(\w+):(.*)#([^#]+)$/;var id=uuidv4();var type="theme";var layerUrl=null;var opacity=255;var style="";var visibility=true;var tristate=false;if(entry.endsWith("!")){visibility=false;entry=entry.slice(0,-1)}else if(entry.endsWith("~")){visibility=false;tristate=true;entry=entry.slice(0,-1)}var m=null;if(m=entry.match(opacityPattern)){opacity=Math.round(255-parseFloat(m[1])/100*255);entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}if(m=entry.match(stylePattern)){style=m[1];entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}var name=entry;if(m=entry.match(extPattern)){type=m[1];layerUrl=m[2];name=m[3]}else if(name.startsWith("sep:")){type="separator";name=name.slice(4)}return{id:id,type:type,url:layerUrl,name:name,opacity:opacity,style:style,visibility:visibility,tristate:tristate}},pathEqualOrBelow:function pathEqualOrBelow(parent,child){return isEqual(child.slice(0,parent.length),parent)},removeLayer:function removeLayer(layers,layer,sublayerpath){// Extract foreground layers
|
|
17
|
+
initialOpacities=(_ref2=(_layer$initialOpaciti=layer.initialOpacities)!==null&&_layer$initialOpaciti!==void 0?_layer$initialOpaciti:params.OPACITIES)!==null&&_ref2!==void 0?_ref2:"";var opacities=initialOpacities.split(",").filter(Boolean);var opacityMult=((_layer$opacity=layer.opacity)!==null&&_layer$opacity!==void 0?_layer$opacity:255)/255;newParams.OPACITIES=layers.map(function(x,i){var _opacities$i;return Math.round(((_opacities$i=opacities[i])!==null&&_opacities$i!==void 0?_opacities$i:"255")*opacityMult)}).map(Math.round).join(",")}queryLayers=layer.queryable&&!layer.omitFromQueryLayers?[layer.name]:[]}else{var layerNames=[];var _opacities=[];var styles=[];layer.sublayers.map(function(sublayer){LayerUtils.collectWMSSublayerParams(sublayer,layerNames,_opacities,styles,queryLayers,null,layer.visibility)});layerNames.reverse();_opacities.reverse();styles.reverse();if(layer.drawingOrder&&layer.drawingOrder.length>0){var indices=layer.drawingOrder.map(function(lyr){return layerNames.indexOf(lyr)}).filter(function(idx){return idx>=0});layerNames=indices.map(function(idx){return layerNames[idx]});_opacities=indices.map(function(idx){return _opacities[idx]});styles=indices.map(function(idx){return styles[idx]})}newParams=_objectSpread({LAYERS:layerNames.join(","),OPACITIES:_opacities.map(Math.round).join(","),STYLES:styles.join(",")},layer.dimensionValues)}if(filter.filterParams){newParams.FILTER=Object.entries(filter.filterParams).reduce(function(res,_ref3){var _ref4=_slicedToArray(_ref3,2),layername=_ref4[0],filters=_ref4[1];if(!newParams.LAYERS.split(",").includes(layername)){return res}return[].concat(_toConsumableArray(res),[layername+":"+filters.map(function(expr){return Array.isArray(expr)?LayerUtils.formatFilterExpr(expr):"AND"}).join(" ")])},[]).join(";")}if(filter.filterGeom){newParams.FILTER_GEOM=VectorLayerUtils.geoJSONGeomToWkt(filter.filterGeom)}return{params:newParams,queryLayers:queryLayers,initialOpacities:initialOpacities}},formatFilterExpr:function formatFilterExpr(expr){var _this=this;if(expr.length===3&&typeof expr[0]==="string"){var op=expr[1].toUpperCase();if(typeof expr[2]==="number"){return"\"".concat(expr[0],"\" ").concat(op," ").concat(expr[2])}else if(expr[2]===null){return"\"".concat(expr[0],"\" ").concat(op," NULL")}else if(Array.isArray(expr[2])){return"\"".concat(expr[0],"\" ").concat(op," ( ").concat(expr[2].join(" , ")," )")}else{return"\"".concat(expr[0],"\" ").concat(op," '").concat(expr[2],"'")}}else{return"( "+expr.map(function(entry){return Array.isArray(entry)?_this.formatFilterExpr(entry):entry.toUpperCase()}).join(" ")+" )"}},buildWMSLayerUrlParam:function buildWMSLayerUrlParam(layers){var layernames=[];var opacities=[];var styles=[];var visibilities=[];var queryable=[];var _iterator6=_createForOfIteratorHelper(layers),_step6;try{var _loop3=function _loop3(){var layer=_step6.value;if(layer.role===LayerRole.THEME&&!isEmpty(layer.sublayers)){LayerUtils.collectWMSSublayerParams(layer,layernames,opacities,styles,queryable,visibilities,layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="wms"){var sublayernames=[];LayerUtils.collectWMSSublayerParams(layer,sublayernames,opacities,styles,queryable,visibilities,layer.visibility);var layerurl=layer.url;if(layer.extwmsparams){layerurl+=(layerurl.includes("?")?"&":"?")+Object.entries(layer.extwmsparams||{}).map(function(_ref5){var _ref6=_slicedToArray(_ref5,2),key=_ref6[0],value=_ref6[1];return"extwms."+key+"="+value}).join("&")}layernames.push.apply(layernames,_toConsumableArray(sublayernames.map(function(name){return"wms:"+layerurl+"#"+name})))}else if(layer.role===LayerRole.USERLAYER&&(layer.type==="wfs"||layer.type==="wmts")){layernames.push(layer.type+":"+(layer.capabilitiesUrl||layer.url)+"#"+layer.name);opacities.push(layer.opacity);styles.push(layer.style);visibilities.push(layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="separator"){layernames.push("sep:"+layer.title);opacities.push(255);styles.push("");visibilities.push(true)}};for(_iterator6.s();!(_step6=_iterator6.n()).done;){_loop3()}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}var result=layernames.map(function(layername,idx){var param=layername;if(opacities[idx]<255){param+="["+(100-Math.round(opacities[idx]/255*100))+"]"}if(styles[idx]&&styles[idx]!=="default"){param+="{"+styles[idx]+"}"}if(visibilities[idx]===0||visibilities[idx]===false){param+="!"}else if(visibilities[idx]===0.5){param+="~"}return param});if(ConfigUtils.getConfigProp("urlReverseLayerOrder")){result.reverse()}return result.join(",")},splitLayerUrlParam:function splitLayerUrlParam(entry){var opacityPattern=/\[(\d+)\]/;var stylePattern=/{([^}]+)}/;var extPattern=/^(\w+):(.*)#([^#]+)$/;var id=uuidv4();var type="theme";var layerUrl=null;var opacity=255;var style="";var visibility=true;var tristate=false;if(entry.endsWith("!")){visibility=false;entry=entry.slice(0,-1)}else if(entry.endsWith("~")){visibility=false;tristate=true;entry=entry.slice(0,-1)}var m=null;if(m=entry.match(opacityPattern)){opacity=Math.round(255-parseFloat(m[1])/100*255);entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}if(m=entry.match(stylePattern)){style=m[1];entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}var name=entry;if(m=entry.match(extPattern)){type=m[1];layerUrl=m[2];name=m[3]}else if(name.startsWith("sep:")){type="separator";name=name.slice(4)}return{id:id,type:type,url:layerUrl,name:name,opacity:opacity,style:style,visibility:visibility,tristate:tristate}},pathEqualOrBelow:function pathEqualOrBelow(parent,child){return isEqual(child.slice(0,parent.length),parent)},removeLayer:function removeLayer(layers,layer,sublayerpath){// Extract foreground layers
|
|
19
18
|
var fglayers=layers.filter(function(lyr){return lyr.role!==LayerRole.BACKGROUND});// Explode layers (one entry for every single sublayer)
|
|
20
19
|
var exploded=LayerUtils.explodeLayers(fglayers);// Remove matching entries
|
|
21
20
|
exploded=exploded.filter(function(entry){return entry.layer.id!==layer.id||!LayerUtils.pathEqualOrBelow(sublayerpath,entry.path)});// Re-assemble layers
|
|
@@ -46,9 +45,9 @@ while(innertarget&&innertarget.sublayers&&innertarget.name===innersource.name){t
|
|
|
46
45
|
}catch(err){_iterator11.e(err)}finally{_iterator11.f()}for(var _i=0,_newlayers=newlayers;_i<_newlayers.length;_i++){var layer=_newlayers[_i];LayerUtils.ensureMutuallyExclusive(layer)}for(var _i2=0,_newlayers2=newlayers;_i2<_newlayers2.length;_i2++){var _layer=_newlayers2[_i2];if(_layer.type==="wms"){Object.assign(_layer,LayerUtils.recomputeLayerBBox(_layer))}}return newlayers},insertLayer:function insertLayer(layers,newlayer,beforeattr,beforeval){var exploded=LayerUtils.explodeLayers(layers);var explodedAdd=LayerUtils.explodeLayers([newlayer]);var index=exploded.findIndex(function(entry){return entry.sublayer[beforeattr]===beforeval});if(index!==-1){exploded.splice.apply(exploded,[index,0].concat(_toConsumableArray(explodedAdd)))}return LayerUtils.implodeLayers(exploded)},ensureMutuallyExclusive:function ensureMutuallyExclusive(group){if(!isEmpty(group.sublayers)){if(group.mutuallyExclusive){var tristateSublayer=group.sublayers.find(function(sublayer){return sublayer.tristate===true});var visibleSublayer=tristateSublayer||group.sublayers.find(function(sublayer){return sublayer.visibility===true})||group.sublayers[0];var _iterator12=_createForOfIteratorHelper(group.sublayers),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var sublayer=_step12.value;sublayer.visibility=sublayer===visibleSublayer}}catch(err){_iterator12.e(err)}finally{_iterator12.f()}}var _iterator13=_createForOfIteratorHelper(group.sublayers),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var _sublayer=_step13.value;LayerUtils.ensureMutuallyExclusive(_sublayer)}}catch(err){_iterator13.e(err)}finally{_iterator13.f()}}},getSublayerNames:function getSublayerNames(layer){var _this2=this;var toplevel=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var filter=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return[toplevel&&layer.sublayers||filter&&!filter(layer)?null:layer.name].concat((layer.sublayers||[]).reduce(function(list,sublayer){return list.concat(_toConsumableArray(_this2.getSublayerNames(sublayer,false,filter)))},[])).filter(function(x){return x})},mergeSubLayers:function mergeSubLayers(baselayer,addlayer){addlayer=_objectSpread(_objectSpread({},baselayer),{},{sublayers:addlayer.sublayers});addlayer.externalLayerMap=_objectSpread({},addlayer.externalLayerMap);LayerUtils.extractExternalLayersFromSublayers(addlayer,addlayer);if(isEmpty(addlayer.sublayers)){return _objectSpread({},baselayer)}if(isEmpty(baselayer.sublayers)){return addlayer}var explodedBase=LayerUtils.explodeLayers([baselayer]);var existing=explodedBase.map(function(entry){return entry.sublayer.name});var explodedAdd=LayerUtils.explodeLayers([addlayer]);explodedAdd=explodedAdd.filter(function(entry){return!existing.includes(entry.sublayer.name)});return LayerUtils.implodeLayers(explodedAdd.concat(explodedBase))[0]},searchSubLayer:function searchSubLayer(layer,attr,value){var path=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];if(layer.sublayers){var idx=0;var _iterator14=_createForOfIteratorHelper(layer.sublayers),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var sublayer=_step14.value;var match=sublayer[attr]===value?sublayer:LayerUtils.searchSubLayer(sublayer,attr,value,path);if(match){path.unshift(idx);return match}idx+=1}}catch(err){_iterator14.e(err)}finally{_iterator14.f()}}else{if(layer[attr]===value){return layer}}return null},matchSubLayer:function matchSubLayer(layer,func){var path=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];if(layer.sublayers){var idx=0;var _iterator15=_createForOfIteratorHelper(layer.sublayers),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var sublayer=_step15.value;var match=func(sublayer)?sublayer:LayerUtils.matchSubLayer(sublayer,func,path);if(match){path.unshift(idx);return match}idx+=1}}catch(err){_iterator15.e(err)}finally{_iterator15.f()}}else{if(func(layer)){return layer}}return null},searchLayer:function searchLayer(layers,layerUrl,layerName){var match=null;layers.find(function(layer){var sublayer=null;if(layer.url===layerUrl&&(sublayer=LayerUtils.searchSubLayer(layer,"name",layerName))){match={layer:layer,sublayer:sublayer};return true}return false});return match},sublayerVisible:function sublayerVisible(layer,sublayerpath){var visible=layer.visibility!==false;var sublayer=layer;var _iterator16=_createForOfIteratorHelper(sublayerpath),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var index=_step16.value;sublayer=sublayer.sublayers[index];visible&=sublayer.visibility!==false;if(!visible){return false}}}catch(err){_iterator16.e(err)}finally{_iterator16.f()}return true},computeLayerVisibility:function computeLayerVisibility(layer){if(isEmpty(layer.sublayers)||layer.visibility===false){return layer.visibility?1:0}var visible=0;layer.sublayers.map(function(sublayer){var _sublayer$visibility;var sublayervisibility=(_sublayer$visibility=sublayer.visibility)!==null&&_sublayer$visibility!==void 0?_sublayer$visibility:true;if(sublayer.sublayers&&sublayervisibility){visible+=LayerUtils.computeLayerVisibility(sublayer)}else{visible+=sublayervisibility?1:0}});return visible/layer.sublayers.length},computeLayerOpacity:function computeLayerOpacity(layer){if(isEmpty(layer.sublayers)){var _layer$opacity2;return(_layer$opacity2=layer.opacity)!==null&&_layer$opacity2!==void 0?_layer$opacity2:255}var opacity=0;layer.sublayers.map(function(sublayer){opacity+=LayerUtils.computeLayerOpacity(sublayer)});return opacity/layer.sublayers.length},computeLayerQueryable:function computeLayerQueryable(layer){var queryable=0;layer.sublayers.map(function(sublayer){var _sublayer$omitFromQue;var sublayerqueryable=(_sublayer$omitFromQue=!sublayer.omitFromQueryLayers)!==null&&_sublayer$omitFromQue!==void 0?_sublayer$omitFromQue:true;if(sublayer.sublayers&&sublayerqueryable){queryable+=LayerUtils.computeLayerQueryable(sublayer)}else{queryable+=sublayerqueryable?1:0}});return queryable/layer.sublayers.length},hasQueryableSublayers:function hasQueryableSublayers(layer){return layer.sublayers.find(function(sublayer){return sublayer.sulayers?LayerUtils.hasQueryableSublayers(sublayer):sublayer.queryable})},cloneLayer:function cloneLayer(layer,sublayerpath){var newlayer=_objectSpread({},layer);var cur=newlayer;for(var i=0;i<sublayerpath.length;++i){var idx=sublayerpath[i];cur.sublayers=[].concat(_toConsumableArray(cur.sublayers.slice(0,idx)),[_objectSpread({},cur.sublayers[idx])],_toConsumableArray(cur.sublayers.slice(idx+1)));cur=cur.sublayers[idx]}return{newlayer:newlayer,newsublayer:cur}},collectGroupLayers:function collectGroupLayers(layer,parentGroups,groupLayers){if(!isEmpty(layer.sublayers)){var _iterator17=_createForOfIteratorHelper(layer.sublayers),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var sublayer=_step17.value;LayerUtils.collectGroupLayers(sublayer,parentGroups.concat(layer.name),groupLayers)}}catch(err){_iterator17.e(err)}finally{_iterator17.f()}}else{var _iterator18=_createForOfIteratorHelper(parentGroups),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var group=_step18.value;groupLayers[group]=(groupLayers[group]||[]).concat(layer.name)}}catch(err){_iterator18.e(err)}finally{_iterator18.f()}}},replaceLayerGroups:function replaceLayerGroups(layerConfigs,layer){var groupLayers={};LayerUtils.collectGroupLayers(layer,[],groupLayers);var newLayerConfigs=[];var _iterator19=_createForOfIteratorHelper(layerConfigs),_step19;try{var _loop4=function _loop4(){var layerConfig=_step19.value;if(layerConfig.name in groupLayers){newLayerConfigs.push.apply(newLayerConfigs,_toConsumableArray(groupLayers[layerConfig.name].map(function(name){return _objectSpread(_objectSpread({},layerConfig),{},{name:name})})))}else{newLayerConfigs.push(layerConfig)}};for(_iterator19.s();!(_step19=_iterator19.n()).done;){_loop4()}}catch(err){_iterator19.e(err)}finally{_iterator19.f()}return newLayerConfigs},extractExternalLayersFromSublayers:function extractExternalLayersFromSublayers(toplayer,layer){if(layer.sublayers){layer.sublayers=layer.sublayers.map(function(sublayer){if(sublayer.externalLayer){var externalLayer=_objectSpread({},sublayer.externalLayer);LayerUtils.completeExternalLayer(externalLayer,sublayer,toplayer.mapCrs);toplayer.externalLayerMap[sublayer.name]=externalLayer;sublayer=_objectSpread({},sublayer);delete sublayer.externalLayer}if(sublayer.sublayers){LayerUtils.extractExternalLayersFromSublayers(toplayer,sublayer)}return sublayer})}},completeExternalLayer:function completeExternalLayer(externalLayer,sublayer,mapCrs){externalLayer.title=externalLayer.title||(sublayer||{}).title||externalLayer.name;externalLayer.id=uuidv4();if(externalLayer.type==="wms"||externalLayer.params){externalLayer.version=externalLayer.version||"1.3.0";externalLayer.featureInfoUrl=externalLayer.featureInfoUrl||externalLayer.url;externalLayer.legendUrl=externalLayer.legendUrl||externalLayer.url;externalLayer.queryLayers=externalLayer.queryLayers||externalLayer.params.LAYERS.split(",");var externalLayerFeatureInfoFormats=ConfigUtils.getConfigProp("externalLayerFeatureInfoFormats")||{};for(var _i3=0,_Object$keys=Object.keys(externalLayerFeatureInfoFormats);_i3<_Object$keys.length;_i3++){var entry=_Object$keys[_i3];if(externalLayer.featureInfoUrl.toLowerCase().includes(entry.toLowerCase())){externalLayer.infoFormats=[externalLayerFeatureInfoFormats[entry]];break}}}else if(externalLayer.type==="mvt"){externalLayer.projection=mapCrs;if(externalLayer.tileGridName){externalLayer.tileGridConfig=(ConfigUtils.getConfigProp("mvtTileGrids")||{})[externalLayer.tileGridName];if(!externalLayer.tileGridConfig){/* eslint-disable-next-line */console.warn("Tile grid config not found: "+externalLayer.tileGridName)}}}},getLegendUrl:function getLegendUrl(layer,sublayer,scale,map,bboxDependentLegend,scaleDependentLegend,extraLegendParameters){if(layer.type!=="wms"){return layer.legendUrl||""}var requestParams={SERVICE:"WMS",REQUEST:"GetLegendGraphic",FORMAT:"image/png",CRS:map.projection,SRS:map.projection,SLD_VERSION:"1.1.0",WIDTH:200,HEIGHT:200};if(extraLegendParameters){Object.assign(requestParams,Object.fromEntries(extraLegendParameters.split("&").map(function(entry){return entry.split("=")})))}if(scaleDependentLegend===true||scaleDependentLegend==="theme"&&layer.role===LayerRole.THEME){requestParams.SCALE=Math.round(scale)}if(bboxDependentLegend===true||bboxDependentLegend==="theme"&&layer.role===LayerRole.THEME){var bounds=map.bbox.bounds;if(CoordinatesUtils.getAxisOrder(map.projection).substr(0,2)==="ne"&&layer.version==="1.3.0"){requestParams.BBOX=[bounds[1],bounds[0],bounds[3],bounds[2]].join(",")}else{requestParams.BBOX=bounds.join(",")}}if(layer.externalLayerMap&&layer.externalLayerMap[sublayer.name]){var externalLayer=layer.externalLayerMap[sublayer.name];if(externalLayer.type!=="wms"){return externalLayer.legendUrl||""}var urlParts=url.parse(externalLayer.legendUrl,true);urlParts.query=Object.keys(urlParts.query).filter(function(key){// Filter service, request, version
|
|
47
46
|
return!["service","request","version"].includes(key.toLowerCase())}).reduce(function(res,key){return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,urlParts.query[key]))},{});urlParts.query=_objectSpread(_objectSpread(_objectSpread({VERSION:layer.version},urlParts.query),requestParams),{},{LAYER:externalLayer.params.LAYERS});delete urlParts.search;return url.format(urlParts)}else{var _layer$params$FILTER;var layername=layer===sublayer?layer.params.LAYERS.split(",").reverse().join(","):sublayer.name;var style=layer===sublayer?layer.params.STYLES.split(",").reverse().join(","):sublayer.style;var _urlParts=url.parse(layer.legendUrl,true);_urlParts.query=Object.keys(_urlParts.query).filter(function(key){// Filter service, request, version
|
|
48
47
|
return!["service","request","version"].includes(key.toLowerCase())}).reduce(function(res,key){return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,_urlParts.query[key]))},{});_urlParts.query=_objectSpread(_objectSpread(_objectSpread({VERSION:layer.version},_urlParts.query),requestParams),{},{LAYER:layername,STYLES:style,FILTER:(_layer$params$FILTER=layer.params.FILTER)!==null&&_layer$params$FILTER!==void 0?_layer$params$FILTER:""});delete _urlParts.search;return url.format(_urlParts)}},layerScaleInRange:function layerScaleInRange(layer,mapScale){return(layer.minScale===undefined||mapScale>=layer.minScale)&&(layer.maxScale===undefined||mapScale<layer.maxScale)},addExternalLayerPrintParams:function addExternalLayerPrintParams(layer,params,printCrs,counterRef){var qgisServerVersion=ConfigUtils.getConfigProp("qgisServerVersion",null,3);if(qgisServerVersion>=3){if(layer.type==="wms"){var layerUrl=layer.url;var urlParts=url.parse(layerUrl,true);// Resolve relative urls
|
|
49
|
-
if(!urlParts.host){var locationParts=url.parse(window.location.href);urlParts.protocol=locationParts.protocol;urlParts.host=locationParts.host;delete urlParts.search;layerUrl=url.format(urlParts)}var identifier=String.fromCharCode(65+counterRef[0]++);params.LAYERS.push("EXTERNAL_WMS:"+identifier);params.STYLES.push("");params.COLORS.push("");params[identifier+":url"]=layerUrl;params[identifier+":layers"]=layer.params.LAYERS;params[identifier+":styles"]=layer.params.STYLES;params[identifier+":format"]="image/png";if(layer.serverType==="qgis"&&layer.params.FILTER){params[identifier+":filter"]=layer.params.FILTER}params[identifier+":crs"]=printCrs;params[identifier+":dpiMode"]="7";params[identifier+":contextualWMSLegend"]="0";// If only one layer is
|
|
48
|
+
if(!urlParts.host){var locationParts=url.parse(window.location.href);urlParts.protocol=locationParts.protocol;urlParts.host=locationParts.host;delete urlParts.search;layerUrl=url.format(urlParts)}var identifier=String.fromCharCode(65+counterRef[0]++);params.LAYERS.push("EXTERNAL_WMS:"+identifier);params.STYLES.push("");params.COLORS.push("");params[identifier+":url"]=layerUrl;params[identifier+":layers"]=layer.params.LAYERS;params[identifier+":styles"]=layer.params.STYLES;params[identifier+":format"]="image/png";if(layer.serverType==="qgis"&&layer.params.FILTER){params[identifier+":filter"]=layer.params.FILTER}params[identifier+":crs"]=printCrs;params[identifier+":dpiMode"]="7";params[identifier+":contextualWMSLegend"]="0";// If only one layer is requested, request external layer with full opacity
|
|
50
49
|
// and control opacity at QGIS server level (helps preserving opacity if external server does not support OPACITIES)
|
|
51
|
-
var opacities=layer.params.OPACITIES.split(",");if(opacities.length===1){params.OPACITIES.push(opacities[0]);params[identifier+":opacities"]="255"}else{params.OPACITIES.push("255");params[identifier+":opacities"]=layer.params.OPACITIES}if(layer.url.includes("?")){params[identifier+":IgnoreGetMapUrl"]="1"}Object.entries(layer.extwmsparams||{}).forEach(function(_ref7){var _ref8=_slicedToArray(_ref7,2),key=_ref8[0],value=_ref8[1];params[identifier+":"+key]=value})}}else if(qgisServerVersion===2){if(layer.type==="wms"){var names=layer.params.LAYERS.split(",");var _opacities2=layer.params.OPACITIES.split(",");for(var idx=0;idx<names.length;++idx){// Handled by qwc-print-service
|
|
50
|
+
if(layer.params.OPACITIES){var opacities=layer.params.OPACITIES.split(",");if(opacities.length===1){params.OPACITIES.push(opacities[0]);params[identifier+":opacities"]="255"}else{params.OPACITIES.push("255");params[identifier+":opacities"]=layer.params.OPACITIES}}else{params.OPACITIES.push(layer.opacity||"255")}if(layer.url.includes("?")){params[identifier+":IgnoreGetMapUrl"]="1"}Object.entries(layer.extwmsparams||{}).forEach(function(_ref7){var _ref8=_slicedToArray(_ref7,2),key=_ref8[0],value=_ref8[1];params[identifier+":"+key]=value})}}else if(qgisServerVersion===2){if(layer.type==="wms"){var names=layer.params.LAYERS.split(",");var _opacities2=layer.params.OPACITIES.split(",");for(var idx=0;idx<names.length;++idx){// Handled by qwc-print-service
|
|
52
51
|
params.LAYERS.push("wms:".concat(layer.url,"#").concat(names[idx]));params.OPACITIES.push(_opacities2[idx]);params.COLORS.push("");params.STYLES.push("")}}else if(layer.type==="wfs"){// Handled by qwc-print-service
|
|
53
52
|
params.LAYERS.push("wfs:".concat(layer.url,"#").concat(layer.name));params.OPACITIES.push(layer.opacity);params.COLORS.push(layer.color);params.STYLES.push("")}}},collectPrintParams:function collectPrintParams(layers,theme,printScale,printCrs,printExternalLayers,omitBackgroundLayer){var params={LAYERS:[],OPACITIES:[],STYLES:[],COLORS:[],FILTER:"",FILTER_GEOM:""};var counterRef=[0];var _iterator20=_createForOfIteratorHelper(layers),_step20;try{for(_iterator20.s();!(_step20=_iterator20.n()).done;){var _layer3=_step20.value;if(_layer3.role===LayerRole.THEME&&_layer3.params.LAYERS){var _layer3$params$FILTER,_layer3$params$FILTER2;params.LAYERS.push(_layer3.params.LAYERS);params.OPACITIES.push(_layer3.params.OPACITIES);params.STYLES.push(_layer3.params.STYLES);params.COLORS.push(_layer3.params.LAYERS.split(",").map(function(){return""}).join(","));params.FILTER=(_layer3$params$FILTER=_layer3.params.FILTER)!==null&&_layer3$params$FILTER!==void 0?_layer3$params$FILTER:"";params.FILTER_GEOM=(_layer3$params$FILTER2=_layer3.params.FILTER_GEOM)!==null&&_layer3$params$FILTER2!==void 0?_layer3$params$FILTER2:""}else if(printExternalLayers&&_layer3.role===LayerRole.USERLAYER&&_layer3.visibility!==false&&LayerUtils.layerScaleInRange(_layer3,printScale)){LayerUtils.addExternalLayerPrintParams(_layer3,params,printCrs,counterRef)}}}catch(err){_iterator20.e(err)}finally{_iterator20.f()}var backgroundLayer=layers.find(function(layer){return layer.role===LayerRole.BACKGROUND&&layer.visibility===true});if(backgroundLayer&&!omitBackgroundLayer){var backgroundLayerName=backgroundLayer.name;var themeBackgroundLayer=theme.backgroundLayers.find(function(entry){return entry.name===backgroundLayerName});var printBackgroundLayer=themeBackgroundLayer?themeBackgroundLayer.printLayer:null;if(printBackgroundLayer){// Use printLayer defined in qgis project
|
|
54
53
|
var printBgLayerName=printBackgroundLayer;if(Array.isArray(printBackgroundLayer)){printBgLayerName=null;for(var i=0;i<printBackgroundLayer.length;++i){printBgLayerName=printBackgroundLayer[i].name;if(printScale<=printBackgroundLayer[i].maxScale){break}}}if(printBgLayerName){var match=null;if((match=printBgLayerName.match(/^(\w+):(.*)#([^#]+)$/))&&match[1]==="wms"){if(printExternalLayers){var _backgroundLayer$opac;var layer={type:"wms",params:{LAYERS:match[3],OPACITIES:String((_backgroundLayer$opac=backgroundLayer.opacity)!==null&&_backgroundLayer$opac!==void 0?_backgroundLayer$opac:255),STYLES:""},url:match[2]};LayerUtils.addExternalLayerPrintParams(layer,params,printCrs,counterRef)}}else{var _backgroundLayer$opac2;params.LAYERS.push(printBgLayerName);params.OPACITIES.push(String((_backgroundLayer$opac2=backgroundLayer.opacity)!==null&&_backgroundLayer$opac2!==void 0?_backgroundLayer$opac2:255));params.COLORS.push("");params.STYLES.push("")}}}else if(printExternalLayers){// Inject client-side wms as external layer for print
|
package/utils/SearchProviders.js
CHANGED
|
@@ -10,7 +10,7 @@ var text=entry.display_name.split(", ").slice(0,3).join(", ");// map label
|
|
|
10
10
|
var label=text;// collect address fields
|
|
11
11
|
var address=[];if(entry.address.town){address.push(entry.address.town)}if(entry.address.city){address.push(entry.address.city)}if(entry.address.state){address.push(entry.address.state)}if(entry.address.country){address.push(entry.address.country)}if(address.length>0){text+="<br/><i>"+address.join(", ")+"</i>"}// reorder coords from [miny, maxy, minx, maxx] to [minx, miny, maxx, maxy]
|
|
12
12
|
var b=entry.boundingbox.map(function(coord){return parseFloat(coord)});var bbox=[b[2],b[0],b[3],b[1]];groups[entry["class"]].items.push({id:entry.place_id,// shorten display_name
|
|
13
|
-
text:text,label:label,bbox:bbox,geometry:entry.geojson,x:0.5*(bbox[0]+bbox[2]),y:0.5*(bbox[1]+bbox[3]),crs:"EPSG:4326",provider:"nominatim"})});callback({results:results})}},{key:"loadLocale",value:function loadLocale(locale){return new Promise(function(resolve){axios.get("https://raw.githubusercontent.com/openstreetmap/openstreetmap-website/master/config/locales/"+locale+".yml").then(function(resp2){NominatimSearch.TRANSLATIONS[locale]={strings:NominatimSearch.parseLocale(resp2.data,locale)};resolve(true)})["catch"](function(){NominatimSearch.TRANSLATIONS[locale]={promise:axios.get("https://raw.githubusercontent.com/openstreetmap/openstreetmap-website/master/config/locales/"+locale.slice(0,2)+".yml").then(function(resp3){NominatimSearch.TRANSLATIONS[locale]={strings:NominatimSearch.parseLocale(resp3.data,locale.slice(0,2))};resolve(true)})["catch"](function(){NominatimSearch.TRANSLATIONS[locale]={strings:{}};resolve(true)})}})})}},{key:"parseLocale",value:function parseLocale(data,locale){var doc=yaml.load(data,{json:true});try{return doc[locale].geocoder.search_osm_nominatim.prefix}catch(e){return{}}}}])}();/** ************************************************************************ **/_defineProperty(NominatimSearch,"TRANSLATIONS",{});var QgisSearch=/*#__PURE__*/function(){function QgisSearch(){_classCallCheck(this,QgisSearch)}return _createClass(QgisSearch,null,[{key:"search",value:function search(text,searchParams,callback){var filter=_objectSpread({},searchParams.cfgParams.expression);var values={TEXT:text};var params={SERVICE:"WMS",VERSION:searchParams.theme.version,REQUEST:"GetFeatureInfo",CRS:searchParams.theme.mapCrs,WIDTH:100,HEIGHT:100,LAYERS:[],FILTER:[],WITH_MAPTIP:false,WITH_GEOMETRY:true,feature_count:searchParams.cfgParams.featureCount||100,info_format:"text/xml"};Object.keys(filter).forEach(function(layer){Object.entries(values).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];filter[layer]=filter[layer].replaceAll("$".concat(key,"$"),value.replace("'","\\'"))});params.LAYERS.push(layer);params.FILTER.push(layer+":"+filter[layer])});params.QUERY_LAYERS=params.LAYERS=params.LAYERS.join(",");params.FILTER=params.FILTER.join(";");axios.get(searchParams.theme.featureInfoUrl,{params:params}).then(function(response){callback(QgisSearch.searchResults(IdentifyUtils.parseResponse(response.data,searchParams.theme,"text/xml",null,searchParams.mapcrs),searchParams.cfgParams.title,searchParams.cfgParams.resultTitle))})["catch"](function(){callback({results:[]})})}},{key:"searchResults",value:function searchResults(features,title,resultTitle){var results=[];Object.entries(features).forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),layername=_ref4[0],layerfeatures=_ref4[1];var items=layerfeatures.map(function(feature){var values=_objectSpread(_objectSpread({},feature.properties),{},{id:feature.id,layername:layername});return{id:"qgis."+layername+"."+feature.id,text:resultTitle?resultTitle.replace(/{([^}]+)}/g,function(match){return values[match.slice(1,-1)]}):feature.displayname,x:0.5*(feature.bbox[0]+feature.bbox[2]),y:0.5*(feature.bbox[1]+feature.bbox[3]),crs:feature.crs,bbox:feature.bbox,geometry:feature.geometry,layername:layername}});results.push({id:"qgis."+layername,title:title+": "+layername,type:SearchResultType.PLACE,items:items})});return{results:results}}},{key:"getResultGeometry",value:function getResultGeometry(resultItem,callback){callback({geometry:resultItem.geometry,crs:resultItem.crs})}}])}();/** ************************************************************************ **/export var FulltextSearch=/*#__PURE__*/function(){function FulltextSearch(){_classCallCheck(this,FulltextSearch)}return _createClass(FulltextSearch,null,[{key:"search",value:function search(searchText,searchParams,callback){var searchServiceUrl=ConfigUtils.getConfigProp("searchServiceUrl");if(!searchServiceUrl){/* eslint-disable-next-line */console.warn("Fulltext search failed: searchServiceUrl not set");callback({results:[]})}// Compute search filter
|
|
13
|
+
text:text,label:label,bbox:bbox,geometry:entry.geojson,x:0.5*(bbox[0]+bbox[2]),y:0.5*(bbox[1]+bbox[3]),crs:"EPSG:4326",provider:"nominatim"})});callback({results:results})}},{key:"loadLocale",value:function loadLocale(locale){return new Promise(function(resolve){axios.get("https://raw.githubusercontent.com/openstreetmap/openstreetmap-website/master/config/locales/"+locale+".yml").then(function(resp2){NominatimSearch.TRANSLATIONS[locale]={strings:NominatimSearch.parseLocale(resp2.data,locale)};resolve(true)})["catch"](function(){NominatimSearch.TRANSLATIONS[locale]={promise:axios.get("https://raw.githubusercontent.com/openstreetmap/openstreetmap-website/master/config/locales/"+locale.slice(0,2)+".yml").then(function(resp3){NominatimSearch.TRANSLATIONS[locale]={strings:NominatimSearch.parseLocale(resp3.data,locale.slice(0,2))};resolve(true)})["catch"](function(){NominatimSearch.TRANSLATIONS[locale]={strings:{}};resolve(true)})}})})}},{key:"parseLocale",value:function parseLocale(data,locale){var doc=yaml.load(data,{json:true});try{return doc[locale].geocoder.search_osm_nominatim.prefix}catch(e){return{}}}}])}();/** ************************************************************************ **/_defineProperty(NominatimSearch,"TRANSLATIONS",{});var QgisSearch=/*#__PURE__*/function(){function QgisSearch(){_classCallCheck(this,QgisSearch)}return _createClass(QgisSearch,null,[{key:"search",value:function search(text,searchParams,callback){var filter=_objectSpread({},searchParams.cfgParams.expression);var values={TEXT:text};var params={SERVICE:"WMS",VERSION:searchParams.theme.version,REQUEST:"GetFeatureInfo",CRS:searchParams.theme.mapCrs,WIDTH:100,HEIGHT:100,LAYERS:[],FILTER:[],WITH_MAPTIP:false,WITH_GEOMETRY:true,feature_count:searchParams.cfgParams.featureCount||100,info_format:"text/xml"};Object.keys(filter).forEach(function(layer){Object.entries(values).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];filter[layer]=filter[layer].replaceAll("$".concat(key,"$"),value.replace("'","\\'"))});params.LAYERS.push(layer);params.FILTER.push(layer+":"+filter[layer])});params.QUERY_LAYERS=params.LAYERS=params.LAYERS.join(",");params.FILTER=params.FILTER.join(";");axios.get(searchParams.theme.featureInfoUrl,{params:params}).then(function(response){callback(QgisSearch.searchResults(IdentifyUtils.parseResponse(response.data,searchParams.theme,"text/xml",null,searchParams.mapcrs),searchParams.cfgParams.title,searchParams.cfgParams.resultTitle))})["catch"](function(){callback({results:[]})})}},{key:"searchResults",value:function searchResults(features,title,resultTitle){var results=[];Object.entries(features).forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),layername=_ref4[0],layerfeatures=_ref4[1];var items=layerfeatures.map(function(feature){if(!feature.bbox||!feature.geometry){/* eslint-disable-next-line */console.warn("Skipping result without geometry");return null}var values=_objectSpread(_objectSpread({},feature.properties),{},{id:feature.id,layername:layername});return{id:"qgis."+layername+"."+feature.id,text:resultTitle?resultTitle.replace(/{([^}]+)}/g,function(match){return values[match.slice(1,-1)]}):feature.displayname,x:0.5*(feature.bbox[0]+feature.bbox[2]),y:0.5*(feature.bbox[1]+feature.bbox[3]),crs:feature.crs,bbox:feature.bbox,geometry:feature.geometry,layername:layername}}).filter(Boolean);results.push({id:"qgis."+layername,title:title+": "+layername,type:SearchResultType.PLACE,items:items})});return{results:results}}},{key:"getResultGeometry",value:function getResultGeometry(resultItem,callback){callback({geometry:resultItem.geometry,crs:resultItem.crs})}}])}();/** ************************************************************************ **/export var FulltextSearch=/*#__PURE__*/function(){function FulltextSearch(){_classCallCheck(this,FulltextSearch)}return _createClass(FulltextSearch,null,[{key:"search",value:function search(searchText,searchParams,callback){var searchServiceUrl=ConfigUtils.getConfigProp("searchServiceUrl");if(!searchServiceUrl){/* eslint-disable-next-line */console.warn("Fulltext search failed: searchServiceUrl not set");callback({results:[]})}// Compute search filter
|
|
14
14
|
var searchFilter=new Set([].concat(_toConsumableArray(searchParams.cfgParams["default"]||[]),_toConsumableArray(searchParams.searchTerms)));var facetMap=searchParams.cfgParams.layers||{};searchParams.activeLayers.forEach(function(layername){if(facetMap[layername]){searchFilter.add(facetMap[layername])}});var params={searchtext:searchText,filter:_toConsumableArray(searchFilter).join(","),limit:searchParams.limit};var iconPath=ConfigUtils.getAssetsPath()+"/img/search/";axios.get(searchServiceUrl,{params:params}).then(function(response){var data=FulltextSearch.filterFulltextResults(response.data,searchParams.filterPoly,searchParams.mapcrs);var placeResultCount=(data.result_counts||[]).reduce(function(res,entry){if(entry.dataproduct_id==="dataproduct"){return res}else if(res===-1||entry.count===-1){return-1}else{return res+entry.count}},0);var results=[];// Layers
|
|
15
15
|
var _formatLayerEntry=function formatLayerEntry(dataproduct){return{type:SearchResultType.THEMELAYER,id:dataproduct.dataproduct_id,text:dataproduct.display,thumbnail:iconPath+"dataproduct.svg",info:dataproduct.dset_info,sublayers:dataproduct.sublayers?dataproduct.sublayers.map(_formatLayerEntry):null}};results.push({id:"fulltext.layers",titlemsgid:LocaleUtils.trmsg("search.layers"),type:SearchResultType.THEMELAYER,items:data.results.filter(function(entry){return entry.dataproduct}).map(function(entry){return _formatLayerEntry(entry.dataproduct)})});// Places
|
|
16
16
|
results.push({id:"fulltext.places",titlemsgid:LocaleUtils.trmsg("search.places"),resultCount:placeResultCount,type:SearchResultType.PLACE,items:data.results.filter(function(entry){return entry.feature}).map(function(entry){return{id:entry.feature.feature_id,text:entry.feature.display,x:0.5*(entry.feature.bbox[0]+entry.feature.bbox[2]),y:0.5*(entry.feature.bbox[1]+entry.feature.bbox[3]),crs:entry.feature.srid?"EPSG:"+String(entry.feature.srid).replace(/^EPSG:/,""):null,bbox:entry.feature.bbox,thumbnail:iconPath+entry.feature.dataproduct_id+".svg",// fulltext specific info
|