Skip to content

Commit

Permalink
basic search item display fix
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Dec 10, 2021
1 parent 2dbce0e commit 82ae05f
Show file tree
Hide file tree
Showing 15 changed files with 88 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@
*/
package com.evolveum.midpoint.web.component.search;

import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import java.io.Serializable;

public abstract class AbstractSearchItemDefinition implements Serializable, Comparable<AbstractSearchItemDefinition> {

protected boolean displayed;
protected boolean searchItemDisplayed;
protected boolean visibleByDefault = true;
private PolyStringType displayName;
private String description;
Expand Down Expand Up @@ -50,12 +49,12 @@ public void setDescription(String description) {
this.description = description;
}

public boolean isDisplayed() {
return displayed;
public boolean isSearchItemDisplayed() {
return searchItemDisplayed;
}

public void setDisplayed(boolean displayed) {
this.displayed = displayed;
public void setSearchItemDisplayed(boolean searchItemDisplayed) {
this.searchItemDisplayed = searchItemDisplayed;
}

public boolean isFixed() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.path.ItemPathCollectionsUtil;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
Expand Down Expand Up @@ -338,7 +337,7 @@ private void searchBoxTypeUpdated(AjaxRequestTarget target, SearchBoxModeType se
}

private void addOneItemPerformed(AbstractSearchItemDefinition searchItemDef, AjaxRequestTarget target) {
searchItemDef.setDisplayed(true);
searchItemDef.setSearchItemDisplayed(true);
// Search search = getModelObject();
// SearchItem item = search.addItem(property);
// item.setEditWhenVisible(true);
Expand All @@ -354,7 +353,7 @@ private void addItemPerformed(AjaxRequestTarget target) {
if (!searchItem.isSelected()) {
continue;
}
searchItem.setDisplayed(true);
searchItem.setSearchItemDisplayed(true);
// search.addItem(searchItem);
searchItem.setSelected(false);
}
Expand Down Expand Up @@ -428,14 +427,13 @@ public BasicSearchFragment(String id, String markupId, AbstractSearchPanel marku
initBasicSearchLayout();
}

private <S extends SearchItem, T extends Serializable> void initBasicSearchLayout() {
ListView<S> items = new ListView<S>(ID_ITEMS,
new PropertyModel<>(getModel(), Search.F_ITEMS)) {
private <T extends Serializable> void initBasicSearchLayout() {
ListView<SearchItem> items = new ListView<>(ID_ITEMS, getModelObject().getItemsModel()) {

private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<S> item) {
protected void populateItem(ListItem<SearchItem> item) {
// AbstractSearchItemPanel searchItem;
// if (item.getModelObject() instanceof FilterSearchItem) {
// searchItem = new SearchFilterPanel(ID_ITEM, (IModel<FilterSearchItem>) item.getModel()) {
Expand Down Expand Up @@ -466,7 +464,10 @@ protected void populateItem(ListItem<S> item) {
// }
// };
// }
item.add(createSearchItemPanel(ID_ITEM, item.getModel()));
if (item.getModelObject().getSearchItemDefinition().isSearchItemDisplayed()) {
SearchItemPanel searchItemPanel = createSearchItemPanel(ID_ITEM, item.getModel());
item.add(searchItemPanel);
}
}
};
// items.add(createVisibleBehaviour(SearchBoxModeType.BASIC));//todo
Expand Down Expand Up @@ -558,7 +559,7 @@ public String getDataPlacement() {
help.add(new VisibleBehaviour(() -> StringUtils.isNotEmpty(helpModel.getObject())));
item.add(help);

item.add(new VisibleBehaviour(() -> !item.getModelObject().isDisplayed()));
item.add(new VisibleBehaviour(() -> !item.getModelObject().isSearchItemDisplayed()));
// item.add(new VisibleEnableBehaviour() {
//
// private static final long serialVersionUID = 1L;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ public AttributeSearchItem(Search search, @NotNull AttributeSearchItemDefinition
this.value = defaultValue;
}

@Override
public Class<SearchPropertyPanel> getSearchItemPanelClass() {
return SearchPropertyPanel.class;
}

public DisplayableValue<T> getValue() {
return value;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
Expand All @@ -44,7 +43,7 @@ public ObjectClassSearchItem(Search search, AttributeSearchItemDefinition defini

public ObjectClassSearchItem(Search search, AttributeSearchItemDefinition definition) {
super(search, definition);
this.itemsModel = Model.ofList(search.getItems());
this.itemsModel = search.getItemsModel();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.model.LoadableModel;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.page.PageBase;
Expand Down Expand Up @@ -80,7 +84,7 @@ public enum PanelType {
private final List<AbstractSearchItemDefinition> allDefinitions;

// private final List<AbstractSearchItemDefinition> availableDefinitions = new ArrayList<>();
private final List<SearchItem> items = new ArrayList<>();
private LoadableModel<List<SearchItem>> itemsModel;
private List<SearchItem> specialItems = new ArrayList<>();
private SearchItem compositedSpecialItems;

Expand Down Expand Up @@ -126,12 +130,29 @@ public Search(ContainerTypeSearchItem<C> typeSearchItem, List<AbstractSearchItem
}
}
}

initItemsModel();
// availableDefinitions.addAll(allDefinitions);
}

private void initItemsModel() {
itemsModel = new LoadableModel<List<SearchItem>>(true) {
@Override
protected List<SearchItem> load() {
List<SearchItem> items = new ArrayList<>();
List<AbstractSearchItemDefinition> defs = allDefinitions.stream().filter(def -> def.isSearchItemDisplayed())
.collect(Collectors.toList());
defs.forEach(def -> items.add(def.createSearchItem()));
return items;
}
};
}

public IModel<List<SearchItem>> getItemsModel() {
return itemsModel;
}

public List<SearchItem> getItems() {
return Collections.unmodifiableList(items);
return itemsModel.getObject();
}

public List<SearchItem> getSpecialItems() {
Expand Down Expand Up @@ -168,7 +189,7 @@ public void setCollectionItemVisible(boolean collectionItemVisible) {

public List<AttributeSearchItem> getPropertyItems() {
List<AttributeSearchItem> propertyItems = new ArrayList<>();
items.forEach(item -> {
itemsModel.getObject().forEach(item -> {
if (item instanceof AttributeSearchItem) {
propertyItems.add((AttributeSearchItem) item);
}
Expand All @@ -178,7 +199,7 @@ public List<AttributeSearchItem> getPropertyItems() {

public List<FilterSearchItem> getFilterItems() {
List<FilterSearchItem> filterItems = new ArrayList<>();
items.forEach(item -> {
itemsModel.getObject().forEach(item -> {
if (item instanceof FilterSearchItem) {
filterItems.add((FilterSearchItem) item);
}
Expand Down Expand Up @@ -310,7 +331,7 @@ public List<AbstractSearchItemDefinition> getAllDefinitions() {
// }

public void delete(AbstractSearchItemDefinition item) {
item.setDisplayed(false);
item.setSearchItemDisplayed(false);
// if (items.remove(item)) {
// availableDefinitions.add(item.getSearchItemDefinition());
// }
Expand Down Expand Up @@ -446,7 +467,7 @@ private ObjectQuery mergeQueries(ObjectQuery origQuery, ObjectQuery query) {
}

private ObjectQuery createObjectQuerySimple(VariablesMap defaultVariables, PageBase pageBase) {
List<SearchItem> searchItems = getItems();
List<SearchItem> searchItems = itemsModel.getObject();
if (searchItems.isEmpty()) {
return null;
}
Expand Down Expand Up @@ -847,7 +868,7 @@ public String debugDump(int indent) {
DebugUtil.debugDumpWithLabelLn(sb, "type", getTypeClass(), indent + 1);
DebugUtil.debugDumpWithLabelLn(sb, "allDefinitions", allDefinitions, indent + 1);
// DebugUtil.debugDumpWithLabelLn(sb, "availableDefinitions", availableDefinitions, indent + 1);
DebugUtil.debugDumpWithLabel(sb, "items", items, indent + 1);
DebugUtil.debugDumpWithLabel(sb, "items", itemsModel.getObject(), indent + 1);
return sb.toString();
}

Expand All @@ -856,7 +877,7 @@ public String toString() {
return "Search{" +
"objectCollectionSearchItem=" + objectCollectionSearchItem +
"typeSearchItem=" + typeSearchItem +
"items=" + items +
"items=" + itemsModel.getObject() +
'}';
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.path.ItemPathCollectionsUtil;
import com.evolveum.midpoint.prism.util.ItemPathTypeUtil;

import com.evolveum.midpoint.util.QNameUtil;

Expand All @@ -25,7 +24,6 @@
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
Expand All @@ -37,7 +35,6 @@
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

Expand Down Expand Up @@ -405,7 +402,7 @@ public static List<AbstractSearchItemDefinition> getConfiguredSearchItemDefiniti
def.setDisplayName(searchItem.getDisplayName());
def.setDescription(searchItem.getDescription());
def.setVisibleByDefault(!Boolean.FALSE.equals(searchItem.isVisibleByDefault()));
def.setDisplayed(def.isVisibleByDefault());
def.setSearchItemDisplayed(def.isVisibleByDefault());
configuredSearchItemList.add(def);
}
});
Expand Down Expand Up @@ -443,6 +440,7 @@ public static <C extends Containerable> List<AbstractSearchItemDefinition> getAv
AttributeSearchItemDefinition searchItemDef = new AttributeSearchItemDefinition(path, def, getAllowedValues(path));
if (ItemPathCollectionsUtil.containsEquivalent(fixedSearchItems, path)) {
searchItemDef.setFixed(true);
searchItemDef.setSearchItemDisplayed(true);
}
definitions.add(searchItemDef);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,7 @@ public SearchItem(Search search, D searchItemDefinition) {

public abstract ObjectFilter createFilter(PageBase pageBase, VariablesMap variables);

public <S extends SearchItem, ASIP extends SearchItemPanel<S>> Class<ASIP> getSearchItemPanelClass(){
return null;
}
public abstract <S extends SearchItem, ASIP extends SearchItemPanel<S>> Class<ASIP> getSearchItemPanelClass();

public D getSearchItemDefinition() {
return searchItemDefinition;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;

Expand All @@ -26,12 +25,9 @@
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
Expand Down Expand Up @@ -118,7 +114,7 @@ protected void initSearchItemField(WebMarkupContainer searchItemContainer){
}

protected boolean canRemoveSearchItem() {
return getModelObject().canRemoveSearchItem() && getModelObject().getSearch().isConfigurable();
return getModelObject().canRemoveSearchItem(); // && getModelObject().getSearch().isConfigurable(); //todo
}

protected IModel<String> createLabelModel() {
Expand All @@ -143,7 +139,7 @@ protected void searchPerformed(AjaxRequestTarget target) {

private void deletePerformed(AjaxRequestTarget target) {
SearchItem item = getModelObject();
item.getSearchItemDefinition().setDisplayed(false);
item.getSearchItemDefinition().setSearchItemDisplayed(false);
// Search search = item.getSearch();
// search.delete(item);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,10 @@
package com.evolveum.midpoint.web.component.search;

import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
Expand All @@ -24,8 +19,6 @@
import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
import com.evolveum.midpoint.gui.impl.component.icon.LayeredIconCssStyle;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemPathCollectionsUtil;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.web.component.AjaxCompositedIconSubmitButton;
import com.evolveum.midpoint.web.component.input.TextPanel;
import com.evolveum.midpoint.web.page.admin.roles.AbstractRoleCompositedSearchItem;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.component.search.SearchItem;

import com.evolveum.midpoint.web.component.search.SearchSpecialItemPanel;
import com.evolveum.midpoint.web.session.MemberPanelStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

Expand All @@ -50,6 +51,10 @@ public AbstractRoleCompositedSearchItem(Search search, MemberPanelStorage member
create();
}

@Override
public Class<SearchSpecialItemPanel> getSearchItemPanelClass() {
return SearchSpecialItemPanel.class;
}

public void create() {
if (memberPanelStorage.isRelationVisible()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.component.search.SearchSpecialItemPanel;
import com.evolveum.midpoint.web.component.search.SpecialSearchItem;
import com.evolveum.midpoint.web.component.search.*;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.session.MemberPanelStorage;
Expand Down Expand Up @@ -48,6 +46,11 @@ private IndirectSearchItemConfigurationType getIndirectConfig() {
return memberStorage.getIndirectSearchItem();
}

@Override
public Class<SearchSpecialItemPanel> getSearchItemPanelClass() {
return SearchSpecialItemPanel.class;
}

@Override
public SearchSpecialItemPanel createSearchItemPanel(String id) {
SearchSpecialItemPanel panel = new SearchSpecialItemPanel(id, new PropertyModel(memberStorage, MemberPanelStorage.F_INDIRECT_ITEM + "." + IndirectSearchItemConfigurationType.F_INDIRECT.getLocalPart())) {
Expand Down

0 comments on commit 82ae05f

Please sign in to comment.