From ad701729ee8047cda01d8e54c06e9f78af7fd222 Mon Sep 17 00:00:00 2001 From: francesco Date: Fri, 30 Oct 2020 12:19:51 +0100 Subject: [PATCH] Added logic to show a testing popup on click on feature --- .../client/LayerManager.java | 32 ++++++++++++++++++- .../client/gis/OpenLayerOSM.java | 2 -- .../server/gis/FeatureParser.java | 17 +++++++--- src/main/webapp/GeoportalDataViewer.css | 5 +++ 4 files changed, 49 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java index abd302b..c790144 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java @@ -3,6 +3,7 @@ package org.gcube.portlets.user.geoportaldataviewer.client; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.LayerType; import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEvent; @@ -20,6 +21,8 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.FlexTable; +import com.google.gwt.user.client.ui.HTML; import ol.Coordinate; @@ -54,7 +57,7 @@ public class LayerManager { eventBus.addHandler(QueryDataEvent.TYPE, new QueryDataEventHandler() { @Override - public void onQueryInteraction(QueryDataEvent queryEvent) { + public void onQueryInteraction(final QueryDataEvent queryEvent) { if(queryEvent.getGeoQuery()!=null) { GeoQuery selectDataInfo = queryEvent.getGeoQuery(); @@ -106,6 +109,33 @@ public class LayerManager { @Override public void onSuccess(List result) { + + if(result==null || result.isEmpty()) + return; + + GWT.log("Data result: "+result); + + FlexTable flex = new FlexTable(); + flex.setCellPadding(1); + flex.setCellSpacing(1); + flex.getElement().addClassName("popup-table"); + for (GeoNaDataObject geoNaDataObject : result) { + Map> entries = geoNaDataObject.getDataEntryFields(); + + for (String key : entries.keySet()) { + if(key.equalsIgnoreCase("nome")) { + flex.setHTML(0, 0, new HTML(entries.get(key).get(0)).toString()); + } + else if(key.equalsIgnoreCase("descrizione")) { + flex.setText(1, 0, entries.get(key).get(0)); + }else if(key.equalsIgnoreCase("date_scavo")) { + flex.setHTML(2, 0, new HTML(""+entries.get(key).get(0)).toString()+""); + } + } + break; //Only the first one + } + + olMap.showPopup(flex.toString(), queryEvent.getoLCoordinate()); } }); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java index f02fff8..4c8def8 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java @@ -171,8 +171,6 @@ public class OpenLayerOSM { eventBus.fireEvent(new QueryDataEvent(select,coordinate)); } - - } }); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java index 222404b..6bf2fa8 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java @@ -65,10 +65,11 @@ public class FeatureParser { GeoNaDataObject gdo = new GeoNaDataObject(); gdo.setLayerItem(layerItem); for (FeatureRow featureRow : rows) { - + gdo.setDataEntryFields(featureRow.getMapProperties()); } + listGeonaDO.add(gdo); } - return null; + return listGeonaDO; } @@ -117,14 +118,22 @@ public class FeatureParser { return listFeaturesRow; } - JSONObject crs = json.getJSONObject("crs"); - JSONObject crsProp = crs.getJSONObject("properties"); + String featureCRSName = ""; + try { + JSONObject crs = json.getJSONObject("crs"); + JSONObject crsProp = crs.getJSONObject("properties"); + featureCRSName = crsProp.getString("name"); + LOG.info("Crs name found: "+featureCRSName); + }catch (Exception e) { + LOG.warn("Unable to read the field 'crs'"); + } LOG.info("Features are: "+features.length()); for (int i=0; i