Skip to content

Commit

Permalink
MID-7976 role catalog details, icons in tiles fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Aug 8, 2022
1 parent fa48dfd commit 7b82fd5
Show file tree
Hide file tree
Showing 9 changed files with 111 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.schema.internals.InternalsConfig;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CapabilityCollectionType;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.LocaleUtils;
import org.apache.commons.lang3.StringEscapeUtils;
Expand Down Expand Up @@ -68,6 +65,8 @@
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.ByteArrayResource;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.util.string.StringValue;
import org.apache.wicket.util.visit.IVisit;
import org.apache.wicket.util.visit.IVisitor;
Expand Down Expand Up @@ -146,6 +145,7 @@
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.schema.internals.InternalsConfig;
import com.evolveum.midpoint.schema.processor.*;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
Expand Down Expand Up @@ -190,7 +190,6 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.SelectableBeanImpl;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.resources.PageResourceWizard;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.page.admin.roles.PageRoles;
import com.evolveum.midpoint.web.page.admin.server.PageTasks;
Expand All @@ -208,6 +207,7 @@
import com.evolveum.midpoint.wf.api.ChangesByState;
import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CapabilityCollectionType;
import com.evolveum.prism.xml.ns._public.query_3.QueryType;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType;
Expand Down Expand Up @@ -5587,4 +5587,26 @@ public static CompiledGuiProfile getCompiledGuiProfile() {
}
}
}

public static <T extends FocusType> IResource createJpegPhotoResource(PrismObject<T> object) {
if (object == null) {
return null;
}

return createJpegPhotoResource(object.asObjectable());
}

