task_25066 #15
|
@ -285,11 +285,6 @@ public class GeoportalDataViewer implements EntryPoint {
|
||||||
}
|
}
|
||||||
|
|
||||||
mainPanel.openCollectionMenu();
|
mainPanel.openCollectionMenu();
|
||||||
//
|
|
||||||
// GWT.log("LIST CUSTOM LAYERS: " + result.getListCustomLayers());
|
|
||||||
// if (result.getListCustomLayers() != null && result.getListCustomLayers().size() > 0) {
|
|
||||||
// mainPanel.setCustomLayers(result.getListCustomLayers());
|
|
||||||
// }
|
|
||||||
|
|
||||||
loadConfigureduGroupedLayersForUCD();
|
loadConfigureduGroupedLayersForUCD();
|
||||||
|
|
||||||
|
@ -333,7 +328,7 @@ public class GeoportalDataViewer implements EntryPoint {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Map<String, List<GroupedLayersDV<? extends LayerIDV>>> result) {
|
public void onSuccess(Map<String, List<GroupedLayersDV<? extends LayerIDV>>> result) {
|
||||||
GWT.log(GEOPORTAL_DATA_HANDLER.geoportal_grouped_overlay_layers +" returned: "+result);
|
GWT.log(GEOPORTAL_DATA_HANDLER.geoportal_grouped_overlay_layers + " returned: " + result);
|
||||||
if (result != null && result.size() > 0) {
|
if (result != null && result.size() > 0) {
|
||||||
|
|
||||||
Map<String, GCubeCollection> collections = viewerConfiguration.getAvailableCollections();
|
Map<String, GCubeCollection> collections = viewerConfiguration.getAvailableCollections();
|
||||||
|
@ -365,7 +360,7 @@ public class GeoportalDataViewer implements EntryPoint {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Map<String, List<GroupedLayersDV<? extends LayerIDV>>> result) {
|
public void onSuccess(Map<String, List<GroupedLayersDV<? extends LayerIDV>>> result) {
|
||||||
GWT.log(GEOPORTAL_DATA_HANDLER.geoportal_grouped_cross_filtering+" returned: "+result);
|
GWT.log(GEOPORTAL_DATA_HANDLER.geoportal_grouped_cross_filtering + " returned: " + result);
|
||||||
if (result != null && result.size() > 0) {
|
if (result != null && result.size() > 0) {
|
||||||
|
|
||||||
Map<String, GCubeCollection> collections = viewerConfiguration.getAvailableCollections();
|
Map<String, GCubeCollection> collections = viewerConfiguration.getAvailableCollections();
|
||||||
|
|
|
@ -342,6 +342,16 @@ public class GeonaDataViewMainPanel extends Composite {
|
||||||
|
|
||||||
}
|
}
|
||||||
}, ClickEvent.getType());
|
}, ClickEvent.getType());
|
||||||
|
|
||||||
|
linkCrossFilteringLayers.addDomHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
// event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
}
|
||||||
|
}, ClickEvent.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -28,14 +28,13 @@ import com.google.gwt.http.client.RequestBuilder;
|
||||||
import com.google.gwt.http.client.RequestCallback;
|
import com.google.gwt.http.client.RequestCallback;
|
||||||
import com.google.gwt.http.client.RequestException;
|
import com.google.gwt.http.client.RequestException;
|
||||||
import com.google.gwt.http.client.Response;
|
import com.google.gwt.http.client.Response;
|
||||||
import com.google.gwt.json.client.JSONParser;
|
import com.google.gwt.http.client.URL;
|
||||||
import com.google.gwt.json.client.JSONString;
|
|
||||||
import com.google.gwt.json.client.JSONValue;
|
|
||||||
import com.google.gwt.uibinder.client.UiBinder;
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
import jsinterop.base.JsPropertyMap;
|
||||||
import ol.Feature;
|
import ol.Feature;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,8 +48,8 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
|
|
||||||
public static String COLORSCALERANGE = "COLORSCALERANGE";
|
public static String COLORSCALERANGE = "COLORSCALERANGE";
|
||||||
|
|
||||||
//@UiField
|
// @UiField
|
||||||
//WellForm panelContainer;
|
// WellForm panelContainer;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
Fieldset fieldSet;
|
Fieldset fieldSet;
|
||||||
|
@ -65,10 +64,10 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
|
|
||||||
private LayerItem layerItem;
|
private LayerItem layerItem;
|
||||||
|
|
||||||
private LinkedHashMap<Integer, HashMap<String, SelectableItem>> mapInnestedFeatures = new LinkedHashMap<Integer, HashMap<String, SelectableItem>>();
|
|
||||||
|
|
||||||
private LinkedHashMap<Integer, List<? extends LayerIDV>> mapInnestedFiltering = new LinkedHashMap<Integer, List<? extends LayerIDV>>();
|
private LinkedHashMap<Integer, List<? extends LayerIDV>> mapInnestedFiltering = new LinkedHashMap<Integer, List<? extends LayerIDV>>();
|
||||||
|
|
||||||
|
private LinkedHashMap<Integer, HashMap<String, SelectableItem>> mapInnestedFeatures = new LinkedHashMap<Integer, HashMap<String, SelectableItem>>();
|
||||||
|
|
||||||
private LinkedHashMap<Integer, List<ListBox>> mapInnestedListBoxes = new LinkedHashMap<Integer, List<ListBox>>();
|
private LinkedHashMap<Integer, List<ListBox>> mapInnestedListBoxes = new LinkedHashMap<Integer, List<ListBox>>();
|
||||||
|
|
||||||
private GroupedLayersDV<? extends LayerIDV> groupedLayersDV;
|
private GroupedLayersDV<? extends LayerIDV> groupedLayersDV;
|
||||||
|
@ -192,26 +191,40 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
addListBoxesLevelToPanel(theLevel, mapInnestedFiltering.get(theLevel));
|
addListBoxesLevelToPanel(theLevel, mapInnestedFiltering.get(theLevel));
|
||||||
}
|
}
|
||||||
|
|
||||||
// filleSelectableLevel(level, mapInnestedFiltering.get(level),
|
filleSelectableLevel(level, null);
|
||||||
// mapInnestedListBoxes.get(level));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void filleSelectableLevel(int level, List<? extends LayerIDV> layersIDV, List<ListBox> listBoxes) {
|
private void filleSelectableLevel(int level, SelectableItem selectedItem) {
|
||||||
|
|
||||||
|
//HashMap<String, SelectableItem> mapOfFeatureAtLevel = mapInnestedFeatures.get(level);
|
||||||
|
List<? extends LayerIDV> layersIDV = mapInnestedFiltering.get(level);
|
||||||
|
List<ListBox> listBoxes = mapInnestedListBoxes.get(level);
|
||||||
|
|
||||||
if (layersIDV == null)
|
if (layersIDV == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HashMap<String, SelectableItem> mapSelectableFeatures = mapInnestedFeatures.get(level);
|
// final HashMap<String, SelectableItem> mapSelectableFeatures = mapOfFeatureAtLevel == null
|
||||||
|
// ? new HashMap<String, SelectableItem>()
|
||||||
|
// : mapOfFeatureAtLevel;
|
||||||
|
|
||||||
if (mapSelectableFeatures == null) {
|
final HashMap<String, SelectableItem> mapSelectableFeatures = new HashMap<String, CrossFilteringLayerPanel.SelectableItem>();
|
||||||
mapSelectableFeatures = new HashMap<String, SelectableItem>();
|
|
||||||
HashMap<String, SelectableItem> mapFeatures = new HashMap<String, SelectableItem>();
|
// if (mapSelectableFeatures.isEmpty()) {
|
||||||
|
|
||||||
|
LayerIDV layerIDV = layersIDV.get(0); // Expected one
|
||||||
|
|
||||||
for (LayerIDV layerIDV : layersIDV) {
|
|
||||||
if (layerIDV instanceof CrossFilteringLayerDV) {
|
if (layerIDV instanceof CrossFilteringLayerDV) {
|
||||||
CrossFilteringLayerDV crossFilteringLayer = (CrossFilteringLayerDV) layerIDV;
|
CrossFilteringLayerDV crossFilteringLayer = (CrossFilteringLayerDV) layerIDV;
|
||||||
String wfsURL = crossFilteringLayer.getWFS_URL();
|
String wfsURL = crossFilteringLayer.getWFS_URL();
|
||||||
|
|
||||||
|
if (selectedItem != null) {
|
||||||
|
|
||||||
|
String cqlFilterValue = crossFilteringLayer.getTable_parent_key_field() + "=" + selectedItem.getKey();
|
||||||
|
wfsURL += "&CQL_FILTER=" + URL.encode(cqlFilterValue);
|
||||||
|
|
||||||
|
}
|
||||||
|
GWT.log("wfsURL request: " + wfsURL);
|
||||||
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, wfsURL);
|
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, wfsURL);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -222,24 +235,33 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onResponseReceived(Request request, Response response) {
|
public void onResponseReceived(Request request, Response response) {
|
||||||
JSONString json = new JSONString(response.getText());
|
GWT.log("wfsURL response: " + response.getText());
|
||||||
JSONValue parser = JSONParser.parse(response.getText());
|
|
||||||
Feature[] features = OLGeoJSONUtil.readGeoJsonFeatures(MAP_PROJECTION.EPSG_4326,
|
Feature[] features = OLGeoJSONUtil.readGeoJsonFeatures(MAP_PROJECTION.EPSG_4326,
|
||||||
response.getText());
|
response.getText());
|
||||||
|
|
||||||
for (Feature feature : features) {
|
for (Feature feature : features) {
|
||||||
String key = feature.get(crossFilteringLayer.getTable_key_field());
|
JsPropertyMap<Object> properties = feature.getProperties();
|
||||||
String parentKey = feature.get(crossFilteringLayer.getTable_parent_key_field());
|
Object key = properties.get(crossFilteringLayer.getTable_key_field());
|
||||||
String itemField = feature.get(crossFilteringLayer.getTable_show_field());
|
Object itemField = properties.get(crossFilteringLayer.getTable_show_field());
|
||||||
|
|
||||||
|
Object parentKey = null;
|
||||||
|
if (crossFilteringLayer.getTable_parent_key_field() != null
|
||||||
|
&& !crossFilteringLayer.getTable_parent_key_field().isEmpty())
|
||||||
|
parentKey = properties.get(crossFilteringLayer.getTable_parent_key_field());
|
||||||
|
|
||||||
parentKey = parentKey == null ? "" : parentKey;
|
parentKey = parentKey == null ? "" : parentKey;
|
||||||
|
|
||||||
SelectableItem selectableItem = new SelectableItem(key, parentKey, itemField,
|
SelectableItem selectableItem = new SelectableItem(key + "", parentKey + "", itemField + "",
|
||||||
crossFilteringLayer.getName());
|
crossFilteringLayer.getName());
|
||||||
|
GWT.log("select item: " + selectableItem);
|
||||||
|
|
||||||
String mapKey = "root_" + parentKey + key;
|
String pathFeatureKey = pathFeatureKey(selectableItem);
|
||||||
mapFeatures.put(mapKey, selectableItem);
|
mapSelectableFeatures.put(pathFeatureKey, selectableItem);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
mapInnestedFeatures.put(level, mapSelectableFeatures);
|
||||||
|
String placholder = placeholderLayer(layersIDV.get(0)); // Expected one
|
||||||
|
fillListBoxLevel(level, mapSelectableFeatures, listBoxes, placholder);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -247,13 +269,21 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
// Code omitted for clarity
|
// Code omitted for clarity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
mapSelectableFeatures.putAll(mapFeatures);
|
// } else {
|
||||||
|
//
|
||||||
|
// String placholder = placeholderLayer(layersIDV.get(0)); // Expected one
|
||||||
|
// fillListBoxLevel(level, mapInnestedFeatures.get(level), listBoxes, placholder);
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fillListBoxLevel(level, mapSelectableFeatures, listBoxes);
|
private String pathFeatureKey(SelectableItem selectableItem) {
|
||||||
// mapInnestedFeatures.put(level, mapSelectableFeatures);
|
return "root_" + selectableItem.getParentKey() + "_"+selectableItem.getKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String placeholderLayer(LayerIDV layersIDV) {
|
||||||
|
return "Select " + layersIDV.getTitle() + "...";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addListBoxesLevelToPanel(int level, List<? extends LayerIDV> layersIDV) {
|
private void addListBoxesLevelToPanel(int level, List<? extends LayerIDV> layersIDV) {
|
||||||
|
@ -268,9 +298,10 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
ControlLabel cl = new ControlLabel(layerIDV.getTitle());
|
ControlLabel cl = new ControlLabel(layerIDV.getTitle());
|
||||||
Controls controls = new Controls();
|
Controls controls = new Controls();
|
||||||
ListBox listBox = new ListBox();
|
ListBox listBox = new ListBox();
|
||||||
listBox.addItem("Select " + layerIDV.getTitle() + " ...");
|
String placeholder = placeholderLayer(layerIDV);
|
||||||
|
listBox.addItem(placeholder);
|
||||||
|
setEnabledBox(listBox, false);
|
||||||
listBoxes.add(listBox);
|
listBoxes.add(listBox);
|
||||||
|
|
||||||
controls.add(listBox);
|
controls.add(listBox);
|
||||||
cg.add(cl);
|
cg.add(cl);
|
||||||
cg.add(controls);
|
cg.add(controls);
|
||||||
|
@ -281,13 +312,36 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
mapInnestedListBoxes.put(level, listBoxes);
|
mapInnestedListBoxes.put(level, listBoxes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setEnabledBox(ListBox listBox, boolean bool) {
|
||||||
|
listBox.setEnabled(bool);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearListBox(ListBox listBox, boolean bool) {
|
||||||
|
listBox.setEnabled(bool);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetListBoxLevel(int level) {
|
||||||
|
|
||||||
|
List<ListBox> listBoxes = mapInnestedListBoxes.get(level);
|
||||||
|
if(listBoxes!=null) {
|
||||||
|
for (ListBox listBox : listBoxes) {
|
||||||
|
listBox.clear();
|
||||||
|
setEnabledBox(listBox, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void fillListBoxLevel(int level, HashMap<String, SelectableItem> mapSelectableFeatures,
|
private void fillListBoxLevel(int level, HashMap<String, SelectableItem> mapSelectableFeatures,
|
||||||
List<ListBox> listBoxes) {
|
List<ListBox> listBoxes, String placeholder) {
|
||||||
|
GWT.log("fillBox level: " + level + " map: " + mapSelectableFeatures);
|
||||||
|
|
||||||
if (mapSelectableFeatures == null)
|
if (mapSelectableFeatures == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ListBox listBox = listBoxes.get(0); // Expected one
|
ListBox listBox = listBoxes.get(0); // Expected one
|
||||||
|
listBox.clear();
|
||||||
|
listBox.addItem(placeholder);
|
||||||
|
listBox.getElement().getFirstChildElement().setAttribute("disabled", "disabled");
|
||||||
|
|
||||||
for (String key : mapSelectableFeatures.keySet()) {
|
for (String key : mapSelectableFeatures.keySet()) {
|
||||||
SelectableItem selItem = mapSelectableFeatures.get(key);
|
SelectableItem selItem = mapSelectableFeatures.get(key);
|
||||||
|
@ -298,13 +352,30 @@ public class CrossFilteringLayerPanel extends Composite {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChange(ChangeEvent event) {
|
public void onChange(ChangeEvent event) {
|
||||||
loadInnerLevel(level);
|
loadInnerLevel(level, listBox.getSelectedValue());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
setEnabledBox(listBox, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadInnerLevel(int level) {
|
private void loadInnerLevel(int level, String selectableItemValue) {
|
||||||
// TODO Auto-generated method stub
|
GWT.log("selected level " + level + " selectableItemValue " + selectableItemValue);
|
||||||
|
HashMap<String, SelectableItem> mapSelectableItem = mapInnestedFeatures.get(level);
|
||||||
|
SelectableItem selectedItem = mapSelectableItem.get(selectableItemValue);
|
||||||
|
|
||||||
|
GWT.log("selected selectableItem " + selectedItem);
|
||||||
|
int innerLevel = level + 1;
|
||||||
|
List<? extends LayerIDV> selectedLayers = mapInnestedFiltering.get(innerLevel);
|
||||||
|
|
||||||
|
//if layer filtering exists at this level
|
||||||
|
if (selectedLayers != null) {
|
||||||
|
|
||||||
|
List<ListBox> selectedListBoxes = mapInnestedListBoxes.get(innerLevel);
|
||||||
|
GWT.log("loading inner layers " + selectedLayers);
|
||||||
|
GWT.log("loading selectedListBoxes " + selectedListBoxes);
|
||||||
|
filleSelectableLevel(innerLevel, selectedItem);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,12 +114,6 @@ public class OverlayCustomLayerPanel extends Composite {
|
||||||
@Override
|
@Override
|
||||||
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
||||||
GWT.log("CustomLayer selector flag changed to value : " + event.toDebugString());
|
GWT.log("CustomLayer selector flag changed to value : " + event.toDebugString());
|
||||||
|
|
||||||
// String collectionID = ((CheckBox) event.getSource()).getId().replace("gcubeCollectionSelector_",
|
|
||||||
// "");
|
|
||||||
|
|
||||||
// GWT.log("Collection ID is : " + collectionID + ", event value: " +
|
|
||||||
// event.getValue());
|
|
||||||
if (event.getValue()) {
|
if (event.getValue()) {
|
||||||
// OPEN COLLECTION
|
// OPEN COLLECTION
|
||||||
applicationBus.fireEvent(new OverlayCustomLayerToMapEvent(layerItem, OverlayCustomLayerToMapEvent.ACTION_TYPE.VISIBILITY, true));
|
applicationBus.fireEvent(new OverlayCustomLayerToMapEvent(layerItem, OverlayCustomLayerToMapEvent.ACTION_TYPE.VISIBILITY, true));
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class OLGeoJSONUtil {
|
||||||
* @param geoJSONString the geo JSON string
|
* @param geoJSONString the geo JSON string
|
||||||
* @return the geo json
|
* @return the geo json
|
||||||
*/
|
*/
|
||||||
public static GeoJson buildGeoJSON(MAP_PROJECTION projection, String geoJSONString) {
|
public static GeoJson buildGeoJSON(MAP_PROJECTION projection) {
|
||||||
GeoJsonFeatureOptions fo = new GeoJsonFeatureOptions();
|
GeoJsonFeatureOptions fo = new GeoJsonFeatureOptions();
|
||||||
ProjectionOptions projectionOptions = new ProjectionOptions();
|
ProjectionOptions projectionOptions = new ProjectionOptions();
|
||||||
projectionOptions.setCode(projection.getName());
|
projectionOptions.setCode(projection.getName());
|
||||||
|
@ -48,7 +48,7 @@ public class OLGeoJSONUtil {
|
||||||
* @return the feature[]
|
* @return the feature[]
|
||||||
*/
|
*/
|
||||||
public static Feature[] readGeoJsonFeatures(MAP_PROJECTION projection, String geoJSONString) {
|
public static Feature[] readGeoJsonFeatures(MAP_PROJECTION projection, String geoJSONString) {
|
||||||
GeoJson geoJson = buildGeoJSON(projection, geoJSONString);
|
GeoJson geoJson = buildGeoJSON(projection);
|
||||||
return geoJson.readFeatures(geoJSONString);
|
return geoJson.readFeatures(geoJSONString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -508,19 +508,6 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme
|
||||||
GCubeCollection coll = new GCubeCollection();
|
GCubeCollection coll = new GCubeCollection();
|
||||||
coll.setUcd(ucdDV);
|
coll.setUcd(ucdDV);
|
||||||
|
|
||||||
// // Loading geoportal_grouped_overlay_layers if exists
|
|
||||||
// GEOPORTAL_DATA_HANDLER theHandler = GEOPORTAL_DATA_HANDLER.geoportal_grouped_overlay_layers;
|
|
||||||
// List<HandlerDeclaration> handlers = u.getHandlersByType(theHandler.getType());
|
|
||||||
//
|
|
||||||
// if (handlers != null && handlers.size() > 0) {
|
|
||||||
// // Loading Handler gcube_profiles
|
|
||||||
// HandlerDeclaration handler = handlers.get(0);
|
|
||||||
// List<GroupedLayersDV> listCustomLayers = getGroupedOverlayLayers(u, handler,
|
|
||||||
// GEOPORTAL_DATA_HANDLER.geoportal_grouped_overlay_layers);
|
|
||||||
// config.setGroupCustomLayers(listCustomLayers);
|
|
||||||
// } else
|
|
||||||
// LOG.warn("No handler " + theHandler + "found into UCD " + u.getId() + ", continue...");
|
|
||||||
|
|
||||||
// TODO TO Check index flag should be in configuration or evaluated according to
|
// TODO TO Check index flag should be in configuration or evaluated according to
|
||||||
// user credentials
|
// user credentials
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue