Skip to content

Commit

Permalink
user list page hopefully done.
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Oct 4, 2015
1 parent 49b0d6f commit cae8b5b
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 83 deletions.
Expand Up @@ -20,17 +20,17 @@
<wicket:extend>
<div wicket:id="confirmDeletePopup" />

<div class="clearfix">
<form wicket:id="mainForm" class="form-inline">
<div wicket:id="table"/>
</form>

<wicket:fragment wicket:id="tableHeader">
<div class="pull-left" wicket:id="executeOptions"/>

<form class="form-inline pull-right search-form" wicket:id="searchForm">
<div wicket:id="basicSearch"/>
</form>
</div>

<form wicket:id="mainForm" class="clearfix form-horizontal">
<div wicket:id="table"/>

<div class="form-group" wicket:id="executeOptions"/>
</form>
</wicket:fragment>
</wicket:extend>
</body>
</html>
Expand Up @@ -38,10 +38,8 @@
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.BasicSearchPanel;
import com.evolveum.midpoint.web.component.DropDownMultiChoice;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.ObjectDataProvider;
import com.evolveum.midpoint.web.component.data.TablePanel;
import com.evolveum.midpoint.web.component.data.column.*;
import com.evolveum.midpoint.web.component.dialog.ConfirmationDialog;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
Expand All @@ -56,26 +54,28 @@
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PasswordType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
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.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
* @author lazyman
Expand Down Expand Up @@ -108,12 +108,13 @@ public class PageUsers extends PageAdminUsers {
private static final String ID_TABLE = "table";
private static final String ID_SEARCH_FORM = "searchForm";
private static final String ID_BASIC_SEARCH = "basicSearch";
private static final String ID_TABLE_HEADER = "tableHeader";

private UserListItemDto singleDelete;
private LoadableModel<UsersDto> model;
private LoadableModel<ExecuteChangeOptionsDto> executeOptionsModel;

public PageUsers(){
public PageUsers() {
this(true, null, null);
}

Expand All @@ -127,7 +128,7 @@ public UsersDto load() {
if (dto == null) {
dto = new UsersDto();
}
if (type != null && text != null && !text.trim().equals("")){
if (type != null && text != null && !text.trim().equals("")) {
dto.setText(text);
List<UsersDto.SearchType> searchType = new ArrayList<UsersDto.SearchType>();
searchType.add(type);
Expand Down Expand Up @@ -168,20 +169,17 @@ public void yesPerformed(AjaxRequestTarget target) {
}
});

initSearch();
initTable(mainForm);

mainForm.add(new ExecuteChangeOptionsPanel(ID_EXECUTE_OPTIONS, executeOptionsModel, false, false, false));
}

private IModel<String> createDeleteConfirmString() {
return new AbstractReadOnlyModel<String>() {

@Override
public String getObject() {
if(singleDelete == null){
if (singleDelete == null) {
return createStringResource("pageUsers.message.deleteUserConfirm",
WebMiscUtil.getSelectedData(getTable()).size()).getString();
WebMiscUtil.getSelectedData(getTable()).size()).getString();
} else {
return createStringResource("pageUsers.message.deleteUserConfirmSingle",
singleDelete.getName()).getString();
Expand Down Expand Up @@ -337,14 +335,18 @@ public UserListItemDto createDataObjectWrapper(PrismObject<UserType> obj) {

BoxedTablePanel table = new BoxedTablePanel(ID_TABLE, provider, columns,
UserProfileStorage.TableId.PAGE_USERS_PANEL,
(int) getItemsPerPage(UserProfileStorage.TableId.PAGE_USERS_PANEL));
(int) getItemsPerPage(UserProfileStorage.TableId.PAGE_USERS_PANEL)) {

@Override
protected WebMarkupContainer createHeader(String headerId) {
return new SearchFragment(headerId, ID_TABLE_HEADER, PageUsers.this, model, executeOptionsModel);
}
};

// TablePanel table = new TablePanel(ID_TABLE, provider, columns,
// UserProfileStorage.TableId.PAGE_USERS_PANEL, getItemsPerPage(UserProfileStorage.TableId.PAGE_USERS_PANEL));
table.setOutputMarkupId(true);

UsersStorage storage = getSessionStorage().getUsers();
// table.setCurrentPage(storage.getUsersPaging());
table.setCurrentPage(storage.getUsersPaging());

mainForm.add(table);
}
Expand Down Expand Up @@ -425,31 +427,6 @@ private int createAccountCount(PrismObject<UserType> object) {
return accountRef != null ? accountRef.size() : 0;
}

private void initSearch() {
final Form searchForm = new Form(ID_SEARCH_FORM);
add(searchForm);
searchForm.setOutputMarkupId(true);

BasicSearchPanel<UsersDto> basicSearch = new BasicSearchPanel<UsersDto>(ID_BASIC_SEARCH, model) {

@Override
protected IModel<String> createSearchTextModel() {
return new PropertyModel<String>(model, UsersDto.F_TEXT);
}

@Override
protected void searchPerformed(AjaxRequestTarget target) {
PageUsers.this.searchPerformed(target);
}

@Override
protected void clearSearchPerformed(AjaxRequestTarget target) {
PageUsers.this.clearSearchPerformed(target);
}
};
searchForm.add(basicSearch);
}

private void userDetailsPerformed(AjaxRequestTarget target, String oid) {
PageParameters parameters = new PageParameters();
parameters.add(OnePageParameterEncoder.PARAMETER, oid);
Expand Down Expand Up @@ -506,7 +483,7 @@ private ObjectQuery createQuery() {
}
if (dto.hasType(UsersDto.SearchType.GIVEN_NAME)) {
filters.add(SubstringFilter.createSubstring(UserType.F_GIVEN_NAME, UserType.class, getPrismContext(),
PolyStringNormMatchingRule.NAME, normalizedString));
PolyStringNormMatchingRule.NAME, normalizedString));
}

if (filters.size() == 1) {
Expand Down Expand Up @@ -534,9 +511,9 @@ private void deletePerformed(AjaxRequestTarget target, UserListItemDto selectedU
}

private void deleteConfirmedPerformed(AjaxRequestTarget target) {
List<UserListItemDto> users = new ArrayList<UserListItemDto>();
List<UserListItemDto> users = new ArrayList<UserListItemDto>();

if(singleDelete == null){
if (singleDelete == null) {
users = isAnythingSelected(target, null);
} else {
users.add(singleDelete);
Expand Down Expand Up @@ -717,7 +694,7 @@ private void updateActivationPerformed(AjaxRequestTarget target, boolean enablin
target.add(getTable());
}

private void clearSearchPerformed(AjaxRequestTarget target){
private void clearSearchPerformed(AjaxRequestTarget target) {
model.setObject(new UsersDto());

BoxedTablePanel panel = getTable();
Expand All @@ -730,7 +707,47 @@ private void clearSearchPerformed(AjaxRequestTarget target){
storage.setUsersPaging(null);
panel.setCurrentPage(null);

target.add(get(ID_SEARCH_FORM));
target.add(panel);
}

private static class SearchFragment extends Fragment {

public SearchFragment(String id, String markupId, MarkupContainer markupProvider,
IModel<UsersDto> model, IModel<ExecuteChangeOptionsDto> executeOptionsModel) {
super(id, markupId, markupProvider, model);

initLayout(executeOptionsModel);
}

private void initLayout(IModel<ExecuteChangeOptionsDto> executeOptionsModel) {
final Form searchForm = new Form(ID_SEARCH_FORM);
add(searchForm);
searchForm.setOutputMarkupId(true);

final IModel<UsersDto> model = (IModel) getDefaultModel();

BasicSearchPanel<UsersDto> basicSearch = new BasicSearchPanel<UsersDto>(ID_BASIC_SEARCH, model) {

@Override
protected IModel<String> createSearchTextModel() {
return new PropertyModel<String>(model, UsersDto.F_TEXT);
}

@Override
protected void searchPerformed(AjaxRequestTarget target) {
PageUsers page = (PageUsers) getPage();
page.searchPerformed(target);
}

@Override
protected void clearSearchPerformed(AjaxRequestTarget target) {
PageUsers page = (PageUsers) getPage();
page.clearSearchPerformed(target);
}
};
searchForm.add(basicSearch);

add(new ExecuteChangeOptionsPanel(ID_EXECUTE_OPTIONS, executeOptionsModel, false, false, false));
}
}
}
Expand Up @@ -17,31 +17,38 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<label class="col-lg-2 control-label"><wicket:message key="ExecuteChangeOptionsPanel.options"/></label>

<div class="col-lg-8">
<div>
<label class="col-lg-2 checkbox-inline">
<input type="checkbox" wicket:id="force">
<wicket:message key="ExecuteChangeOptionsPanel.label.force"/>
</label>
<label class="col-lg-3 checkbox-inline" wicket:id="reconcileLabel">
<input type="checkbox" wicket:id="reconcile">
<wicket:message key="ExecuteChangeOptionsPanel.label.reconcile"/>
</label>
<label class="col-lg-3 checkbox-inline" wicket:id="reconcileAffectedLabel">
<input type="checkbox" wicket:id="reconcileAffected">
<wicket:message key="ExecuteChangeOptionsPanel.label.reconcileAffected"/>
</label>
<label class="col-lg-3 checkbox-inline">
<input type="checkbox" wicket:id="executeAfterAllApprovals">
<wicket:message key="ExecuteChangeOptionsPanel.label.executeAfterAllApprovals"/>
</label>
<label class="col-lg-3 checkbox-inline" wicket:id="keepDisplayingResultsLabel">
<input type="checkbox" wicket:id="keepDisplayingResults">
<wicket:message key="ExecuteChangeOptionsPanel.label.keepDisplayingResults"/>
</label>
</div>
<div class="form-group" style="margin-right: 10px;">
<label class="control-label"><wicket:message key="ExecuteChangeOptionsPanel.options"/></label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" wicket:id="force">
<wicket:message key="ExecuteChangeOptionsPanel.label.force"/>
</label>
</div>
<div class="checkbox">
<label wicket:id="reconcileLabel">
<input type="checkbox" wicket:id="reconcile">
<wicket:message key="ExecuteChangeOptionsPanel.label.reconcile"/>
</label>
</div>
<div class="checkbox">
<label wicket:id="reconcileAffectedLabel">
<input type="checkbox" wicket:id="reconcileAffected">
<wicket:message key="ExecuteChangeOptionsPanel.label.reconcileAffected"/>
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" wicket:id="executeAfterAllApprovals">
<wicket:message key="ExecuteChangeOptionsPanel.label.executeAfterAllApprovals"/>
</label>
</div>
<div class="checkbox">
<label wicket:id="keepDisplayingResultsLabel">
<input type="checkbox" wicket:id="keepDisplayingResults">
<wicket:message key="ExecuteChangeOptionsPanel.label.keepDisplayingResults"/>
</label>
</div>
</wicket:panel>
</html>
8 changes: 6 additions & 2 deletions gui/admin-gui/src/main/webapp/js/midpoint-theme.js
Expand Up @@ -142,8 +142,12 @@ function initPageSizePopover(buttonId, popoverId, positionId) {
var positionElement = $('#' + positionId);
var position = positionElement.position();

var left = position.left - popover.outerWidth();
var top = position.top + button.outerHeight() / 2 - popover.outerHeight() / 2;
var top = position.top + parseInt(positionElement.css('marginTop'));
var left = position.left + parseInt(positionElement.css('marginLeft'));
var realPosition = {top: top, left: left};

var left = realPosition.left - popover.outerWidth();
var top = realPosition.top + button.outerHeight() / 2 - popover.outerHeight() / 2;

popover.css("top", top);
popover.css("left", left);
Expand Down

0 comments on commit cae8b5b

Please sign in to comment.