diff --git a/ipmd/static/ipmd/js/ipmdlib.js b/ipmd/static/ipmd/js/ipmdlib.js index 56415cf8398a4fb85e4c17b4b6c4be9c6b8dd017..cab3b064937d27a55ba9693d28158d60577a02c9 100644 --- a/ipmd/static/ipmd/js/ipmdlib.js +++ b/ipmd/static/ipmd/js/ipmdlib.js @@ -190,6 +190,34 @@ function getPragmaticWeatherParameterList(requestedParameters, availableParamete } +/** + * Displays the weather data in a table + * @param {Object} weatherData the weatherData in IPM Decisions format + * @param {HTMLElement} container the element to render to + * @param {String} tableClass for styling the table, e.g. using Bootstrap + */ + function renderWeatherData(weatherData, container, tableClass){ + let dates = getDateArray(weatherData.timeStart, weatherData.interval, weatherData.locationWeatherData[0].length); + let html = "<table" + (tableClass != undefined ? " class=\"" + tableClass + "\"" : "") + "><thead><tr><th>Time</th>"; + weatherData.weatherParameters.forEach(function(weatherParameterId){ + html +="<th>" + getWeatherParameter(weatherParameterId).name + "</th>"; + }); + + html += "</tr></thead>" + html += "<tbody>"; + //console.info("Weatherdata length: " + weatherData.locationWeatherData[0].data.length); + for(let i=0;i< weatherData.locationWeatherData[0].data.length;i++) + { + html += "<tr><td>" + moment(dates[i]).format("YYYY-MM-DD HH:mm:ss") + "</td>"; + weatherData.locationWeatherData[0].data[i].forEach(function(val){html+="<td>" + val + "</td>";}) + html += "</tr>"; + } + html += "</tbody>"; + html += "</table>"; + container.innerHTML = html; + + } + /** * Merges the two datasets. Keeping the primaryData if both sets have data for same time and parameter * If a merge operation is not possible, primaryData is returned unchanged @@ -364,15 +392,14 @@ async function initDataSourceMap(containerId, geoJson, countryCodeList) map = null; } - //console.info(countryCodeList); - //console.info(geoJson); // If no data, no map if((geoJson == undefined || geoJson == null || geoJson.features.length == 0) && (countryCodeList == null || countryCodeList.length == 0)) { document.getElementById(containerId).innerHTML = "NO GEODATA PROVIDED BY WEATHER DATA SOURCE"; return; } - else{ + else + { document.getElementById(containerId).innerHTML = ""; } @@ -398,8 +425,8 @@ async function initDataSourceMap(containerId, geoJson, countryCodeList) // center to correct map projection) var view = new ol.View({ center: ol.proj.transform([10,65], 'EPSG:4326', map.getView().getProjection().getCode()), - zoom: 7, - maxZoom: 7 + zoom: 7//, + //maxZoom: 7 }); map.setView(view); @@ -416,7 +443,6 @@ async function initDataSourceMap(containerId, geoJson, countryCodeList) }); } - // If not, we have to get geoJson mapped to the countries else if (countryCodeList != undefined && countryCodeList != null && countryCodeList.length > 0) { let countryBoundaries = await getCountryBoundaries(countryCodeList); @@ -429,16 +455,18 @@ async function initDataSourceMap(containerId, geoJson, countryCodeList) if(drawnFeatures != undefined) { - //console.info(drawnFeatures); + // Create an empty layer var featureOverlay = new ol.layer.Vector({ source: new ol.source.Vector({ features: features }) }); + // Add the stations or area featureOverlay.getSource().addFeatures(drawnFeatures); featureOverlay.setMap(map); + // Fit the features to the extent of the map extent = featureOverlay.getSource().getExtent(); map.getView().fit(extent, map.getSize()); } diff --git a/ipmd/templates/ipmd/saddlegallmidgeform.html b/ipmd/templates/ipmd/saddlegallmidgeform.html index 4b7f065e35063d6571f4a24b19864c164292fb74..26e2ba86282e94aa0099e7683cc18ab12c780e28 100644 --- a/ipmd/templates/ipmd/saddlegallmidgeform.html +++ b/ipmd/templates/ipmd/saddlegallmidgeform.html @@ -380,28 +380,6 @@ renderWeatherData(weatherData, document.getElementById("weatherData"), "table table-striped") } - function renderWeatherData(weatherData, container, tableClass){ - let dates = getDateArray(weatherData.timeStart, weatherData.interval, weatherData.locationWeatherData[0].length); - let html = "<table" + (tableClass != undefined ? " class=\"" + tableClass + "\"" : "") + "><thead><tr><th>Time</th>"; - weatherData.weatherParameters.forEach(function(weatherParameterId){ - html +="<th>" + getWeatherParameter(weatherParameterId).name + "</th>"; - }); - - html += "</tr></thead>" - html += "<tbody>"; - //console.info("Weatherdata length: " + weatherData.locationWeatherData[0].data.length); - for(let i=0;i< weatherData.locationWeatherData[0].data.length;i++) - { - html += "<tr><td>" + moment(dates[i]).format("YYYY-MM-DD HH:mm:ss") + "</td>"; - weatherData.locationWeatherData[0].data[i].forEach(function(val){html+="<td>" + val + "</td>";}) - html += "</tr>"; - } - html += "</tbody>"; - html += "</table>"; - container.innerHTML = html; - - } - // Mock result!!! Waiting for ADAS to fix CORS issue