diff --git a/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js b/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js index 5f75a473fec6c8ae40b2f58525e30c0822a7332f..165a96bf4dce2011f935b42c439feccf6e675951 100644 --- a/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js +++ b/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js @@ -96,6 +96,7 @@ var regionChooser = (function(){ feature["project"] = feature.get("project"); feature["name"] = feature.get("name"); feature["source"] = "CityGML"; + feature["originalStyle"] = feature.getStyle(); }); var features = Array.from(kml_source.getFeatures()); @@ -183,17 +184,23 @@ var regionChooser = (function(){ publicScope.highlightPolygon = function(i) { var feature = kml_source.getFeatureById(i); - feature.oldStyle = feature.getStyle(); feature.setStyle(polygon_style("#ff44a2", 0.7)); } publicScope.resetHighlight = function(i) { var feature = kml_source.getFeatureById(i); - feature.setStyle(feature.oldStyle); + feature.setStyle(feature.originalStyle); } publicScope.isDownloadPossible = function(){ + kml_source.getFeatures().forEach(f => f.setStyle(f.originalStyle)); + + //TODO: Dry var checkedBoxes = Array.from(document.querySelectorAll("input.select_citygml")).filter(c => c.checked); + var checkbox_ids = checkedBoxes.map(c => c.id); + var features = getCheckedPolygons(checkbox_ids); + features.forEach(f => f.setStyle(polygon_style("#ffff00", 0.8))); + document.getElementById("download_region_button").disabled = (checkedBoxes.length == 0); } @@ -234,11 +241,15 @@ var regionChooser = (function(){ dataPanel.append(text + "<br/>\n"); } - publicScope.downloadRegionFromCityGMLs = function(checkbox_ids) { - var features = checkbox_ids.map(checkbox_id => { + getCheckedPolygons = function(checkbox_ids){ + return checkbox_ids.map(checkbox_id => { var i = Number(checkbox_id.replace("citygml_", "")); return kml_source.getFeatureById(i); }) + } + + publicScope.downloadRegionFromCityGMLs = function(checkbox_ids) { + var features = getCheckedPolygons(checkbox_ids); var project = features[0].get("project"); var srsName = features[0].get("srsName"); @@ -393,6 +404,12 @@ var regionChooser = (function(){ document.getElementById("download_region_button").disabled = true; var checkedBoxes = Array.from(document.querySelectorAll("input.select_citygml")).filter(c => c.checked); // CheckBoxes isn't empty, because otherwise the button cannot be clicked. + + var checkbox_ids = checkedBoxes.map(c => c.id); + var features = getCheckedPolygons(checkbox_ids); + + features.forEach(f => f.setStyle(polygon_style("#ffff00", 0.8))); + publicScope.downloadRegionFromCityGMLs(checkedBoxes.map(c => c.id)); }