Skip to content
Snippets Groups Projects
Commit a8957669 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

add model metadata. Hide popup when user clicks outside of layer

parent 4bec84a3
Branches
No related tags found
No related merge requests found
...@@ -59,9 +59,11 @@ async function initSlidingMap(lonLat, zoomLevel, mapAttribution) { ...@@ -59,9 +59,11 @@ async function initSlidingMap(lonLat, zoomLevel, mapAttribution) {
// Get layers from WMS service // Get layers from WMS service
let parser = new ol.format.WMSCapabilities(); let parser = new ol.format.WMSCapabilities();
let response = await fetch(mapserverURL + modelId + "?service=WMS&version=1.3.0&request=GetCapabilities"); let response = await fetch(mapserverURL + modelId + "?service=WMS&version=1.3.0&request=GetCapabilities");
let result = parser.read(await response.text()); let capabilities = parser.read(await response.text());
let WMSLayers = result.Capability.Layer.Layer; let WMSLayers = capabilities.Capability.Layer.Layer;
//console.info(WMSLayers[0]); document.getElementById("modelTitle").innerHTML = capabilities.Service.Title;
document.getElementById("modelAbstract").innerHTML = capabilities.Service.Abstract.replaceAll("\n\n","XXX");
//console.info(capabilities.Service.Abstract);
// Analyze and organize layers // Analyze and organize layers
// First dimension: Time // First dimension: Time
...@@ -190,12 +192,26 @@ async function displayQueryResult(evt) ...@@ -190,12 +192,26 @@ async function displayQueryResult(evt)
let response = await fetch(url); let response = await fetch(url);
let responseXML = await response.text(); let responseXML = await response.text();
// User clicked outside of layer extent
if(responseXML.trim().length == 0)
{
let popupElement = popup.getElement();
$(popupElement).popover('destroy');
return;
}
const parser = new DOMParser(); const parser = new DOMParser();
const xmlDOM = parser.parseFromString(responseXML,"text/xml"); const xmlDOM = parser.parseFromString(responseXML,"text/xml");
const result = xmlDOM.getElementsByTagName("vipsResult")[0] const result = xmlDOM.getElementsByTagName("vipsResult")[0]
if(result) { if(result) {
// We may or may not have warning status included // We may or may not have warning status included
let warningStatus = xmlDOM.getElementsByTagName("warningStatus").length == 1 ? xmlDOM.getElementsByTagName("warningStatus")[0].getAttribute("value") : null; let warningStatus = xmlDOM.getElementsByTagName("warningStatus").length == 1 ? xmlDOM.getElementsByTagName("warningStatus")[0].getAttribute("value") : null;
if(warningStatus == -1)
{
let popupElement = popup.getElement();
$(popupElement).popover('destroy');
return;
}
let parameters = {}; let parameters = {};
let parameterElements = xmlDOM.getElementsByTagName("parameter"); let parameterElements = xmlDOM.getElementsByTagName("parameter");
for(let i=0;i<parameterElements.length;i++) for(let i=0;i<parameterElements.length;i++)
...@@ -232,4 +248,7 @@ async function displayQueryResult(evt) ...@@ -232,4 +248,7 @@ async function displayQueryResult(evt)
}); });
$(popupElement).popover('show'); $(popupElement).popover('show');
} }
else{
alert("An error occured. No model data was returned from the server. This is what the server returned: " + responseXML);
}
} }
\ No newline at end of file
...@@ -34,5 +34,9 @@ ...@@ -34,5 +34,9 @@
</div> </div>
</div> </div>
<div id="popup" title="Location details"></div> <div id="popup" title="Location details"></div>
<div class="col-md-12">
<h2 id="modelTitle"></h2>
<div id="modelAbstract"></div>
</div>
{% endblock %} {% endblock %}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment