Skip to content

Commit

Permalink
my requests for dashboard page
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Jun 21, 2019
1 parent 628d254 commit a131977
Show file tree
Hide file tree
Showing 9 changed files with 374 additions and 149 deletions.
Expand Up @@ -228,6 +228,11 @@ protected WebMarkupContainer createButtonToolbar(String id) {
return bar != null ? bar : super.createButtonToolbar(id);
}

@Override
protected boolean hideFooterIfSinglePage(){
return ObjectListPanel.this.hideFooterIfSinglePage();
}

};
table.setOutputMarkupId(true);
String storageKey = getStorageKey();
Expand Down Expand Up @@ -695,4 +700,8 @@ public ObjectPaging getCurrentTablePaging(){
}
return storage.getPaging();
}

protected boolean hideFooterIfSinglePage(){
return false;
}
}
Expand Up @@ -32,8 +32,11 @@
import com.evolveum.midpoint.schema.util.ApprovalContextUtil;
import com.evolveum.midpoint.web.component.DateLabelComponent;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.cases.PageCases;
import com.evolveum.midpoint.web.util.TooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand All @@ -50,6 +53,7 @@
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;

import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import java.util.*;

Expand Down Expand Up @@ -621,6 +625,141 @@ public IModel<String> getDataModel(IModel<PrismContainerValueWrapper<CaseWorkIte
return columns;
}

public static List<IColumn<SelectableBean<CaseType>, String>> getDefaultCaseColumns(PageBase pageBase) {

List<IColumn<SelectableBean<CaseType>, String>> columns = new ArrayList<IColumn<SelectableBean<CaseType>, String>>();

IColumn column = new PropertyColumn(createStringResource("pageCases.table.description"), "value.description");
columns.add(column);

column = new AbstractColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.objectRef"), "objectRef"){
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> item, String componentId, IModel<SelectableBean<CaseType>> rowModel) {
item.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
CaseType caseModelObject = rowModel.getObject().getValue();
if (caseModelObject == null || caseModelObject.getObjectRef() == null) {
return "";
}
return WebComponentUtil.getEffectiveName(caseModelObject.getObjectRef(), AbstractRoleType.F_DISPLAY_NAME, pageBase,
pageBase.getClass().getSimpleName() + "." + "loadCaseObjectRefName");
}
}));
}
};
columns.add(column);

column = new AbstractColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.actors")){
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> item, String componentId, IModel<SelectableBean<CaseType>> rowModel) {
item.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
String actors = null;
SelectableBean<CaseType> caseModel = rowModel.getObject();
if (caseModel != null) {
CaseType caseIntance = caseModel.getValue();
if (caseIntance != null) {
List<CaseWorkItemType> caseWorkItemTypes = caseIntance.getWorkItem();
List<String> actorsList = new ArrayList<String>();
for (CaseWorkItemType caseWorkItem : caseWorkItemTypes) {
List<ObjectReferenceType> assignees = caseWorkItem.getAssigneeRef();
for (ObjectReferenceType actor : assignees) {
actorsList.add(WebComponentUtil.getEffectiveName(actor, AbstractRoleType.F_DISPLAY_NAME, pageBase,
pageBase.getClass().getSimpleName() + "." + "loadCaseActorsNames"));
}
}
actors = String.join(", ", actorsList);
}
}
return actors;
}
}));
}
};
columns.add(column);

column = new AbstractColumn<SelectableBean<CaseType>, String>(
createStringResource("pageCases.table.openTimestamp"),
MetadataType.F_CREATE_TIMESTAMP.getLocalPart()) {

private static final long serialVersionUID = 1L;

@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, final IModel<SelectableBean<CaseType>> rowModel) {
CaseType object = rowModel.getObject().getValue();
MetadataType metadata = object != null ? object.getMetadata() : null;
XMLGregorianCalendar createdCal = metadata != null ? metadata.getCreateTimestamp() : null;
final Date created;
if (createdCal != null) {
created = createdCal.toGregorianCalendar().getTime();
// cellItem.add(AttributeModifier.replace("title", WebComponentUtil.getLocalizedDate(created, DateLabelComponent.LONG_MEDIUM_STYLE)));
// cellItem.add(new TooltipBehavior());
} else {
created = null;
}
cellItem.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
return WebComponentUtil.getShortDateTimeFormattedValue(created, pageBase);
}
}));
}
};
columns.add(column);

