From bfd36e939195c1e9a0c37c9bce9bfdbb6a6f2122 Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Wed, 5 Oct 2022 14:19:21 +0200
Subject: [PATCH] Trying to add "select repo" button.

---
 .../regionchooser/RegionChooserBrowser.java    |  3 ++-
 .../simstadt/regionchooser/website/index.html  |  1 +
 .../website/script/simstadt_openlayers.js      | 18 ++++++++++++------
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
index 8164141..0e9d8ef 100644
--- a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
+++ b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
@@ -70,8 +70,9 @@ public Void call() throws IOException {
 			new Thread(task).start();
 		}
 
-		public void downloadRegionFromCityGML(String wktPolygon, String project, String csvCitygmls, String srsName)
+		public void downloadRegionFromCityGMLs(String wktPolygon, String project, String csvCitygmls, String srsName)
 				throws IOException, ParseException, XPathParseException, NavException {
+			//NOTE: It doesn't seem possible to pass arrays or list from JS to Java. So csvCitygmls contains names separated by ;
 			Path[] paths = Stream.of(csvCitygmls.split(";")).map(s -> citygmlPath(project, s)).toArray(Path[]::new);
 
 			StringBuilder sb = RegionExtractor.selectRegionDirectlyFromCityGML(wktPolygon, srsName, paths);
diff --git a/src/main/resources/eu/simstadt/regionchooser/website/index.html b/src/main/resources/eu/simstadt/regionchooser/website/index.html
index 6cfa47b..d933448 100644
--- a/src/main/resources/eu/simstadt/regionchooser/website/index.html
+++ b/src/main/resources/eu/simstadt/regionchooser/website/index.html
@@ -25,6 +25,7 @@
 		<div id="header">
 			<ul>
 				<li class="title">Simstadt Region Chooser</li>
+				<li class="title" id="repository"><button onclick="regionChooser.selectRepository()">Select repository</button></li>
 			</ul>
 		</div>
 		<div id="map" class="map" tabindex="0"></div>
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 671376b..dfbd58a 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
@@ -227,7 +227,7 @@ var regionChooser = (function(){
 		dataPanel.append(text + "<br/>\n");
 	}
 	
-	publicScope.downloadRegionFromCityGML = function(checkbox_ids) {
+	publicScope.downloadRegionFromCityGMLs = function(checkbox_ids) {
 		// TODO: Disable all links
 		// TODO: DRY
 		var features = checkbox_ids.map(checkbox_id => {
@@ -245,7 +245,7 @@ var regionChooser = (function(){
 				$("html").addClass("wait");
 				console.log("Selected region is written in " + srsName + " coordinate system.");
 				try {
-					fxapp.downloadRegionFromCityGML(sketchAsWKT(srsName), project, citygmlNames.join(";"), srsName);
+					fxapp.downloadRegionFromCityGMLs(sketchAsWKT(srsName), project, citygmlNames.join(";"), srsName);
 					dataPanel.append("<h2 class='ok'>Done!</h2><br/>\n");
 				} catch (e) {
 					console.log("ERROR : " + e);
@@ -287,7 +287,7 @@ var regionChooser = (function(){
 		//TODO: Add selectAll
 		//TODO: Add selectNone
 		//TODO: Hide button if empty
-		dataPanel.append('<button type="button" onclick="regionChooser.clickety_click()" id="download" style="visibility:hidden">Download Region</button>');
+		dataPanel.append('<button type="button" onclick="regionChooser.downloadFromSelectedCityGMLs()" id="download" style="visibility:hidden">Download Region</button>');
 		dataPanel.append('<br/>\n');
 		findIntersections();
 	}
@@ -359,7 +359,9 @@ var regionChooser = (function(){
 		dataPanel.append("You can add a new point to an existing edge by clicking and dragging.<br>\n");
 		dataPanel.append("You can remove a point with SHIFT + clicking.<br>\n");
 		dataPanel.append("You can cancel drawing with ESC or DEL.<br><br>\n");
-		dataPanel.append("After drawing a polygon which intersects with a GML file, you can download the corresponding part by clicking on the filename.<br>\n");
+		dataPanel.append("After drawing a polygon which intersects with at least one GML file,<br>\n");
+		dataPanel.append("you can download the corresponding part by checking the<br>\n");
+		dataPanel.append("desired filenames and clicking on 'Download' button.<br>\n");
 	}
 
 	// Executed by JavaFX when whole page is loaded.
@@ -370,14 +372,18 @@ var regionChooser = (function(){
 		console.log("READY!");
 	}
 	
-	publicScope.clickety_click = function() {
+	publicScope.downloadFromSelectedCityGMLs = function() {
 		var checkedBoxes = Array.from(document.querySelectorAll("input.select_citygml")).filter(c => c.checked);
 		if (checkedBoxes.length === 0){
 			console.log("You should select at least one citygml, though.");
 		} else{
-			publicScope.downloadRegionFromCityGML(checkedBoxes.map(c => c.id));
+			publicScope.downloadRegionFromCityGMLs(checkedBoxes.map(c => c.id));
 		}
 	}
+	
+	publicScope.selectRepository = function() {
+		console.log("Should probably do something");
+	}
 
 	focusOnMap();
 	//var regionChooser = publicScope; //NOTE: In order to open closure. For debugging
-- 
GitLab