diff --git a/package.json b/package.json index ab5a24fc8..e7c133256 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qwc2", - "version": "2024.03.04-master", + "version": "2024.03.05-master", "description": "QGIS Web Client 2 core", "author": "Sourcepole AG", "license": "BSD-2-Clause", diff --git a/plugins/LayerTree.jsx b/plugins/LayerTree.jsx index 07af03396..62660185f 100644 --- a/plugins/LayerTree.jsx +++ b/plugins/LayerTree.jsx @@ -259,6 +259,9 @@ class LayerTree extends React.Component { if (this.state.filtervisiblelayers && !sublayer.visibility) { return null; } + if (Array.isArray(layer.layerTreeHiddenSublayers) && layer.layerTreeHiddenSublayers.includes(sublayer.name)) { + return null; + } const allowRemove = ConfigUtils.getConfigProp("allowRemovingThemeLayers", this.props.theme) === true || layer.role !== LayerRole.THEME; const allowReordering = ConfigUtils.getConfigProp("allowReorderingLayers", this.props.theme) === true; let checkboxstate = sublayer.visibility === true ? 'checked' : 'unchecked'; diff --git a/scripts/themesConfig.js b/scripts/themesConfig.js index e4306b3b2..dfb44c952 100644 --- a/scripts/themesConfig.js +++ b/scripts/themesConfig.js @@ -528,6 +528,9 @@ function getTheme(config, configItem, result, resultItem, proxy) { if (configItem.themeInfoLinks) { resultItem.themeInfoLinks = configItem.themeInfoLinks; } + if (configItem.layerTreeHiddenSublayers) { + resultItem.layerTreeHiddenSublayers = configItem.layerTreeHiddenSublayers; + } resultItem.skipEmptyFeatureAttributes = configItem.skipEmptyFeatureAttributes; resultItem.config = configItem.config; diff --git a/scripts/themesConfig.py b/scripts/themesConfig.py index 56c1c5170..7545f71b3 100755 --- a/scripts/themesConfig.py +++ b/scripts/themesConfig.py @@ -477,6 +477,8 @@ def getTheme(config, configItem, result, resultItem): resultItem["minSearchScaleDenom"] = configItem["minSearchScale"] if "themeInfoLinks" in configItem: resultItem["themeInfoLinks"] = configItem["themeInfoLinks"] + if "layerTreeHiddenSublayers" in configItem: + resultItem["layerTreeHiddenSublayers"] = configItem["layerTreeHiddenSublayers"] resultItem["searchProviders"] = configItem["searchProviders"] if "searchProviders" in configItem else [] if "additionalMouseCrs" in configItem: resultItem["additionalMouseCrs"] = configItem["additionalMouseCrs"] diff --git a/utils/ThemeUtils.js b/utils/ThemeUtils.js index 7e5fd2ab1..91a5e3c2b 100644 --- a/utils/ThemeUtils.js +++ b/utils/ThemeUtils.js @@ -131,6 +131,7 @@ const ThemeUtils = { printUrl: ThemeUtils.inheritBaseUrlParams(theme.printUrl, theme.url, baseParams), featureInfoUrl: ThemeUtils.inheritBaseUrlParams(theme.featureInfoUrl, theme.url, baseParams), infoFormats: theme.infoFormats, + layerTreeHiddenSublayers: theme.layerTreeHiddenSublayers, externalLayerMap: { ...theme.externalLayerMap, ...(theme.externalLayers || []).reduce((res, cur) => {