From 8d3aef301be84abacb6b10ed5e5a3e11ca9ccd36 Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Thu, 6 Oct 2022 13:46:02 +0200
Subject: [PATCH] Hide "select all" and "none" when required. Refresh after
 download.

---
 .../regionchooser/RegionChooserBrowser.java   |  2 ++
 .../website/script/simstadt_openlayers.js     | 27 ++++++++++---------
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
index 826475e..e2db389 100644
--- a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
+++ b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
@@ -95,6 +95,8 @@ public void downloadRegionFromCityGMLs(String wktPolygon, String project, String
 					}
 				}
 			}
+
+			refreshHulls();
 		}
 
 		public void selectRepository() {
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 4022780..c214643 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
@@ -163,7 +163,7 @@ var regionChooser = (function(){
 		intersections.addFeature(intersection);
 		var link = '<li>'
         // TODO: If possible, highlight the corresponding polygon when hovering above a name.
-		link += '<input type="checkbox" id="citygml_' + feature.getId() + '" class="select_citygml" onclick="regionChooser.canDownload();"><label for="citygml_' + feature.getId() + '">' +  feature['name'] + '</label>';
+		link += '<input type="checkbox" id="citygml_' + feature.getId() + '" class="select_citygml" onclick="regionChooser.isDownloadPossible();"><label for="citygml_' + feature.getId() + '">' +  feature['name'] + '</label>';
 
 		link += " (" + citygml_percentage + "%";
 		if (sketch_percentage == 100) {
@@ -172,15 +172,14 @@ var regionChooser = (function(){
 		dataPanel.append(link + ")\n");
 	}
 	
-	publicScope.canDownload = function(){
+	publicScope.isDownloadPossible = function(){
 		var count = 0;
-		console.log("...");
 		document.querySelectorAll("input.select_citygml").forEach(c => {
 			if (c.checked){
 				count += 1;
 			}
 		});
-		document.getElementById("download").disabled = (count == 0);
+		document.getElementById("download_region_button").disabled = (count == 0);
 	}
 	
 	function findIntersection(feature, polygon) {
@@ -210,10 +209,10 @@ var regionChooser = (function(){
 		});
 		
 		if (intersection_found) {
-			document.getElementById("download").style.visibility = 'visible';
+			document.getElementById("download_region").style.visibility = 'visible';
 		}
 		else {
-			document.getElementById("download").style.visibility = 'hidden';
+			document.getElementById("download_region").style.visibility = 'hidden';
 			dataPanel.append("No intersection found with any CityGML file.<br/>\n");
 		}
 	}
@@ -248,8 +247,9 @@ var regionChooser = (function(){
 				var time = end - start;
 				console.log('Download Execution time: ' + (time / 1000).toFixed(3) + 's');
 				setTimeout(function() {
-					document.getElementById("download").disabled = false;
+					document.getElementById("download_region_button").disabled = false;
 					document.documentElement.className = ''; // Stop waiting
+					resetDrawing();
 				}, 100);
 			} else {
 				var msg = "ERROR : Unknown coordinate system : \"" + srsName + "\". Cannot extract any region";
@@ -277,10 +277,13 @@ var regionChooser = (function(){
 			dataPanel.append("WGS84 Coordinates<br/>");
 			dataPanel.append(wgs84_coords + "<br/>\n");
 		}
+		//NOTE: Could show m², ha or km² depending on magnitude
 		dataPanel.append("<h3 class='clean'>Area : " + (area / 10000).toFixed(1) + " ha\n");
-		dataPanel.append('<button type="button" onclick="regionChooser.downloadFromSelectedCityGMLs()" id="download" style="visibility:hidden" disabled>Download Region</button><br/>\n');
-		dataPanel.append('<a href="#" onclick="regionChooser.checkCityGMLS(true);">(Select All)</a>');
-		dataPanel.append('<a href="#" onclick="regionChooser.checkCityGMLS(false);">(Select None)</a>');
+		dataPanel.append('<div style="visibility:hidden" id="download_region">' + 
+			'<button type="button" onclick="regionChooser.downloadFromSelectedCityGMLs()" id="download_region_button" disabled>Download Region</button><br/>\n' +
+			'<a href="#" onclick="regionChooser.checkCityGMLS(true);">(Select All)</a>\n' +
+			'<a href="#" onclick="regionChooser.checkCityGMLS(false);">(Select None)</a>\n'+
+			'</div><br/>\n');
 		dataPanel.append('<br/>\n');
 		findIntersections();
 	}
@@ -373,14 +376,14 @@ var regionChooser = (function(){
 		if (checkedBoxes.length === 0){
 			console.log("You should select at least one citygml, though.");
 		} else{
-			document.getElementById("download").disabled = true;
+			document.getElementById("download_region_button").disabled = true;
 			publicScope.downloadRegionFromCityGMLs(checkedBoxes.map(c => c.id));
 		}
 	}
 	
 	publicScope.checkCityGMLS = function(allOrNone) {
 		document.querySelectorAll("input.select_citygml").forEach(c => c.checked = allOrNone);
-		publicScope.canDownload();
+		publicScope.isDownloadPossible();
 	}
 	
 	publicScope.selectRepository = function() {
-- 
GitLab