1.7.6. Using Events
Let us consider the use of events. We will add handling of a graph item click to the screen created in Creating Chart. Open the screen controller in the IDE and inject the chart:
@Inject
private SerialChart serialChart;
Then add a listener at the bottom of the init(Map<String, Object> params)
method. When a chart receives data from DataProvider
, the getDataItemNN()
method should be used to get the item clicked. In this example, the SerialChart
component is bound to the datasource, so another method should be used: getEntityNN()
:
serialChart.addGraphItemClickListener(event -> {
CountryGrowth countryGrowth = (CountryGrowth) event.getEntityNN();
String message = String.format("GDP grow in %s (%s): %.1f%%",
countryGrowth.getCountry(),
event.getGraphId().substring(5),
"graph2014".equals(event.getGraphId()) ? countryGrowth.getYear2014() : countryGrowth.getYear2015());
showNotification(message, NotificationType.HUMANIZED_HTML);
});
To see the results, rebuild the project using Run → Restart application server and log in to the system. Open the screen and click one of the columns.
Figure 18. Chart that handles graph item click event