Skip to content

Commit

Permalink
Fixing search panel on the self dashboard page
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed May 16, 2016
1 parent 570baf9 commit 35a9f5c
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 39 deletions.
Expand Up @@ -21,6 +21,10 @@
import java.util.List;

import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.search.*;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -62,9 +66,6 @@
import com.evolveum.midpoint.web.component.data.column.InlineMenuHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.LinkColumn;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.web.component.search.SearchFormPanel;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.configuration.PageDebugView;
import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
Expand Down Expand Up @@ -111,7 +112,7 @@ public PageResources(String searchText) {
this(true, searchText);
}

public PageResources(boolean clearSessionPaging, final String searchText) {
public PageResources(boolean clearSessionPaging, String searchText) {
searchModel = new LoadableModel<Search>(false) {

@Override
Expand All @@ -135,9 +136,27 @@ protected Search load() {
}
};

initLayout();
if (StringUtils.isNotEmpty(searchText)){
initSearch(searchText);
}
initLayout();
}

private void initSearch(String text){
PageStorage storage = getSessionStorage().getPageStorageMap().get(SessionStorage.KEY_RESOURCES);
if (storage == null) {
storage = getSessionStorage().initPageStorage(SessionStorage.KEY_RESOURCES);
}
Search search = SearchFactory.createSearch(UserType.class, getPrismContext(), true);

if (search.getItems() != null && search.getItems().size() > 0){
SearchItem searchItem = search.getItems().get(0);
searchItem.getValues().add(new SearchValue<>(text));
}
storage.setSearch(search);
getSessionStorage().getPageStorageMap().put(SessionStorage.KEY_RESOURCES, storage);
}

private void initLayout() {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);
Expand Down
Expand Up @@ -20,8 +20,18 @@
import java.util.Collection;
import java.util.List;

import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.web.component.search.SearchItem;
import com.evolveum.midpoint.web.component.search.SearchValue;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.SessionStorage;
import org.apache.commons.lang3.StringUtils;
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;
Expand Down Expand Up @@ -95,8 +105,7 @@ public class PageUsers extends PageAdminUsers {
private static final String ID_TABLE = "table";

private UserType singleDelete;
private LoadableModel<Search> searchModel;
private LoadableModel<ExecuteChangeOptionsDto> executeOptionsModel;
private LoadableModel<ExecuteChangeOptionsDto> executeOptionsModel;

public PageUsers() {
this(true, null, null);
Expand All @@ -116,13 +125,31 @@ protected ExecuteChangeOptionsDto load() {
}
};

initLayout();
if (StringUtils.isNotEmpty(text)){
initSearch(text);
}
initLayout();
}

public PageUsers(UsersDto.SearchType type, String text) {
this(true, type, text);
}

private void initSearch(String text){
PageStorage storage = getSessionStorage().getPageStorageMap().get(SessionStorage.KEY_USERS);
if (storage == null) {
storage = getSessionStorage().initPageStorage(SessionStorage.KEY_USERS);
}
Search search = SearchFactory.createSearch(UserType.class, getPrismContext(), true);
if (search.getItems() != null && search.getItems().size() > 0){
SearchItem searchItem = search.getItems().get(0);
searchItem.getValues().add(new SearchValue<>(text));
}
storage.setSearch(search);
getSessionStorage().getPageStorageMap().put(SessionStorage.KEY_USERS, storage);

}

private void initLayout() {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);
Expand Down
Expand Up @@ -28,8 +28,9 @@
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu" wicket:id="searchTypes">
<li><a wicket:id="searchTypeItem" href="#"><span wicket:id="linkLabel"/></a></li>
<ul class="dropdown-menu" role="menu">
<li wicket:id="searchTypes"><a wicket:id="searchTypeItem" href="#">
</a></li>
</ul>
</div>
</div>
Expand Down
Expand Up @@ -2,6 +2,7 @@

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.page.admin.server.PageTasks;
Expand All @@ -10,22 +11,26 @@

import org.apache.poi.ss.formula.functions.T;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
* Created by Kate on 23.09.2015.
* Created by honchar.
*/
public class DashboardSearchPanel extends SimplePanel<T> {

Expand All @@ -41,6 +46,7 @@ public class DashboardSearchPanel extends SimplePanel<T> {
private static final int USER_INDEX = 0;
private static final int RESOURCE_INDEX = 1;
private static final int TASK_INDEX = 2;
private int selectedSearchType = 0;

public DashboardSearchPanel(String id) {
this(id, null);
Expand Down Expand Up @@ -82,56 +88,111 @@ protected void onComponentTag(final ComponentTag tag) {
searchForm.add(searchInput);
final Label buttonLabel = new Label(ID_BUTTON_LABEL, new Model<String>() {
public String getObject() {
return accessibleSearchTypes.get(0);
return accessibleSearchTypes.get(selectedSearchType);
}
});
buttonLabel.setOutputMarkupId(true);

final AjaxSubmitLink searchButton = new AjaxSubmitLink(ID_SEARCH_BUTTON) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
String searchType = buttonLabel.getDefaultModel().getObject().toString();
String searchText = searchInput.getValue();
if (searchText != null && !searchText.trim().equals("")) {
performSearch(searchType, searchText);
}
performSearch(searchType, searchText == null ? "" : searchText);
}
};

searchButton.setOutputMarkupId(true);
searchButton.add(buttonLabel);
searchForm.add(searchButton);

final WebMarkupContainer list = new WebMarkupContainer(ID_SEARCH_TYPES);
final RepeatingView searchTypes = new RepeatingView(ID_SEARCH_TYPE_ITEM);
if (accessibleSearchTypes.size() > 1) {
for (int i = 1; i < accessibleSearchTypes.size(); i++) {
final String searchTypeItem = accessibleSearchTypes.get(i);
final AjaxSubmitLink searchTypeLink = new AjaxSubmitLink(searchTypes.newChildId()) {
// final WebMarkupContainer list = new WebMarkupContainer(ID_SEARCH_TYPES);
// list.setOutputMarkupId(true);


ListView<String> li = new ListView<String>(ID_SEARCH_TYPES, new IModel<List<String>>() {
@Override
public void detach() {
}

@Override
public List<String> getObject() {
return accessibleSearchTypes;
}

@Override
public void setObject(List<String> list) {
}
})
{

@Override
protected void populateItem(final ListItem<String> item) {
final AjaxLink searchTypeLink = new AjaxLink(ID_SEARCH_TYPE_ITEM) {
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
if (searchInput.getValue() != null && !searchInput.getValue().trim().equals("")) {
performSearch(searchTypeItem, searchInput.getValue());
}
public IModel<?> getBody() {
return new Model<String>(item.getModel().getObject());
}
@Override
public void onClick(AjaxRequestTarget target) {
selectedSearchType = accessibleSearchTypes.indexOf(item.getModelObject());
target.add(DashboardSearchPanel.this.get(createComponentPath(ID_SEARCH_FORM, ID_SEARCH_BUTTON)));
}

@Override
protected void onComponentTag(final ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", searchTypeItem);
tag.put("value", item.getModelObject());
}

};
searchTypeLink.add(new Label(ID_LINK_LABEL, new Model<String>() {
public String getObject() {
return searchTypeItem;
}
}));
searchTypes.add(searchTypeLink);
searchTypeLink.setOutputMarkupId(true);
item.add(searchTypeLink);
}
}
list.add(searchTypes);
if (accessibleSearchTypes.size() == 1){
list.setVisible(false);
}
searchForm.add(list);
};
li.setOutputMarkupId(true);
searchForm.add(li);


// final RepeatingView searchTypes = new RepeatingView(ID_SEARCH_TYPE_ITEM);
// searchTypes.setOutputMarkupId(true);
// if (accessibleSearchTypes.size() > 1) {
// for (int i = 0; i < accessibleSearchTypes.size(); i++) {
// if (i == selectedSearchType){
// continue;
// }
// final String searchTypeItem = accessibleSearchTypes.get(i);
// final AjaxSubmitLink searchTypeLink = new AjaxSubmitLink(searchTypes.newChildId()) {
// @Override
// public void onSubmit(AjaxRequestTarget target, Form<?> form) {
// selectedSearchType = accessibleSearchTypes.indexOf(searchTypeItem);
// target.add(DashboardSearchPanel.this.get(createComponentPath(ID_SEARCH_FORM, ID_SEARCH_BUTTON)));
// target.add(DashboardSearchPanel.this.get(createComponentPath(ID_SEARCH_FORM, ID_SEARCH_TYPES)));
//// target.add(DashboardSearchPanel.this.get(createComponentPath(ID_SEARCH_FORM, ID_SEARCH_TYPES, ID_SEARCH_TYPE_ITEM)));
// }
//
// @Override
// protected void onComponentTag(final ComponentTag tag) {
// super.onComponentTag(tag);
// tag.put("value", searchTypeItem);
// }
//
// };
// searchTypeLink.setOutputMarkupId(true);
// Label linkLabel = new Label(ID_LINK_LABEL, new Model<String>() {
// public String getObject() {
// return searchTypeItem;
// }
// });
// linkLabel.setOutputMarkupId(true);
// searchTypeLink.add(linkLabel);
// searchTypes.add(searchTypeLink);
// }
// }
// list.add(searchTypes);
// if (accessibleSearchTypes.size() == 1){
// list.setVisible(false);
// }
// searchForm.add(list);
}
}

Expand Down
Expand Up @@ -166,6 +166,9 @@ public PageStorage initPageStorage(String key){
} else if (KEY_SERVICES.equals(key)) {
pageStorage = new ServicesStorage();
pageStorageMap.put(KEY_SERVICES, pageStorage);
} else if (KEY_RESOURCES.equals(key)) {
pageStorage = new ResourcesStorage();
pageStorageMap.put(KEY_RESOURCES, pageStorage);
}
return pageStorage;
//TODO: fixme
Expand Down

0 comments on commit 35a9f5c

Please sign in to comment.