diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index fa608b64dc0..0e4183d1d95 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -301,6 +301,9 @@ public static String getReferencedObjectDisplayNamesAndNames(List + + + +
+ \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseEventsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseEventsTabPanel.java new file mode 100644 index 00000000000..b713b4f8b08 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseEventsTabPanel.java @@ -0,0 +1,162 @@ +/* + * 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.model.LoadableModel; +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.gui.impl.component.MultivalueContainerListPanel; +import com.evolveum.midpoint.gui.impl.session.ObjectTabStorage; +import com.evolveum.midpoint.prism.PrismContainerDefinition; +import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.web.component.data.column.LinkColumn; +import com.evolveum.midpoint.web.component.form.Form; +import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectTabPanel; +import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper; +import com.evolveum.midpoint.web.component.prism.ObjectWrapper; +import com.evolveum.midpoint.web.component.search.SearchItemDefinition; +import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel; +import com.evolveum.midpoint.web.session.UserProfileStorage; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseEventType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType; +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.model.IModel; +import org.apache.wicket.model.Model; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by honchar + */ +public class CaseEventsTabPanel extends AbstractObjectTabPanel { + private static final long serialVersionUID = 1L; + + private static final String ID_EVENTS_PANEL = "caseEventsPanel"; + + public CaseEventsTabPanel(String id, Form> mainForm, LoadableModel> objectWrapperModel, PageBase pageBase) { + super(id, mainForm, objectWrapperModel, pageBase); + } + + @Override + protected void onInitialize(){ + super.onInitialize(); + initLayout(); + } + + private void initLayout() { + setOutputMarkupId(true); + + ContainerWrapperFromObjectWrapperModel eventsModel = new ContainerWrapperFromObjectWrapperModel<>(getObjectWrapperModel(), CaseType.F_EVENT); + MultivalueContainerListPanel multivalueContainerListPanel = + new MultivalueContainerListPanel(ID_EVENTS_PANEL, + eventsModel, UserProfileStorage.TableId.PAGE_CASE_EVENTS_TAB, + getEventsTabStorage()) { + + private static final long serialVersionUID = 1L; + + @Override + protected void initPaging() { +// getWorkitemsTabStorage().setPaging(getPrismContext().queryFactory() +// .createPaging(0, ((int) CaseWorkItemsTablePanel.this.getPageBase().getItemsPerPage(getTableId())))); + } + + @Override + protected ObjectQuery createQuery() { + return null; + } + + @Override + protected boolean enableActionNewObject() { + return false; + } + + @Override + protected boolean isSearchEnabled(){ + return false; + } + + @Override + protected List, String>> createColumns() { + return createCaseEventsColumns(); + } + + @Override + protected void itemPerformedForDefaultAction(AjaxRequestTarget target, IModel> rowModel, + List> listItems) { + + } + + @Override + protected WebMarkupContainer getSearchPanel(String contentAreaId) { + return new WebMarkupContainer(contentAreaId); + } + + @Override + protected List> postSearch( + List> workItems) { + return workItems; + } + + @Override + protected List initSearchableItems(PrismContainerDefinition containerDef) { + List defs = new ArrayList<>(); + return defs; + } + + }; + multivalueContainerListPanel.setOutputMarkupId(true); + add(multivalueContainerListPanel); + + setOutputMarkupId(true); + + } + + private List, String>> createCaseEventsColumns(){ + List, String>> columns = new ArrayList<>(); + columns.add(new LinkColumn>(createStringResource("CaseEventsTabPanel.initiatorRefColumn")){ + private static final long serialVersionUID = 1L; + + @Override + protected IModel createLinkModel(IModel> rowModel) { + return Model.of(WebComponentUtil.getReferencedObjectDisplayNamesAndNames(unwrapRowModel(rowModel).getInitiatorRef(), false)); + } + + @Override + public boolean isEnabled(IModel> rowModel) { + //TODO should we check any authorization? + return true; + } + + @Override + public void onClick(AjaxRequestTarget target, IModel> rowModel) { + } + }); + + return columns; + } + + private ObjectTabStorage getEventsTabStorage(){ + return getPageBase().getSessionStorage().getCaseEventsTabStorage(); + } + + private CaseEventType unwrapRowModel(IModel> rowModel){ + return rowModel.getObject().getContainerValue().asContainerable(); + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsTablePanel.java index 163486bd2da..28ebcace85a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsTablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsTablePanel.java @@ -163,8 +163,6 @@ public boolean isEnabled(IModel> rowMode @Override public void onClick(AjaxRequestTarget target, IModel> rowModel) { -// AssignmentPanel.this.assignmentDetailsPerformed(target); -// getMultivalueContainerListPanel().itemDetailsPerformed(target, rowModel); } }); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java index b791b790453..8cbb1db86de 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java @@ -182,6 +182,22 @@ public String getCount() { return Integer.toString(countWorkItems()); } }); + tabs.add( + new CountablePanelTab(parentPage.createStringResource("PageCase.events"), + getTabVisibility(ComponentConstants.UI_CASE_TAB_EVENTS_URL, false, parentPage)) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createPanel(String panelId) { + return new CaseEventsTabPanel(panelId, getMainForm(), getObjectModel(), parentPage); + } + + @Override + public String getCount() { + return Integer.toString(countEvents()); + } + }); return tabs; } @@ -316,4 +332,9 @@ private int countWorkItems(){ List workItemsList = getObjectModel().getObject().getObject().asObjectable().getWorkItem(); return workItemsList == null ? 0 : workItemsList.size(); } + + private int countEvents(){ + List eventsList = getObjectModel().getObject().getObject().asObjectable().getEvent(); + return eventsList == null ? 0 : eventsList.size(); + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java index e8eed36741c..869e7058020 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/SessionStorage.java @@ -65,6 +65,7 @@ public class SessionStorage implements Serializable, DebugDumpable { public static final String KEY_WORK_ITEMS = "workItems"; public static final String KEY_OBJECT_LIST = "objectListPage"; public static final String KEY_CASE_WORKITEMS_TAB = "workitemsTab"; + public static final String KEY_CASE_EVENTS_TAB = "caseEventsTab"; private static final String KEY_TASKS = "tasks"; private static final String KEY_CERT_CAMPAIGNS = "certCampaigns"; @@ -196,6 +197,10 @@ public ObjectTabStorage getCaseWorkitemsTabStorage() { return getObjectTabStorage(KEY_CASE_WORKITEMS_TAB); } + public ObjectTabStorage getCaseEventsTabStorage() { + return getObjectTabStorage(KEY_CASE_EVENTS_TAB); + } + public ObjectTabStorage getObjectPoliciesConfigurationTabStorage() { return getObjectTabStorage(KEY_OBJECT_POLICIES_TAB); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java index 4cffdd8f8c5..43fe1c16daa 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/session/UserProfileStorage.java @@ -94,7 +94,8 @@ public enum TableId { NOTIFICATION_TAB_MAIL_SERVER_TABLE, COLLECTION_VIEW_TABLE, USERS_VIEW_TABLE, - PAGE_CASE_WORKITEMS_TAB + PAGE_CASE_WORKITEMS_TAB, + PAGE_CASE_EVENTS_TAB } private Map tables = new HashMap<>(); diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index 4a1f6b6ba0b..543cc599386 100755 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -2472,6 +2472,7 @@ pageUser.userDetails=User details PageCase.title=Case details PageCase.workitemsTab=Workitems +PageCase.events=Events PageCaseWorkItem.title=Case work item details pageCase.button.save=Save pageCase.button.back=Back @@ -4145,6 +4146,7 @@ PolicyRulesPanel.orderColumn=Order PolicyRule.constraintsLabel=Constraints PolicyRule.situationLabel=Situation PolicyRule.actionLabel=Action +CaseEventsTabPanel.initiatorRefColumn=Initiator AbstractAssignmentDetailsPanel.doneButton=Done ApprovalProcessesPreviewPanel.processRelatedTo=Approval process related to {0} ApprovalProcessesPreviewPanel.process=Approval process