Skip to content

Commit

Permalink
[BP] Map / WMS dimension saved in map (#7339)
Browse files Browse the repository at this point in the history
* Map / WMS dimension saved in map

Save current map dimension value in the map context to be able to open a
map on specific date.

Follow up of #6820
"

* Map / Layer enabled in layer manager status saved in context.
  • Loading branch information
fxprunayre authored and josegar74 committed Sep 25, 2023
1 parent a4d4618 commit 052431f
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -208,12 +208,12 @@
headers: new Headers(headerDict),
responseType: "blob"
};
legendPromise = $http.get(urlGetLegend, requestOptions).then(
var legendPromise = $http.get(urlGetLegend, requestOptions).then(
function (response) {
var contentType = headers("content-type");
if (contentType.indexOf("image") === 0) {
// encode data to base 64 url
fileReader = new FileReader();
var fileReader = new FileReader();
fileReader.onload = function () {
style.LegendURL[0].OnlineResource = fileReader.result;
layer.set("legend", fileReader.result);
Expand Down Expand Up @@ -295,13 +295,30 @@
function initDimension(dimension) {
var dimensionConfig = scope.layer.get(dimension);
if (dimensionConfig) {
var idx = dimensionConfig.values.length - 1;
for (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 (var 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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -406,6 +407,16 @@
if (extension.uuid) {
layer.metadataUuid = extension.uuid;
}
if (extension.enabled) {
layer.enabled = extension.enabled;
}

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);
Expand Down Expand Up @@ -697,6 +708,15 @@
if (processInputs) {
extension.processInputs = processInputs;
}
if (layer.showInfo) {
extension.enabled = true; // Enabled in layer manager
}
dimensions.forEach(function (dimension) {
if (source.getParams()[dimension]) {
extension[dimension.toLowerCase() + "DimensionValue"] =
source.getParams()[dimension];
}
});

layerParams.extension = {
name: "Extension",
Expand Down Expand Up @@ -776,6 +796,32 @@
}
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);
}
if (layer.enabled) {
olL.showInfo = layer.enabled; // Enabled in layer manager
}
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];
Expand Down Expand Up @@ -813,22 +859,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 () {});
Expand All @@ -854,15 +885,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;
}
Expand Down

0 comments on commit 052431f

Please sign in to comment.