From d818e19fdb2901ac2a42550725f00fa5e02e1cad Mon Sep 17 00:00:00 2001 From: Eric Duminil <eric.duminil@gmail.com> Date: Thu, 13 Oct 2022 15:46:43 +0200 Subject: [PATCH] Work in progress. Highlight --- .../website/script/simstadt_openlayers.js | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) 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 5f75a47..165a96b 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)); } -- GitLab