Некорректно работает график pieChart

Добрый день!
Пытаюсь реализовать обработку события, когда выбирается кусок диаграммы (код ниже):

    @Subscribe("depPlanByStatusPieChart")
    public void onDepPlanByStatusPieChartSliceClick(Chart.SliceClickEvent event) {
        PlanStatus planStatus = PlanStatus.fromId(event.getDataItem().getValue("status").toString());
        PropertyCondition condition = PropertyCondition.equal("status", planStatus);
        dataManager.load(Plan.class).condition(condition).list();
        screenBuilders.lookup(Plan.class, this)
                .withScreenClass(PlanBrowse.class)
                .withOpenMode(OpenMode.NEW_TAB)
                .build()
                .show();
    }

но у меня вместо планов в конкретном статусе (пусть их будет 5 штук), в PlanBrowse открываются все планы (пусть будет 10 штук). Не понимаю, как прописать условие, чтобы открывались только нужные планы?

Так… вы свои планы грузите, но при этом их в экран не проставляете.

Я так понимаю вы по
dataManager.load(Plan.class).condition(condition).list();
Грузите нужные вам планы. Но при этом в переменную их не ставите.

и надо передать их в экран.

val screen = screenBuilders.lookup(Plan.class, this)
                .withScreenClass(PlanBrowse.class)
                .withOpenMode(OpenMode.NEW_TAB)
                .build();
screen.show();
screen.setPlans(plans)

Здравствуйте! Я так понимаю plans после строки screen.show() уже поздно передавать. Экран на этом этапе сформирован. Их надо как-то до build передать, чтобы это сработало. Но вот метода подходящего найти не могу.

Конечно я тут все утрировал. Как я понимаю у вас стандартный browse экран с загрузчиком и контейнером. То логично перед show (то есть перед загрузкой сущностей) передать нужные сущности в экран и делегировать фактическую загрузку чтоб тот возвращал нужные сущности. Но это в случае если в экране нет фильтра.
Переопределением делегата вы фактически можете выключить фильтр. Все зависит от того как вы это реализуете.

Если у вас есть фильтр в экране то я вижу несколько вариантов решения:
В обоих случая в экран передавать статус по которому вы хотите фильтровать.

  1. В загрузчике добавить условие на этот статус и отдельным методом его проставлять пример с условием запроса. (При этом желательно обновить caption у экрана чтоб юзер понимал что все Планы отфильтрованы по статусу)
  2. Обновить фильтр чтоб юзер мог если что сбросить его. В документации вы наврядли найдете что-то на эту тему. Но можно посмотреть на реализацию FilterAddConditionAction, как там добавляется PropertyCondition.

Ярослав, я переделал метод следующим образом, использовал .withContainer()

        PlanStatus planStatus = PlanStatus.fromId(event.getDataItem().getValue("status").toString());
        PropertyCondition condition = PropertyCondition.equal("status", planStatus);
        List<Plan> plans = dataManager.load(Plan.class).condition(condition).list();
        plansDc.setItems(plans);
        screenBuilders.lookup(Plan.class, this)
                .withContainer(plansDc)
                .withScreenClass(PlanBrowse.class)
                .withOpenMode(OpenMode.NEW_TAB)
                .build()
                .show();

Однако у меня все равно в PlanBrowse открывается список всех планов. Хотя дебажу и в .withContainer(plansDc) приходит нужный список планов в конкретном статусе. Как-будто бы игнорируется метод .withContainer(plansDc), но не понимаю почему?

Потому что withContainer предназначен для установки контейнера в который данные будут положены после того как пользователь выберет их из вашего lookup.