GeoChart event handle
Posted: 10 Sep 2017, 10:27
My controller code is following:
private GChartModel geoChart;
private void generateGeoChart() throws PersistenceBeanException, IllegalAccessException {
List<AslRegion> regionList = DaoManager.load(AslRegion.class);
GChartModelBuilder builder = new GChartModelBuilder().setChartType(GChartType.GEO)
.addColumns("State");
for(AslRegion region: regionList){
builder.addRow(region.getMapName());
}
geoChart = builder
.addOption("region", "IT")
.addOption("resolution", "provinces")
.addOption("backgroundColor", "white")
.addOption("datalessRegionColor", "white")
.addOption("defaultColor", "#24a4ff")
.addOption("domain", "IT")
.build();
}
public void onSelectRegion(SelectEvent event) {
System.out.println("onSelectRegion CLICKED");
final JsonArray value = (JsonArray) event.getObject();
if (value.size() > 0) {
final JsonElement element = value.get(0);
final String label = new ArrayList<GChartModelRow>(getChart().getRows())
.get(element.getAsJsonObject().get("row").getAsInt()).getLabel();
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, "You have selected: " + label, null));
System.out.println("You have selected: " + label);
}
}
I was able to show map of Italy on web page but I can't handle selection event. When click on a region of Italy nothing happens.
In my xhtml page I have:
<pe:gChart value="#{homeBean.geoChart}" id="italyMap">
<f:ajax event="select" listener="#{homeBean.onSelectRegion}"/>
</pe:gChart>
I also see in Javascript console the message "TypeError: b.wrapper.getChart(...) is null"
Could you help me?
private GChartModel geoChart;
private void generateGeoChart() throws PersistenceBeanException, IllegalAccessException {
List<AslRegion> regionList = DaoManager.load(AslRegion.class);
GChartModelBuilder builder = new GChartModelBuilder().setChartType(GChartType.GEO)
.addColumns("State");
for(AslRegion region: regionList){
builder.addRow(region.getMapName());
}
geoChart = builder
.addOption("region", "IT")
.addOption("resolution", "provinces")
.addOption("backgroundColor", "white")
.addOption("datalessRegionColor", "white")
.addOption("defaultColor", "#24a4ff")
.addOption("domain", "IT")
.build();
}
public void onSelectRegion(SelectEvent event) {
System.out.println("onSelectRegion CLICKED");
final JsonArray value = (JsonArray) event.getObject();
if (value.size() > 0) {
final JsonElement element = value.get(0);
final String label = new ArrayList<GChartModelRow>(getChart().getRows())
.get(element.getAsJsonObject().get("row").getAsInt()).getLabel();
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, "You have selected: " + label, null));
System.out.println("You have selected: " + label);
}
}
I was able to show map of Italy on web page but I can't handle selection event. When click on a region of Italy nothing happens.
In my xhtml page I have:
<pe:gChart value="#{homeBean.geoChart}" id="italyMap">
<f:ajax event="select" listener="#{homeBean.onSelectRegion}"/>
</pe:gChart>
I also see in Javascript console the message "TypeError: b.wrapper.getChart(...) is null"
Could you help me?