use of io.jmix.ui.component.Filter in project jmix by jmix-framework.
the class UiDataFilterSupport method getFragmentFilterConfigurationModel.
protected FilterConfiguration getFragmentFilterConfigurationModel(Filter.Configuration configuration, ScreenFragment configurationFragment) {
Filter filter = configuration.getOwner();
FilterConfiguration configurationModel;
if (configurationFragment instanceof UiDataFilterConfigurationModelFragment) {
ScreenData screenData = UiControllerUtils.getScreenData(configurationFragment.getHostController());
InstanceContainer<FilterConfiguration> configurationDc = screenData.getContainer(CONFIGURATION_CONTAINER_ID);
configurationModel = configurationDc.getItem();
if (filter.getId() != null && filter.getFrame() != null && ((UiDataFilterConfigurationModelFragment) configurationFragment).getDefaultForMeFieldVisible()) {
ScreenSettingsFacet settingsFacet = UiControllerUtils.getFacet(filter.getFrame(), ScreenSettingsFacet.class);
if (settingsFacet != null) {
saveFilterSettings(settingsFacet, filter.getId(), configurationModel);
}
}
} else {
configurationModel = loadFilterConfigurationModel(filter, configuration.getId());
}
if (configurationModel == null) {
configurationModel = createFilterConfigurationModel(configuration);
}
return configurationModel;
}
use of io.jmix.ui.component.Filter in project jmix by jmix-framework.
the class FilterEditAction method execute.
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void execute() {
if (filter.getFrame() == null) {
throw new IllegalStateException("Filter component is not attached to the Frame");
}
Filter.Configuration currentConfiguration = filter.getCurrentConfiguration();
boolean isNewConfiguration = Objects.equals(currentConfiguration.getId(), filter.getEmptyConfiguration().getId());
LogicalFilterComponent rootComponent = currentConfiguration.getRootLogicalFilterComponent();
Class modelClass = filterComponents.getModelClass(rootComponent.getClass());
FilterConverter converter = filterComponents.getConverterByComponentClass(rootComponent.getClass(), filter);
Map<String, Object> valuesMap = filterSupport.initConfigurationValuesMap(currentConfiguration);
LogicalFilterCondition model = (LogicalFilterCondition) converter.convertToModel(rootComponent);
Screen editScreen = createEditScreen(modelClass, model);
applyScreenConfigurer(editScreen);
ScreenFragment screenFragment = filterSupport.createFilterConfigurationFragment(editScreen.getWindow().getFrameOwner(), isNewConfiguration, currentConfiguration);
Fragment fragment = screenFragment.getFragment();
fragment.setWidthFull();
editScreen.getWindow().add(fragment, 0);
editScreen.getWindow().setCaption(messages.getMessage(FilterEditAction.class, "configurationEdit.caption"));
if (editScreen instanceof GroupFilterConditionEdit) {
Component groupConditionBox = editScreen.getWindow().getComponent("groupConditionBox");
if (groupConditionBox instanceof Component.HasCaption) {
((Component.HasCaption) groupConditionBox).setCaption(messages.getMessage(FilterEditAction.class, "configurationEdit.rootGroupCondition"));
}
}
editScreen.addAfterCloseListener(afterCloseEvent -> {
if (afterCloseEvent.closedWith(StandardOutcome.COMMIT)) {
LogicalFilterCondition filterCondition = (LogicalFilterCondition) ((FilterConditionEdit) afterCloseEvent.getSource()).getInstanceContainer().getItem();
onEditScreenAfterCommit(screenFragment, filterCondition, converter, isNewConfiguration, currentConfiguration, valuesMap);
} else {
filterSupport.resetConfigurationValuesMap(currentConfiguration, valuesMap);
}
});
editScreen.show();
}
use of io.jmix.ui.component.Filter in project jmix by jmix-framework.
the class FilterAddConditionAction method initDefaultSelectHandler.
protected void initDefaultSelectHandler() {
selectHandler = selectedConditions -> {
if (!selectedConditions.isEmpty()) {
Filter.Configuration currentConfiguration = filter.getCurrentConfiguration();
boolean dataLoadNeeded = false;
for (FilterCondition selectedCondition : selectedConditions) {
FilterConverter converter = filterComponents.getConverterByModelClass(selectedCondition.getClass(), filter);
FilterCondition parent = selectedCondition.getParent();
if (parent instanceof HeaderFilterCondition) {
selectedCondition.setParent(null);
}
FilterComponent filterComponent = converter.convertToComponent(selectedCondition);
currentConfiguration.getRootLogicalFilterComponent().add(filterComponent);
currentConfiguration.setFilterComponentModified(filterComponent, true);
boolean nonNullDefaultValue = setFilterComponentDefaultValue(filterComponent, currentConfiguration);
if (nonNullDefaultValue) {
dataLoadNeeded = true;
}
}
filter.setCurrentConfiguration(currentConfiguration);
if (dataLoadNeeded) {
filter.apply();
}
}
};
}
use of io.jmix.ui.component.Filter in project jmix by jmix-framework.
the class FilterSupport method initFilterConfiguration.
protected Filter.Configuration initFilterConfiguration(String id, String name, Filter.Configuration existedConfiguration, boolean isNewConfiguration, LogicalFilterComponent rootFilterComponent) {
Filter.Configuration resultConfiguration;
if (isNewConfiguration) {
resultConfiguration = new RunTimeConfiguration(id, rootFilterComponent, existedConfiguration.getOwner());
} else if (!existedConfiguration.getId().equals(id)) {
Filter owner = existedConfiguration.getOwner();
resultConfiguration = new RunTimeConfiguration(id, rootFilterComponent, owner);
owner.removeConfiguration(existedConfiguration);
} else {
resultConfiguration = existedConfiguration;
resultConfiguration.setRootLogicalFilterComponent(rootFilterComponent);
}
resultConfiguration.setName(name);
return resultConfiguration;
}
Aggregations