diff --git a/web-ui/src/main/resources/catalog/components/viewer/layermanager/LayerManagerDirective.js b/web-ui/src/main/resources/catalog/components/viewer/layermanager/LayerManagerDirective.js index 11552ccd3dca..d26a32e0ebe3 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/layermanager/LayerManagerDirective.js +++ b/web-ui/src/main/resources/catalog/components/viewer/layermanager/LayerManagerDirective.js @@ -295,13 +295,30 @@ function initDimension(dimension) { var dimensionConfig = scope.layer.get(dimension); if (dimensionConfig) { - var idx = dimensionConfig.values.length - 1; - for (var i = 0; i < dimensionConfig.values.length; i++) { - if (dimensionConfig.values[i] === dimensionConfig.default) { + var currentLayerValue = scope.layer.getSource().getParams()[ + dimension.toUpperCase() + ]; + var idx = undefined; + var defaultValueIdx = dimensionConfig.values.length - 1; + for (i = 0; i < dimensionConfig.values.length; i++) { + if (dimensionConfig.values[i] === currentLayerValue) { idx = i; break; } + if (dimensionConfig.values[i] === dimensionConfig.default) { + defaultValueIdx = i; + } } + if (currentLayerValue && !idx) { + console.warn( + "Dimension value " + + currentLayerValue + + " not found in dimension list of values. Using default or latest value: " + + dimensionConfig.values[defaultValueIdx] + ); + } + idx = idx || defaultValueIdx; + scope.dimensions[dimension] = { current: dimensionConfig.values[idx], idx: idx, diff --git a/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextService.js b/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextService.js index 8538da10cf5c..8493a1d6905b 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextService.js +++ b/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextService.js @@ -94,6 +94,7 @@ // eg. name="{type=arcgis,name=0,1,2,3,4}" var reT = /type=([^,}|^]*)/; var reL = /name=([^}]*)\}?\s*$/; + var dimensions = ["TIME", "ELEVATION"]; /** * @ngdoc method @@ -407,6 +408,13 @@ layer.metadataUuid = extension.uuid; } + dimensions.forEach(function (dimension) { + if (extension[dimension.toLowerCase() + "DimensionValue"]) { + layer[dimension.toLowerCase() + "DimensionValue"] = + extension[dimension.toLowerCase() + "DimensionValue"]; + } + }); + var layerIndex = map.getLayers().push(loadingLayer) - 1; var p = self.createLayer(layer, map, undefined, i, currentStyle); loadingLayer.set("index", layerIndex); @@ -698,6 +706,13 @@ extension.processInputs = processInputs; } + dimensions.forEach(function (dimension) { + if (source.getParams()[dimension]) { + extension[dimension.toLowerCase() + "DimensionValue"] = + source.getParams()[dimension]; + } + }); + layerParams.extension = { name: "Extension", any: JSON.stringify(extension) @@ -776,6 +791,29 @@ } var createOnly = angular.isDefined(bgIdx) || angular.isDefined(index); + function setMapLayerProperties(olL, layer) { + olL.set("group", layer.group); + olL.set("groupcombo", layer.groupcombo); + olL.setOpacity(layer.opacity); + olL.setVisible(!layer.hidden); + var title = layer.title ? layer.title : olL.get("label"); + olL.set("title", title || ""); + olL.set("label", title || ""); + olL.set("metadataUuid", layer.metadataUuid || ""); + if (bgIdx) { + olL.set("bgIdx", bgIdx); + } else if (index) { + olL.set("tree_index", index); + } + var params = olL.getSource().getParams() || {}; + dimensions.forEach(function (dimension) { + if (layer[dimension.toLowerCase() + "DimensionValue"]) { + params[dimension] = layer[dimension.toLowerCase() + "DimensionValue"]; + olL.getSource().updateParams(params); + } + }); + } + if (layer.name && layer.name.match(reT)) { var type = reT.exec(layer.name)[1]; var name = reL.exec(layer.name)[1]; @@ -813,22 +851,7 @@ return promise .then(function (olL) { - olL.set("group", layer.group); - olL.set("groupcombo", layer.groupcombo); - olL.setOpacity(layer.opacity); - olL.setVisible(!layer.hidden); - if (layer.title) { - olL.set("title", layer.title); - olL.set("label", layer.title); - } - if (layer.metadataUuid) { - olL.set("metadataUuid", layer.metadataUuid); - } - if (bgIdx) { - olL.set("bgIdx", bgIdx); - } else if (index) { - olL.set("tree_index", index); - } + setMapLayerProperties(olL, layer); return olL; }) .catch(function () {}); @@ -854,15 +877,7 @@ layer.group = decodeURIComponent(escape(layer.group)); } } catch (e) {} - olL.set("group", layer.group); - olL.set("groupcombo", layer.groupcombo); - olL.set("tree_index", index); - olL.setOpacity(layer.opacity); - olL.setVisible(!layer.hidden); - var title = layer.title ? layer.title : olL.get("label"); - olL.set("title", title || ""); - olL.set("label", title || ""); - olL.set("metadataUuid", layer.metadataUuid || ""); + setMapLayerProperties(olL, layer); $rootScope.$broadcast("layerAddedFromContext", olL); return olL; }