Skip to content

Commit

Permalink
navigate to task from case page
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Mar 16, 2020
1 parent 609e0ba commit d9dcc70
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 1 deletion.
Expand Up @@ -661,6 +661,22 @@ public static void iterativeExecuteBulkAction(PageBase pageBase, ExecuteScriptTy
pageBase.getScriptingService().evaluateIterativeExpressionInBackground(script, task, result);
}

public static PrismObject<TaskType> getCaseExecutingChangesTask(String operation, String caseOid, PageBase pageBase){
if (StringUtils.isEmpty(caseOid)){
return null;
}
OperationResult result = new OperationResult(operation);
ObjectQuery query = pageBase.getPrismContext().queryFor(TaskType.class)
.item(TaskType.F_OBJECT_REF)
.ref(caseOid)
.build();
List<PrismObject<TaskType>> connectedTasks = WebModelServiceUtils.searchObjects(TaskType.class, query, result, pageBase);
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(connectedTasks)){
return connectedTasks.get(0);
}
return null;
}

public static void executeMemberOperation(Task operationalTask, QName type, ObjectQuery memberQuery,
ExecuteScriptType script, Collection<SelectorOptions<GetOperationOptions>> option, OperationResult parentResult, PageBase pageBase) throws SchemaException {

Expand Down Expand Up @@ -1351,7 +1367,7 @@ public static String getDisplayNameOrName(PrismObject object, boolean translate)
}

String displayName = getDisplayName(object, translate);
return displayName != null ? displayName : getName(object, translate);
return StringUtils.isNotEmpty(displayName) ? displayName : getName(object, translate);
}

public static String getDisplayNameOrName(ObjectReferenceType ref) {
Expand Down
Expand Up @@ -25,4 +25,8 @@ <h3 class="box-title"><wicket:message key="workItemPanel.approvalHistory"/></h3>
<div wicket:id="historyPanel" />
</div>
</div>
<div class="row multivalue-form" wicket:id="navigateToTaskContainer">
<div class="col-md-3"><wicket:message key="PageCase.executingChangesTask" style="font-weight: bold; font-size: 14px;"/></div>
<div class="col-md-9"><a wicket:id="navigateToTaskLink" /></div>
</div>
</wicket:panel>
Expand Up @@ -10,8 +10,13 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ApprovalContextUtil;
import com.evolveum.midpoint.schema.util.CaseTypeUtil;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectTabPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
Expand All @@ -20,7 +25,11 @@
import com.evolveum.midpoint.web.page.admin.workflow.dto.DecisionDto;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.Model;

Expand All @@ -33,10 +42,15 @@
public class ApprovalCaseTabPanel extends AbstractObjectTabPanel<CaseType> {
private static final long serialVersionUID = 1L;

private static final String DOT_CLASS = ApprovalCaseTabPanel.class.getName() + ".";
private static final String OPERATION_LOAD_CONNECTED_TASK = DOT_CLASS + "loadConnectedTask";

private static final String ID_APPROVAL_CASE_PANEL = "approvalCasePanel";
private static final String ID_HISTORY_CONTAINER = "historyContainer";
private static final String ID_HISTORY_PANEL = "historyPanel";
private static final String ID_HISTORY_HELP = "approvalHistoryHelp";
private static final String ID_NAVIGATE_TO_TASK_LINK = "navigateToTaskLink";
private static final String ID_NAVIGATE_TO_TASK_CONTAINER = "navigateToTaskContainer";

public ApprovalCaseTabPanel(String id, Form<PrismObjectWrapper<CaseType>> mainForm, LoadableModel<PrismObjectWrapper<CaseType>> objectWrapperModel, PageBase pageBase) {
super(id, mainForm, objectWrapperModel);
Expand Down Expand Up @@ -67,6 +81,33 @@ private void initLayout(){
(int) getPageBase().getItemsPerPage(UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL));
historyPanel.setOutputMarkupId(true);
historyContainer.add(historyPanel);

PrismObject<TaskType> executingChangesTask = WebComponentUtil.getCaseExecutingChangesTask(OPERATION_LOAD_CONNECTED_TASK,
getObjectWrapper().getOid(), ApprovalCaseTabPanel.this.getPageBase());
WebMarkupContainer taskLinkContainer = new WebMarkupContainer(ID_NAVIGATE_TO_TASK_CONTAINER);
taskLinkContainer.setOutputMarkupId(true);
taskLinkContainer.add(new VisibleBehaviour(() -> executingChangesTask != null));
add(taskLinkContainer);

AjaxButton redirectToTaskLink = new AjaxButton(ID_NAVIGATE_TO_TASK_LINK,
Model.of(WebComponentUtil.getDisplayNameOrName(executingChangesTask, true))) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
ObjectReferenceType taskRef = null;
if (executingChangesTask != null) {
taskRef = new ObjectReferenceType();
taskRef.setOid(executingChangesTask.getOid());
taskRef.setType(TaskType.COMPLEX_TYPE);
}
if (StringUtils.isNotEmpty(taskRef.getOid())) {
WebComponentUtil.dispatchToObjectDetailsPage(taskRef, ApprovalCaseTabPanel.this, false);
}
}
};
redirectToTaskLink.setOutputMarkupId(true);
taskLinkContainer.add(redirectToTaskLink);
}