column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.closeTimestamp"), CaseType.F_CLOSE_TIMESTAMP.getLocalPart(), "value.closeTimestamp") {
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, final IModel<SelectableBean<CaseType>> rowModel) {
CaseType object = rowModel.getObject().getValue();
XMLGregorianCalendar closedCal = object != null ? object.getCloseTimestamp() : null;
final Date closed;
if (closedCal != null) {
closed = closedCal.toGregorianCalendar().getTime();
cellItem.add(AttributeModifier.replace("title", WebComponentUtil.getLocalizedDate(closed, DateLabelComponent.LONG_MEDIUM_STYLE)));
cellItem.add(new TooltipBehavior());
} else {
closed = null;
}
cellItem.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
return WebComponentUtil.getShortDateTimeFormattedValue(closed, pageBase);
}
}));
}
};
columns.add(column);

column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.state"), CaseType.F_STATE.getLocalPart(), "value.state");
columns.add(column);

column = new AbstractExportableColumn<SelectableBean<CaseType>, String>(
createStringResource("pageCases.table.workitems")) {

@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, IModel<SelectableBean<CaseType>> model) {
cellItem.add(new Label(componentId,
model.getObject().getValue() != null && model.getObject().getValue().getWorkItem() != null ?
model.getObject().getValue().getWorkItem().size() : null));
}

@Override
public IModel<String> getDataModel(IModel<SelectableBean<CaseType>> rowModel) {
return Model.of(rowModel.getObject().getValue() != null && rowModel.getObject().getValue().getWorkItem() != null ?
Integer.toString(rowModel.getObject().getValue().getWorkItem().size()) : "");
}


};
columns.add(column);
return columns;
}

public static <C extends Containerable> C unwrapRowModel(IModel<PrismContainerValueWrapper<C>> rowModel){
return rowModel.getObject().getRealValue();
}
Expand Down
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2019 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<wicket:panel xmlns:wicket="http://wicket.apache.org">
<div wicket:id="casesTable" />
</wicket:panel>
@@ -0,0 +1,141 @@
/*
* Copyright (c) 2010-2019 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.evolveum.midpoint.web.page.admin.cases;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* Created by honchar
*/
//TODO very-very temporary panel. to be refactored/unified with PageCases table
public class CasesListPanel extends BasePanel<CaseType> {
private static final long serialVersionUID = 1L;

private static final String ID_CASES_TABLE = "casesTable";

public CasesListPanel(String id){
super(id);
}

@Override
protected void onInitialize(){
super.onInitialize();
initLayout();
}

private void initLayout(){
MainObjectListPanel<CaseType, CompiledObjectCollectionView> table = new MainObjectListPanel<CaseType, CompiledObjectCollectionView>(ID_CASES_TABLE,
CaseType.class, UserProfileStorage.TableId.PAGE_CASE_CHILD_CASES_TAB, Collections.emptyList(), getPageBase()) {

@Override
protected void objectDetailsPerformed(AjaxRequestTarget target, CaseType caseInstance) {
PageParameters pageParameters = new PageParameters();
pageParameters.add(OnePageParameterEncoder.PARAMETER, caseInstance.getOid());
CasesListPanel.this.getPageBase().navigateToNext(PageCase.class, pageParameters);
}

@Override
protected IColumn<SelectableBean<CaseType>, String> createCheckboxColumn() {
if (isDashboard()){
return null;
} else {
return super.createCheckboxColumn();
}
}


@Override
protected List<IColumn<SelectableBean<CaseType>, String>> createColumns() {
return ColumnUtils.getDefaultCaseColumns(CasesListPanel.this.getPageBase());
}

@Override
protected boolean isCreateNewObjectEnabled(){
return false;
}

@Override
protected ObjectQuery addFilterToContentQuery(ObjectQuery query) {
if (query == null) {
query = CasesListPanel.this.getPageBase().getPrismContext().queryFor(CaseType.class)
.build();
}
ObjectFilter casesFilter = getCasesFilter();
if (casesFilter != null){
query.addFilter(casesFilter);
}
return query;
}

@Override
protected WebMarkupContainer createTableButtonToolbar(String id) {
return null;
}

@Override
protected List<InlineMenuItem> createInlineMenu(){
return new ArrayList<>();
}

@Override
protected WebMarkupContainer createHeader(String headerId) {
if (!isDashboard()){
return super.createHeader(headerId);
} else {
WebMarkupContainer headerContainer = new WebMarkupContainer(headerId);
headerContainer.setVisible(false);
return headerContainer;
}
}

@Override
protected boolean hideFooterIfSinglePage(){
return CasesListPanel.this.isDashboard();
}

};
table.setOutputMarkupId(true);
add(table);
}

protected ObjectFilter getCasesFilter(){
return null;
}

protected boolean isDashboard(){
return false;
}

}

0 comments on commit a131977

Please sign in to comment.