Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Mar 28, 2023
2 parents 0d552a7 + e539c80 commit fd4f50b
Show file tree
Hide file tree
Showing 13 changed files with 202 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.evolveum.midpoint.gui.impl.page.admin.user.PageUserHistory;

import com.evolveum.midpoint.web.security.MidPointAuthWebSession;
import com.evolveum.midpoint.web.component.dialog.Popupable;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
Expand Down Expand Up @@ -5763,6 +5764,17 @@ public static ItemPath getPath(GuiObjectColumnType column) {
return column.getPath().getItemPath();
}

public static boolean hasPopupableParent(@NotNull Component component) {
Component parent = component.getParent();
while (parent != null) {
if (parent instanceof Popupable) {
return true;
}
parent = parent.getParent();
}
return false;
}

public static boolean isEnabledExperimentalFeatures() {
GuiProfiledPrincipal principal = AuthUtil.getPrincipalUser();
if (principal == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ public abstract class ContainerableListPanel<C extends Serializable, PO extends

private static final Trace LOGGER = TraceManager.getTrace(ContainerableListPanel.class);

private static final String DOT_CLASS = ContainerableListPanel.class.getName() + ".";
private static final String ID_ITEMS_TABLE = "itemsTable";
private static final String ID_BUTTON_BAR = "buttonBar";
private static final String ID_BUTTON = "button";
Expand Down Expand Up @@ -764,17 +763,15 @@ protected String getFilename() {
}

};
exportDataLink.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;

@Override
public boolean isVisible() {
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_CSV_EXPORT_ACTION_URI);
}
});
exportDataLink.add(new VisibleBehaviour(this::isExportDataLinkVisible));
return exportDataLink;
}

private boolean isExportDataLinkVisible() {
return !WebComponentUtil.hasPopupableParent(ContainerableListPanel.this)
&& WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_CSV_EXPORT_ACTION_URI);
}