public List<DecisionDto> calculateDecisionList() {
Expand Down
Expand Up @@ -19,4 +19,8 @@
<div wicket:id="requestDetailsPanels">
<div wicket:id="operationRequestCasePanel" class="multivalue-form" />
</div>
<div class="row multivalue-form" wicket:id="navigateToTaskContainer">
<div class="col-md-3"><wicket:message key="PageCase.executingChangesTask" style="font-weight: bold; font-size: 14px;"/></div>
<div class="col-md-9"><a wicket:id="navigateToTaskLink" /></div>
</div>
</wicket:panel>
Expand Up @@ -10,19 +10,26 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectTabPanel;
import com.evolveum.midpoint.web.component.prism.show.SceneDto;
import com.evolveum.midpoint.web.component.prism.show.ScenePanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.reports.dto.JasperReportParameterDto;
import com.evolveum.midpoint.web.page.admin.workflow.WorkItemDetailsPanel;
import com.evolveum.midpoint.wf.api.WorkflowManager;
import com.evolveum.midpoint.wf.util.ChangesByState;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
Expand All @@ -41,6 +48,9 @@ public class OperationRequestCaseTabPanel extends AbstractObjectTabPanel<CaseTyp
private static final String DOT_CLASS = OperationRequestCaseTabPanel.class.getName() + ".";
private static final Trace LOGGER = TraceManager.getTrace(OperationRequestCaseTabPanel.class);
private static final String OPERATION_PREPARE_DELTA_VISUALIZATION = DOT_CLASS + "prepareDeltaVisualization";
private static final String OPERATION_LOAD_CONNECTED_TASK = DOT_CLASS + "loadConnectedTask";
private static final String ID_NAVIGATE_TO_TASK_LINK = "navigateToTaskLink";
private static final String ID_NAVIGATE_TO_TASK_CONTAINER = "navigateToTaskContainer";

private static final String ID_REQUEST_DETAILS_PANELS = "requestDetailsPanels";
private static final String ID_OPERATIONAL_REQUEST_CASE_PANEL = "operationRequestCasePanel";
Expand Down Expand Up @@ -95,6 +105,34 @@ protected void populateItem(ListItem<SceneDto> item) {
};
requestDetailsPanels.setOutputMarkupId(true);
add(requestDetailsPanels);

PrismObject<TaskType> executingChangesTask = WebComponentUtil.getCaseExecutingChangesTask(OPERATION_LOAD_CONNECTED_TASK,
getObjectWrapper().getOid(), OperationRequestCaseTabPanel.this.getPageBase());
WebMarkupContainer taskLinkContainer = new WebMarkupContainer(ID_NAVIGATE_TO_TASK_CONTAINER);
taskLinkContainer.setOutputMarkupId(true);
taskLinkContainer.add(new VisibleBehaviour(() -> executingChangesTask != null));
add(taskLinkContainer);

AjaxButton redirectToTaskLink = new AjaxButton(ID_NAVIGATE_TO_TASK_LINK,
Model.of(WebComponentUtil.getDisplayNameOrName(executingChangesTask, true))) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
ObjectReferenceType taskRef = null;
if (executingChangesTask != null) {
taskRef = new ObjectReferenceType();
taskRef.setOid(executingChangesTask.getOid());
taskRef.setType(TaskType.COMPLEX_TYPE);
}
if (StringUtils.isNotEmpty(taskRef.getOid())) {
WebComponentUtil.dispatchToObjectDetailsPage(taskRef, OperationRequestCaseTabPanel.this, false);
}
}
};
redirectToTaskLink.setOutputMarkupId(true);
taskLinkContainer.add(redirectToTaskLink);

}

}

0 comments on commit d9dcc70

Please sign in to comment.