public static IResource createJpegPhotoResource(FocusType focus) {
if (focus == null) {
return null;
}

byte[] photo = focus.getJpegPhoto();

if (photo == null) {
return null;
}

return new ByteArrayResource("image/jpeg", photo);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
*/
public class CatalogTile<T extends Serializable> extends Tile<T> {

private String logo;

private String description;

private String info;

public CatalogTile() {
this(null, null);
}
Expand All @@ -26,19 +26,19 @@ public CatalogTile(String icon, String title) {
super(icon, title);
}

public String getLogo() {
return logo;
}

public void setLogo(String logo) {
this.logo = logo;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getInfo() {
return info;
}

public void setInfo(String info) {
this.info = info;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="logo d-flex justify-content-center mt-3">
<i class="align-self-center text-lightblue" wicket:id="logo"></i>
</div>
<div class="logo mt-3" wicket:id="logo"/>
<span class="mt-4">
<i wicket:id="icon"></i>
<span class="font-weight-bold mx-1" wicket:id="title"/>
<i class="fas fa-info-circle fa-xs text-primary"></i>
<i class="fas fa-info-circle fa-xs text-primary" wicket:id="info"></i>
</span>
<span class="mt-2 text-center text-secondary text-wrap text-truncate flex-grow-1 d-inline-block" wicket:id="description"/>
<a class="btn btn-lightblue mt-3" wicket:id="add">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

package com.evolveum.midpoint.gui.impl.component.tile;

import java.io.Serializable;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -15,10 +17,13 @@
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.IResource;

import com.evolveum.midpoint.gui.api.component.BasePanel;

import java.io.Serializable;
import com.evolveum.midpoint.web.component.data.column.RoundedImagePanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.util.TooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -33,6 +38,7 @@ public class CatalogTilePanel<T extends Serializable> extends BasePanel<CatalogT
private static final String ID_DETAILS = "details";
private static final String ID_ICON = "icon";
private static final String ID_TITLE = "title";
private static final String ID_INFO = "info";

public CatalogTilePanel(String id, IModel<CatalogTile<T>> model) {
super(id, model);
Expand All @@ -45,9 +51,8 @@ private void initLayout() {
add(AttributeAppender.append("class", () -> getModelObject().isSelected() ? "active" : null));
setOutputMarkupId(true);

WebMarkupContainer logo = new WebMarkupContainer(ID_LOGO);
logo.add(AttributeAppender.append("class", () -> getModelObject().getLogo()));
add(logo);
RoundedImagePanel logo1 = new RoundedImagePanel(ID_LOGO, () -> createDisplayType(getModel()), createPreferredImage(getModel()));
add(logo1);

Label description = new Label(ID_DESCRIPTION, () -> getModelObject().getDescription());
add(description);
Expand All @@ -61,6 +66,12 @@ private void initLayout() {
return title != null ? getString(title, null, title) : null;
}));

Label info = new Label(ID_INFO);
info.add(AttributeAppender.append("title", () -> getModelObject().getInfo()));
info.add(new TooltipBehavior());
info.add(new VisibleBehaviour(() -> getModelObject().getInfo() != null));
add(info);

add(new AjaxEventBehavior("click") {

@Override
Expand Down Expand Up @@ -108,4 +119,12 @@ protected void onClick(AjaxRequestTarget target) {
getModelObject().toggle();
target.add(this);
}

protected DisplayType createDisplayType(IModel<CatalogTile<T>> model) {
return null;
}

protected IModel<IResource> createPreferredImage(IModel<CatalogTile<T>> model) {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.ByteArrayResource;
import org.apache.wicket.request.resource.IResource;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.wizard.WizardModel;
Expand All @@ -50,7 +49,6 @@
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.DateInput;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.column.RoundedIconColumn;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
Expand All @@ -59,7 +57,6 @@
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.ListDataProvider;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.util.DateValidator;
import com.evolveum.midpoint.web.util.TooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

Expand Down Expand Up @@ -373,10 +370,10 @@ private List<IColumn<ShoppingCartItem, String>> createColumns() {
columns.add(new RoundedIconColumn<>(null) {

@Override
protected IModel<AbstractResource> createPreferredImage(IModel<ShoppingCartItem> model) {
protected IModel<IResource> createPreferredImage(IModel<ShoppingCartItem> model) {
return new LoadableModel<>(false) {
@Override
protected AbstractResource load() {
protected IResource load() {
ObjectReferenceType ref = model.getObject().getAssignment().getTargetRef();

Collection<SelectorOptions<GetOperationOptions>> options = getPageBase().getOperationOptionsBuilder()
Expand All @@ -387,14 +384,7 @@ protected AbstractResource load() {
OperationResult result = task.getResult();

PrismObject obj = WebModelServiceUtils.loadObject(ObjectTypes.getObjectTypeClass(ref.getType()), ref.getOid(), options, getPageBase(), task, result);
FocusType focus = (FocusType) obj.asObjectable();
byte[] photo = focus.getJpegPhoto();

if (photo == null) {
return null;
}

return new ByteArrayResource("image/jpeg", photo);
return WebComponentUtil.createJpegPhotoResource(obj);
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@
import java.util.stream.Collectors;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.web.component.data.column.RoundedIconColumn;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -29,9 +25,10 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.ByteArrayResource;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.util.string.Strings;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.Toggle;
import com.evolveum.midpoint.gui.api.component.TogglePanel;
Expand All @@ -52,6 +49,8 @@
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.OrgFilter;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.SecurityUtil;
Expand All @@ -61,7 +60,7 @@
import com.evolveum.midpoint.web.component.data.ObjectDataProvider;
import com.evolveum.midpoint.web.component.data.column.AjaxLinkPanel;
import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.IconColumn;
import com.evolveum.midpoint.web.component.data.column.RoundedIconColumn;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
Expand Down Expand Up @@ -280,9 +279,7 @@ public void onClick(AjaxRequestTarget target) {

@Override
protected CatalogTile createTileObject(SelectableBean<ObjectType> object) {
// todo improve
CatalogTile t = new CatalogTile("fas fa-building", WebComponentUtil.getName(object.getValue()));
t.setLogo("fas fa-utensils fa-2x");
CatalogTile t = new CatalogTile(GuiStyleConstants.CLASS_OBJECT_ROLE_ICON, WebComponentUtil.getName(object.getValue()));
t.setDescription(object.getValue().getDescription());
t.setValue(object);

Expand Down Expand Up @@ -327,6 +324,18 @@ protected Component createAddButton(String id) {
}));
return details;
}

@Override
protected IModel<IResource> createPreferredImage(IModel<CatalogTile<SelectableBean<ObjectType>>> model) {
return createImage(() -> model.getObject().getValue().getValue());
}

@Override
protected DisplayType createDisplayType(IModel<CatalogTile<SelectableBean<ObjectType>>> model) {
return new DisplayType()
.icon(new IconType()
.cssClass(GuiStyleConstants.CLASS_OBJECT_ROLE_ICON));
}
};
}

Expand Down Expand Up @@ -569,33 +578,26 @@ protected List<ListGroupMenuItem<RoleCatalogQueryItem>> load() {
return list;
}

private IModel<IResource> createImage(IModel<ObjectType> model) {
return new LoadableModel<>(false) {
@Override
protected IResource load() {
ObjectType object = model.getObject();

return WebComponentUtil.createJpegPhotoResource((FocusType) object);
}
};
}

private List<IColumn<SelectableBean<ObjectType>, String>> createColumns() {
List<IColumn<SelectableBean<ObjectType>, String>> columns = new ArrayList<>();

columns.add(new CheckBoxHeaderColumn());
columns.add(new RoundedIconColumn<>(null) {

@Override
protected IModel<AbstractResource> createPreferredImage(IModel<SelectableBean<ObjectType>> model) {
return new LoadableModel<>(false) {
@Override
protected AbstractResource load() {
ObjectType object = model.getObject().getValue();
if (object == null) {
return null;
}

PrismObject obj = object.asPrismObject();
FocusType focus = (FocusType) obj.asObjectable();
byte[] photo = focus.getJpegPhoto();

if (photo == null) {
return null;
}

return new ByteArrayResource("image/jpeg", photo);
}
};
protected IModel<IResource> createPreferredImage(IModel<SelectableBean<ObjectType>> model) {
return RoleCatalogPanel.this.createImage(() -> model.getObject().getValue());
}
});
columns.add(new PropertyColumn(createStringResource("ObjectType.name"), "value.name"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType;

import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.IResource;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -39,7 +40,7 @@ protected DisplayType createDisplayType(IModel<T> model) {
return null;
}

protected IModel<AbstractResource> createPreferredImage(IModel<T> model) {
protected IModel<IResource> createPreferredImage(IModel<T> model) {
return null;
}
}

0 comments on commit 7b82fd5

Please sign in to comment.