1.7.6. Использование событий
Проиллюстрируем использование событий. Добавим в экран, созданный в разделе Создание диаграммы, обработку события нажатия на элемент графа. Откройте XML-дескриптор экрана в IDE, затем инжектируйте диаграмму:
@Inject
private SerialChart chart;
Далее добавьте слушателя в конце метода init(Map<String, Object> params)
. Если график получает данные через DataProvider
, для обработки нажатия на элемент графа используется метод getDataItemNN()
. В данном примере компонент SerialChart
привязан к источнику данных, поэтому для получения элемента используется другой метод: 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);
});
Для просмотра результата пересоберите проект командой Run → Restart application server и зайдите в систему. Откройте экран и нажмите на одну из колонок гистограммы.
Рисунок 18. Диаграмма с обработкой события нажатия на элемент графа