Здравствуйте!
К сожалению, AmCharts не даёт прямого API для выделения DataItem
в графиках. Однако можно попробовать реализовать что-то похоже, используя свойство fillColorsField
у графика.
Пример с dataContainer
.
Используемой сущности добавить MetaProperty
поле:
@Transient
@MetaProperty
protected String selected;
Оно будет хранить цвет для выделенного элемента графика. И это поле мы прописываем в выше описанном свойстве fillColorsField
:
<charts:graph id="valueGraph"
type="COLUMN"
fillColorsField="selected"
fillAlphas="0.5"
valueField="value">
</charts:graph>
Далее в контроллере подписываемся на GraphItemClickEvent
и в зависимости от значения этого поля будем добавлять или убирать выделение:
@Subscribe("serialChart")
private void onSerialChartGraphItemClick(Chart.GraphItemClickEvent event) {
EntityDataItem clickedItem = (EntityDataItem) event.getDataItem();
Task clickedTask = (Task) clickedItem.getItem();
if (!Strings.isNullOrEmpty(clickedTask.getSelected())) {
clickedTask.setSelected(null);
} else {
List<Task> tasks = tasksDc.getItems();
for (Task task : tasks) {
task.setSelected(null);
}
clickedTask.setSelected(SELECTED_COLOR);
showNotification(clickedTask);
}
event.getSource().repaint();
}
В итоге получается:
Полный пример: demo.zip (84.5 КБ)