Skip to content

Commit

Permalink
some fixes for assignments panel
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Oct 2, 2017
1 parent 2435ca1 commit 8144307
Show file tree
Hide file tree
Showing 9 changed files with 94 additions and 112 deletions.
Expand Up @@ -20,6 +20,9 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.web.component.prism.*;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.list.ListItem;
Expand Down Expand Up @@ -103,13 +106,17 @@ public C getObject() {

PageAdminObjectDetails<F> pageBase = (PageAdminObjectDetails<F>)getPageBase();

ItemPath assignmentPath = getAssignmentPath();
ItemPath assignmentPath = getModelObject().getPath();
// ContainerValueWrapperFromObjectWrapperModel<AssignmentType, F> assignmentModel =
// new ContainerValueWrapperFromObjectWrapperModel<AssignmentType, F>(pageBase.getObjectModel(), assignmentPath);

Form form = new Form<>("form");

ContainerValueWrapper<AssignmentType> containerWrapper = getModelObject();
if (containerWrapper == null){}

ContainerValuePanel<AssignmentType> assignmentPanel = new ContainerValuePanel("basic", getModel(), true, form, itemWrapper -> getAssignmentBasicTabVisibity(itemWrapper, assignmentPath), pageBase);
ContainerValuePanel<AssignmentType> assignmentPanel = new ContainerValuePanel("basic", getModel(), true, form,
itemWrapper -> getAssignmentBasicTabVisibity(itemWrapper, assignmentPath), pageBase);
add(assignmentPanel);


Expand Down Expand Up @@ -173,6 +180,4 @@ protected IModel<String> getAdditionalNameLabelStyleClass(){
return Model.of("");
}



}
Expand Up @@ -337,7 +337,7 @@ public void onClick(AjaxRequestTarget target, IModel<AssignmentEditorDto> rowMod
@Override
public void populateItem(Item<ICellPopulator<AssignmentEditorDto>> cellItem, String componentId,
final IModel<AssignmentEditorDto> rowModel) {
IModel<String> activationLabelModel = AssignmentsUtil.createActivationTitleModel(rowModel,"", AssignmentDataTablePanel.this);
IModel<String> activationLabelModel = AssignmentsUtil.createActivationTitleModel(rowModel.getObject().getActivation(),"", AssignmentDataTablePanel.this);
cellItem.add(new Label(componentId, StringUtils.isEmpty(activationLabelModel.getObject()) ?
createStringResource("AssignmentEditorPanel.undefined") : activationLabelModel));
}
Expand Down
Expand Up @@ -267,7 +267,7 @@ public boolean isVisible() {
nameLabel.setOutputMarkupId(true);
name.add(nameLabel);

Label activation = new Label(ID_ACTIVATION, AssignmentsUtil.createActivationTitleModel(getModel(), "-", AssignmentEditorPanel.this));
Label activation = new Label(ID_ACTIVATION, AssignmentsUtil.createActivationTitleModel(getModel().getObject().getActivation(), "-", AssignmentEditorPanel.this));
headerRow.add(activation);

ToggleIconButton expandButton = new ToggleIconButton(ID_EXPAND, GuiStyleConstants.CLASS_ICON_EXPAND,
Expand Down
Expand Up @@ -24,11 +24,14 @@
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
import com.evolveum.midpoint.web.component.prism.ValueStatus;
import com.evolveum.midpoint.web.component.util.Selectable;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.workflow.dto.WorkItemDto;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
Expand Down Expand Up @@ -192,8 +195,12 @@ public int getItemsPerPage() {
@Override
protected Item<ContainerValueWrapper<AssignmentType>> customizeNewRowItem(Item<ContainerValueWrapper<AssignmentType>> item,
IModel<ContainerValueWrapper<AssignmentType>> model) {
item.add(AttributeModifier.append("class",
AssignmentsUtil.createAssignmentStatusClassModel(Model.of(model.getObject().getContainerValue().asContainerable()))));
item.add(AttributeModifier.append("class", new AbstractReadOnlyModel<String>() {
@Override
public String getObject() {
return AssignmentsUtil.createAssignmentStatusClassModel(model.getObject());
}
}));
return item;
}

Expand All @@ -216,6 +223,17 @@ protected List<IColumn<ContainerValueWrapper<AssignmentType>, String>> initBasic
columns.add(new CheckBoxHeaderColumn<ContainerValueWrapper<AssignmentType>>(){
private static final long serialVersionUID = 1L;

@Override
protected boolean isTableRowSelected(ContainerValueWrapper<AssignmentType> object){
return object.isSelected();
}

@Override
protected void onUpdateRow(AjaxRequestTarget target, DataTable table, IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
super.onUpdateRow(target, table, rowModel);
rowModel.getObject().setSelected(!rowModel.getObject().isSelected());
};

@Override
protected IModel<Boolean> getCheckBoxValueModel(IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
return Model.of(rowModel.getObject().isSelected());
Expand Down Expand Up @@ -247,11 +265,10 @@ public String getObject() {
@Override
protected IModel<String> createLinkModel(IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
String name = AssignmentsUtil.getName(rowModel.getObject().getContainerValue().asContainerable(), getParentPage());
if (StringUtils.isBlank(name)) {
return createStringResource("AssignmentPanel.noName");
}
return Model.of(name);

if (StringUtils.isBlank(name)) {
return createStringResource("AssignmentPanel.noName");
}
return Model.of(name);
}

@Override
Expand All @@ -260,56 +277,16 @@ public void onClick(AjaxRequestTarget target, IModel<ContainerValueWrapper<Assig
}
});

columns.add(new LinkColumn<ContainerValueWrapper<AssignmentType>>(createStringResource("AssignmentType.activation")){
columns.add(new AbstractColumn<ContainerValueWrapper<AssignmentType>, String>(createStringResource("AssignmentType.activation")){
private static final long serialVersionUID = 1L;

@Override
protected IModel<String> createLinkModel(IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
// return AssignmentsUtil.createActivationTitleModelExperimental(rowModel, AssignmentPanel.this);
return Model.of("");
}

@Override
public void onClick(AjaxRequestTarget target, IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
// updateAssignmnetActivation(target, rowModel);
}
@Override
public void populateItem(Item<ICellPopulator<ContainerValueWrapper<AssignmentType>>> item, String componentId,
final IModel<ContainerValueWrapper<AssignmentType>> rowModel) {
item.add(new Label(componentId, AssignmentsUtil.createActivationTitleModel(rowModel.getObject().getContainerValue().getValue().getActivation(),
"", AssignmentPanel.this).getObject()));
}
});

// columns.add(new IconColumn<AssignmentDto>(Model.of("")){
// private static final long serialVersionUID = 1L;
//
// @Override
// protected IModel<String> createIconModel(IModel<AssignmentDto> rowModel) {
// if (AssignmentsUtil.getType(rowModel.getObject().getAssignment()) == null){
// return Model.of("");
// }
// return Model.of(AssignmentsUtil.getType(rowModel.getObject().getAssignment()).getIconCssClass());
// }
//
// @Override
// protected IModel<String> createTitleModel(IModel<AssignmentDto> rowModel) {
// return AssignmentsUtil.createAssignmentIconTitleModel(AbstractRoleAssignmentPanel.this, AssignmentsUtil.getType(rowModel.getObject().getAssignment()));
// }
//
// });
//
// columns.add(new IconColumn<AssignmentDto>(Model.of("")){
// private static final long serialVersionUID = 1L;
//
// @Override
// protected IModel<String> createIconModel(IModel<AssignmentDto> rowModel) {
// return Model.of(GuiStyleConstants.CLASS_POLICY_RULES);
// }
//
// @Override
// protected IModel<String> createTitleModel(IModel<AssignmentDto> rowModel) {
// return createStringResource("PolicyRulesPanel.imageTitle");
// }
//
// });



columns.addAll(initColumns());
return columns;
}
Expand Down
Expand Up @@ -8,6 +8,7 @@

import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -38,14 +39,12 @@ public class AssignmentsUtil {

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

public static IModel<String> createActivationTitleModel(IModel<AssignmentEditorDto> model, String defaultTitle, BasePanel basePanel) {
public static IModel<String> createActivationTitleModel(ActivationType activation, String defaultTitle, BasePanel basePanel) {
return new AbstractReadOnlyModel<String>() {
private static final long serialVersionUID = 1L;

@Override
public String getObject() {
AssignmentEditorDto dto = model.getObject();
ActivationType activation = dto.getActivation();
if (activation == null) {
return defaultTitle;
}
Expand Down Expand Up @@ -75,10 +74,10 @@ public static IModel<String> createActivationTitleModelExperimental(IModel<Assig
return createActivationTitleModelExperimental(model.getObject(), s -> s.value(), basePanel);
}

public static IModel<String> createActivationTitleModelExperimental(AssignmentType model, Function<ActivationStatusType, String> transformStatusLambda, BasePanel basePanel) {
public static IModel<String> createActivationTitleModelExperimental(AssignmentType assignmentType, Function<ActivationStatusType, String> transformStatusLambda, BasePanel basePanel) {

// AssignmentDto assignmentDto = model.getObject();
ActivationType activation = model.getActivation();
ActivationType activation = assignmentType.getActivation();
if (activation == null) {
return basePanel.createStringResource("lower.ActivationStatusType.null");
}
Expand Down Expand Up @@ -159,30 +158,8 @@ public void setObject(Date object) {
};
}

// public static IModel<String> createAssignmentStatusClassModel(final IModel<AssignmentEditorDto> model) {
// return new AbstractReadOnlyModel<String>() {
// private static final long serialVersionUID = 1L;
//
// @Override
// public String getObject() {
// AssignmentEditorDto dto = model.getObject();
// return dto.getStatus().name().toLowerCase();
// }
// };
// }

public static IModel<String> createAssignmentStatusClassModel(final IModel<AssignmentType> model) {
return new AbstractReadOnlyModel<String>() {
private static final long serialVersionUID = 1L;

@Override
public String getObject() {
//TODO fix
// AssignmentType dto = model.getObject();
// return dto.getStatus().name().toLowerCase();
return "";
}
};
public static String createAssignmentStatusClassModel(final ContainerValueWrapper<AssignmentType> assignment) {
return assignment.getStatus().name().toLowerCase();
}

public static IModel<String> createAssignmentStatusClassModel(final UserDtoStatus model) {
Expand Down
Expand Up @@ -124,7 +124,7 @@ protected void onUpdateHeader(AjaxRequestTarget target, boolean selected, DataTa
}
}

public static <T> boolean shouldBeHeaderSelected(DataTable table) {
public boolean shouldBeHeaderSelected(DataTable table) {
boolean selectedAll = true;

BaseSortableDataProvider baseProvider = (BaseSortableDataProvider) table.getDataProvider();
Expand All @@ -134,15 +134,20 @@ public static <T> boolean shouldBeHeaderSelected(DataTable table) {
}

for (T object : objects) {
if (object instanceof Selectable) {
Selectable selectable = (Selectable) object;
selectedAll &= selectable.isSelected();
}
selectedAll &= isTableRowSelected(object);
}

return selectedAll;
}

protected boolean isTableRowSelected(T object){
if (object instanceof Selectable) {
Selectable selectable = (Selectable) object;
return selectable.isSelected();
}
return false;
}

/**
* This method is called after checkbox in row is updated
*/
Expand All @@ -158,7 +163,7 @@ protected void onUpdateRow(AjaxRequestTarget target, DataTable table, IModel<T>
target.add(header);
}

public static CheckBoxPanel findCheckBoxColumnHeader(DataTable table) {
public CheckBoxPanel findCheckBoxColumnHeader(DataTable table) {
WebMarkupContainer topToolbars = table.getTopToolbars();
ComponentHierarchyIterator iterator = topToolbars.visitChildren(TableHeadersToolbar.class);
if (!iterator.hasNext()) {
Expand Down
Expand Up @@ -29,6 +29,7 @@

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
Expand Down Expand Up @@ -71,14 +72,30 @@ private void initLayout() {
}

private IModel<List<ContainerValueWrapper<AssignmentType>>> getAssignmentsListModel(ContainerWrapper<AssignmentType> assignmentsContainerWrapper){
List<ContainerValueWrapper<AssignmentType>> assignmentsList = new ArrayList<>();
assignmentsContainerWrapper.getValues().forEach(a -> {
if (!AssignmentsUtil.isPolicyRuleAssignment(a.getContainerValue().getValue()) && !AssignmentsUtil.isConsentAssignment(a.getContainerValue().getValue())
&& AssignmentsUtil.isAssignmentRelevant(a.getContainerValue().getValue())) {
assignmentsList.add(a);
}
});
return new IModel<List<ContainerValueWrapper<AssignmentType>>>() {
private static final long serialVersionUID = 1L;

@Override
public List<ContainerValueWrapper<AssignmentType>> getObject() {
List<ContainerValueWrapper<AssignmentType>> assignmentsList = new ArrayList<>();
assignmentsContainerWrapper.getValues().forEach(a -> {
if (!AssignmentsUtil.isPolicyRuleAssignment(a.getContainerValue().getValue()) && !AssignmentsUtil.isConsentAssignment(a.getContainerValue().getValue())
&& AssignmentsUtil.isAssignmentRelevant(a.getContainerValue().getValue())) {
assignmentsList.add(a);
}
});
// Collections.sort(consentsList);
return Model.ofList(assignmentsList);
return assignmentsList;
}

@Override
public void setObject(List<ContainerValueWrapper<AssignmentType>> object){
assignmentsContainerWrapper.getValues().clear();
assignmentsContainerWrapper.getValues().addAll(object);
}

@Override
public void detach(){};
};
}
}
Expand Up @@ -404,15 +404,19 @@ public <O extends ObjectType> void collectDeleteDelta(ObjectDelta<O> delta, Pri
}
}

public <O extends ObjectType> void collectAddDelta(ObjectDelta<O> delta, ItemPath propertyPath,
PrismContainerDefinition def, PrismContext prismContext) throws SchemaException {
public <O extends ObjectType> void collectAddDelta(ObjectDelta<O> delta, PrismContext prismContext) throws SchemaException {

ContainerDelta containerDelta = new ContainerDelta(propertyPath, def.getName(), def, prismContext);
// ContainerDelta containerDelta = new ContainerDelta(propertyPath, def.getName(), def, prismContext);

for (ContainerValueWrapper<C> itemWrapper : getValues()) {
if (ValueStatus.ADDED.equals(itemWrapper.getStatus())) {
itemWrapper.getContainerValue().applyDefinition(def, false);
ContainerDelta<C> containerDelta = new ContainerDelta(ItemPath.EMPTY_PATH, itemWrapper.getDefinition().getName(),
itemWrapper.getDefinition(), prismContext);
// itemWrapper.getContainerValue().applyDefinition(def, false);
containerDelta.addValueToAdd(itemWrapper.getContainerValue().clone());
if (!containerDelta.isEmpty()){
delta.addModification(containerDelta);
}

}
}
Expand All @@ -430,9 +434,6 @@ public <O extends ObjectType> void collectAddDelta(ObjectDelta<O> delta, ItemPa
// }
// }
// containerDelta.addValuesToAdd(containerValuesToAdd.toArray(new PrismContainerValue[containerValuesToAdd.size()]));
if (!containerDelta.isEmpty()){
delta.addModification(containerDelta);
}
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions gui/admin-gui/src/main/webapp/less/admin-lte/less/table.less
Expand Up @@ -37,13 +37,13 @@
border: 1px solid @box-border-color;
}
}
> tr.delete {
> tr.delete, tr.deleted {
background-color: @brand-danger;
a {
color: #FFFFFF !important;;
}
}
> tr.add {
> tr.add, tr.added {
background-color: @brand-success;
a {
color: #FFFFFF !important;;
Expand Down

0 comments on commit 8144307

Please sign in to comment.