From 75ee91fc19be4271a235f11af102daa679754b9d Mon Sep 17 00:00:00 2001 From: Eric Duminil <eric.duminil@gmail.com> Date: Fri, 14 Oct 2022 11:10:32 +0200 Subject: [PATCH] Refresh style. --- .../website/script/simstadt_openlayers.js | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 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 4d47599..f9655b2 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 @@ -1,4 +1,10 @@ -var regionChooser = (function(){ +const styles = {}; + +styles.original = utils.polygon_style('#447744', 0.2); +styles.highlighted = utils.polygon_style("#ff44a2", 0.7); +styles.selected = utils.polygon_style("#ffff00", 0.8); + +const regionChooser = (function(){ //TODO: Somehow split in classes. This file is getting too big and mixed var publicScope = {}; const fromJavaFX = navigator.userAgent.indexOf('JavaFX') !== -1; @@ -26,7 +32,7 @@ var regionChooser = (function(){ var kml_layer = new ol.layer.Vector({ source : kml_source, - style : utils.polygon_style('#447744', 0.2) + style : styles.original }); var intersections = new ol.source.Vector(); @@ -74,7 +80,7 @@ var regionChooser = (function(){ feature["project"] = feature.get("project"); feature["name"] = feature.get("name"); feature["source"] = "CityGML"; - feature["originalStyle"] = feature.getStyle(); + feature["status"] = "original"; }); var features = Array.from(kml_source.getFeatures()); @@ -160,22 +166,26 @@ var regionChooser = (function(){ publicScope.highlightPolygon = function(i) { var feature = kml_source.getFeatureById(i); - feature.setStyle(utils.polygon_style("#ff44a2", 0.7)); + feature.setStyle(styles.highlighted); } publicScope.resetHighlight = function(i) { var feature = kml_source.getFeatureById(i); - feature.setStyle(feature.originalStyle); + refreshStyle(feature); + } + + refreshStyle = function(feature){ + feature.setStyle(styles[feature.status]); } publicScope.isDownloadPossible = function(){ - kml_source.getFeatures().forEach(f => f.setStyle(f.originalStyle)); + kml_source.getFeatures().forEach(f => {f.status = "original"; refreshStyle(f)}); //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(utils.polygon_style("#ffff00", 0.8))); + features.forEach(f => {f.status = "selected"; refreshStyle(f)}); document.getElementById("download_region_button").disabled = (checkedBoxes.length == 0); } -- GitLab