Ваадин 14.1.17 - Получить выбранный элемент на графике - Java - PullRequest
0 голосов
/ 19 февраля 2020

Здравствуйте, мне интересно, как получить выбранный элемент из диаграммы ap ie в Vaadin 14.1.17.

Я использую classi c p ie с DataSeries и некоторыми значениями внутри, и я хочу получить текущий выбранный элемент из прослушивателя щелчков

Инициализация DataSeries

DataSeries ds = new DataSeries();

for (AssetClassModel a : p.getAssetClasses()) {
    ds.add(new DataSeriesItem(a.getDesc(), a.getPerc()));
}
conf.setSeries(ds);

Я попытался прочитать поле selected внутри DataSeriesItem но это всегда false

Нажмите Слушатель

chart.addSeriesClickListener(
        e -> {
            List<DataSeriesItem> items = ((DataSeries) e.getSeries()).getData();

            for (DataSeriesItem item : items) {
                System.out.println(item.getName() + " selected: " + item.isSelected());
            }

        }
);

Выход

value1 selected: false
value2 selected: false
value4 selected: false

Есть ли у вас какие-либо Идея о том, как управлять этим?

Спасибо Davide

1 Ответ

0 голосов
/ 20 февраля 2020

Это скорее обходной путь, но, похоже, работает:)

SeriesClickEvent имеет метод getMouseDetails().getyValue(). Возвращенное значение совпадает со значением y элемента. (Это второй параметр конструктора DataSeriesItem)

chart.addSeriesClickListener(event->{
     series.getData().forEach( item->{
          if(event.getMouseDetails().getyValue()== ((DataSeriesItem)item).getY().doubleValue()){
              System.out.println("SELECTED : " +  ((DataSeriesItem)item).getName());
           }
     });
});

Кажется, что метод isSelected() полагается на свойство selected, неявно установленное с использованием item.setSelected(true);. Это также сбивало меня с толку, так что это либо ошибка, либо недокументированное поведение.

...