diff --git a/spatial/static/spatial/js/slidingMap.js b/spatial/static/spatial/js/slidingMap.js index 4fd425f176899f79c17cf665518f3ab585f045e0..185c8d53e1fd302ac4f3fd320d43ef303db9a2c2 100644 --- a/spatial/static/spatial/js/slidingMap.js +++ b/spatial/static/spatial/js/slidingMap.js @@ -59,9 +59,11 @@ async function initSlidingMap(lonLat, zoomLevel, mapAttribution) { // Get layers from WMS service let parser = new ol.format.WMSCapabilities(); let response = await fetch(mapserverURL + modelId + "?service=WMS&version=1.3.0&request=GetCapabilities"); - let result = parser.read(await response.text()); - let WMSLayers = result.Capability.Layer.Layer; - //console.info(WMSLayers[0]); + let capabilities = parser.read(await response.text()); + let WMSLayers = capabilities.Capability.Layer.Layer; + 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 // First dimension: Time @@ -190,12 +192,26 @@ async function displayQueryResult(evt) let response = await fetch(url); 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 xmlDOM = parser.parseFromString(responseXML,"text/xml"); const result = xmlDOM.getElementsByTagName("vipsResult")[0] if(result) { // We may or may not have warning status included 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 parameterElements = xmlDOM.getElementsByTagName("parameter"); for(let i=0;i<parameterElements.length;i++) @@ -232,4 +248,7 @@ async function displayQueryResult(evt) }); $(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 diff --git a/spatial/templates/spatial/slidingMap.html b/spatial/templates/spatial/slidingMap.html index 3b2b777d9eeeb7e20b02b51c34c9aa2058977f04..94657173a987783f34e0e5164ecc1110ae8d3b13 100644 --- a/spatial/templates/spatial/slidingMap.html +++ b/spatial/templates/spatial/slidingMap.html @@ -34,5 +34,9 @@ </div> </div> <div id="popup" title="Location details"></div> + <div class="col-md-12"> + <h2 id="modelTitle"></h2> + <div id="modelAbstract"></div> + </div> {% endblock %} \ No newline at end of file