private boolean isRawOrNoFetchOption(Collection<SelectorOptions<GetOperationOptions>> options) {
if (options == null) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,11 +307,20 @@ private Collection<ItemPath> createExtensionPaths() {
List<ItemPath> extensionPaths = new ArrayList<>();
extensionPaths.add(ObjectType.F_EXTENSION);
if (AssignmentType.class.equals(type)) {
extensionPaths.add(ItemPath.create(AssignmentType.F_TARGET_REF, new ObjectReferencePathSegment(assignmentTargetType), ObjectType.F_EXTENSION));
if (assignmentTargetType == null || isAssignmentTargetTypeObjectable()) {
extensionPaths.add(ItemPath.create(AssignmentType.F_TARGET_REF,
new ObjectReferencePathSegment(assignmentTargetType), ObjectType.F_EXTENSION));
}
}
return extensionPaths;
}

private boolean isAssignmentTargetTypeObjectable() {
TypeDefinition targetRefTypeDef = PrismContext.get().getSchemaRegistry().findTypeDefinitionByType(assignmentTargetType);
return targetRefTypeDef != null && targetRefTypeDef.getCompileTimeClass() != null
&& ObjectType.class.isAssignableFrom(targetRefTypeDef.getCompileTimeClass());
}

private PrismObjectDefinition findObjectDefinition() {

Task task = modelServiceLocator.createSimpleTask(LOAD_OBJECT_DEFINITION);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
Expand All @@ -39,7 +38,6 @@
import com.evolveum.midpoint.gui.impl.component.search.wrapper.FilterableSearchItemWrapper;
import com.evolveum.midpoint.gui.impl.component.search.wrapper.ObjectCollectionListSearchItemWrapper;
import com.evolveum.midpoint.gui.impl.component.search.wrapper.PropertySearchItemWrapper;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
Expand All @@ -54,7 +52,6 @@
import com.evolveum.midpoint.web.application.CollectionInstance;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.dialog.DeleteConfirmationPanel;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.form.MidpointForm;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
Expand Down Expand Up @@ -186,7 +183,7 @@ public void initSpecificSearchPanel(String panelId, Form form) {

private void initSavedFiltersContainer(MidpointForm form) {
WebMarkupContainer saveSearchContainer = new WebMarkupContainer(ID_SAVE_SEARCH_CONTAINER);
saveSearchContainer.add(new VisibleBehaviour(() -> !isPopupWindow() && isCollectionInstancePage()));
saveSearchContainer.add(new VisibleBehaviour(this::isSaveSearchVisible));
saveSearchContainer.setOutputMarkupId(true);
form.add(saveSearchContainer);
savedSearchListModel = new LoadableDetachableModel<>() {
Expand Down Expand Up @@ -436,15 +433,8 @@ private CollectionInstance getCollectionInstance() {
return page.getClass().getAnnotation(CollectionInstance.class);
}

private boolean isPopupWindow() {
Component parent = SearchPanel.this.getParent();
while (parent != null) {
if (parent instanceof Popupable) {
return true;
}
parent = parent.getParent();
}
return false;
private boolean isSaveSearchVisible() {
return !WebComponentUtil.hasPopupableParent(SearchPanel.this) && isCollectionInstancePage();
}

private void searchBoxTypeUpdated(AjaxRequestTarget target) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,9 +301,7 @@ private List<TemplateTile<SelectableBean<FocusType>>> createTileObjects(Template

SelectableBean<FocusType> object = defaultTile.getValue();
List<AssignmentType> memberships = object.getValue().getAssignment().stream()
.filter(assignment -> assignment.getTargetRef() != null
&& getObjectWrapper().getOid().equals(assignment.getTargetRef().getOid())
&& WebComponentUtil.getRelationDefinition(assignment.getTargetRef().getRelation()).getCategory().contains(AreaCategoryType.GOVERNANCE))
.filter(this::isMember)
.collect(Collectors.toList());
if (memberships.size() == 1) {
defaultTile.getValue().setCustomData(memberships.get(0).getTargetRef().getRelation());
Expand All @@ -326,6 +324,13 @@ && getObjectWrapper().getOid().equals(assignment.getTargetRef().getOid())
return ret;
}

private boolean isMember(AssignmentType assignment) {
return assignment.getTargetRef() != null
&& getObjectWrapper().getOid() != null
&& getObjectWrapper().getOid().equals(assignment.getTargetRef().getOid())
&& WebComponentUtil.getRelationDefinition(assignment.getTargetRef().getRelation()).getCategory().contains(AreaCategoryType.GOVERNANCE);
}

private WebMarkupContainer createBaseTileForAssignMembers() {
WebMarkupContainer newMemberTile = new WebMarkupContainer(ID_NEW_MEMBER_TILE);
newMemberTile.add(new AjaxEventBehavior("click") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,8 @@ protected ISelectableDataProvider<PrismContainerValueWrapper<AssignmentType>> cr
var searchModel = getSearchModel();
var assignments = loadValuesModel();
var itemPath = model.getObject().getPath();
return providerFactory().create(AbstractAssignmentTypePanel.this, searchModel, assignments, objectType, objectOid, itemPath, getObjectCollectionView(), new ContainerValueDataProviderFactory.Customization<AssignmentType>() {
return providerFactory().create(AbstractAssignmentTypePanel.this, searchModel, assignments, objectType, objectOid,
itemPath, getObjectCollectionView(), new ContainerValueDataProviderFactory.Customization<AssignmentType>() {

private static final long serialVersionUID = 1L;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,10 @@ protected List<DashboardWidgetType> load() {
}

dw.setDisplay(display);
} else {
// built-in -> ignored
} else if (metricRef.getBuiltIn() != null) {
DisplayType display = new DisplayType();
display.setLabel(new PolyStringType(LocalizationUtil.createKeyForEnum(metricRef.getBuiltIn())));
dw.setDisplay(display);
}

return dw;
Expand Down Expand Up @@ -432,6 +434,17 @@ private ListView<DashboardWidgetType> createWidgetList(String id, String widgetI
protected void populateItem(ListItem<DashboardWidgetType> item) {
item.add(new MetricWidgetPanel(widgetId, item.getModel()) {

@Override
protected boolean isMoreInfoVisible() {
DashboardWidgetDataType data = getWidgetData();
SimulationMetricReferenceType ref = data.getMetricRef();
if (ref == null || ref.getEventMarkRef() == null) {
return false;
}

return StringUtils.isNotEmpty(data.getStoredData()) || !metricValues.getObject().isEmpty();
}

@Override
protected void onMoreInfoPerformed(AjaxRequestTarget target) {
openMarkMetricPerformed(item.getModelObject());
Expand Down

0 comments on commit fd4f50b

Please sign in to comment.