From 22cecee7849e6a0d5bb71715c549c9d8b0ef8644 Mon Sep 17 00:00:00 2001 From: Eric Duminil <eric.duminil@gmail.com> Date: Fri, 14 Oct 2022 18:32:28 +0200 Subject: [PATCH] no more id --- .../website/script/simstadt_openlayers.js | 32 ++++++------------- 1 file changed, 10 insertions(+), 22 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 f247b8c..20002ec 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 @@ -11,11 +11,9 @@ const regionChooser = (function(){ const dataPanel = $('#dataPanel'); const wgs84Sphere = new ol.Sphere(6378137); var features_by_project; - var gmlId; publicScope.init = function(){ //NOTE: Only called from JavaFX. At startup, or when Repo has been changed. - gmlId = 0; kml_source.clear(); document.getElementById("select_repository").style.visibility = "visible"; } @@ -49,7 +47,6 @@ const regionChooser = (function(){ publicScope.addCityGmlHull = function(kmlString) { options = {featureProjection: ol.proj.get('EPSG:3857')}; feature = kmlFormat.readFeature(kmlString, options); - feature.setId(gmlId++); kml_source.addFeature(feature); dataPanel.append('.'); srsName = feature.get("srsName"); @@ -200,13 +197,17 @@ const regionChooser = (function(){ publicScope.isDownloadPossible = function(){ kml_source.getFeatures().forEach(f => refreshStyle(f, "original")); - //TODO: Dry - var selectedFeatures = Array.from(document.querySelectorAll("input.select_citygml")).filter(c => c.checked).map(c => c.feature); + selectedFeatures = getSelectedGMLs(); + selectedFeatures.forEach(f => refreshStyle(f, "selected")); document.getElementById("download_region_button").disabled = (selectedFeatures.length == 0); } + function getSelectedGMLs(){ + return Array.from(document.querySelectorAll("input.select_citygml")).filter(c => c.checked).map(c => c.feature); + } + function findIntersection(feature, polygon) { try { return turf.intersect(polygon, feature["geoJSON"]); @@ -244,17 +245,8 @@ const regionChooser = (function(){ dataPanel.append(text + "<br/>\n"); } - 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) { + publicScope.downloadRegionFromCityGMLs = function(features) { //FIXME: Somehow, no feedback comes after large files are downloaded. :( - var features = getCheckedPolygons(checkbox_ids); - var project = features[0].get("project"); var srsName = features[0].get("srsName"); @@ -399,15 +391,11 @@ const regionChooser = (function(){ publicScope.downloadFromSelectedCityGMLs = 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); + let selectedGMLs = getSelectedGMLs(); - features.forEach(f => f.setStyle(utils.polygon_style("#ffff00", 0.8))); + selectedGMLs.forEach(f => f.setStyle(utils.polygon_style("#ffff00", 0.8))); - publicScope.downloadRegionFromCityGMLs(checkedBoxes.map(c => c.id)); + publicScope.downloadRegionFromCityGMLs(selectedGMLs); } publicScope.selectAllOrNone = function(allOrNone) { -- GitLab