Skip to content

Commit

Permalink
MID-8669 improved display in task details for "preview" tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Apr 11, 2023
1 parent 8e0f2b3 commit 04e5369
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div wicket:id="simulationWarning"/>
<div wicket:id="activities">
<div class="card">
<div class="card-header">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@
</div>
<div class="info-box-content d-flex flex-row">
<div class="flex-grow-1">
<div class="info-box-number" style="padding: 0px;">
<div class="info-box-number d-flex gap-2" style="padding: 0px;">
<span class="summary-panel-display-name" wicket:id="summaryDisplayName" style="padding: 0px;"/>
<span class="summary-panel-identifier" wicket:id="summaryIdentifierPanel" style="padding: 0px;">(<span wicket:id="summaryIdentifier"/>)</span>
<span wicket:id="badges"/>
<a wicket:id="navigateToObject" class="summary-panel-navigation-button">
<i class="fa fa-share"/>
</a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import java.util.List;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.BadgeListPanel;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.AttributeModifier;
Expand Down Expand Up @@ -55,6 +58,7 @@ public abstract class AbstractSummaryPanel<C extends Containerable> extends Base
protected static final String ID_TITLE = "summaryTitle";
protected static final String ID_TITLE2 = "summaryTitle2";
protected static final String ID_TITLE3 = "summaryTitle3";
protected static final String ID_BADGES = "badges";

protected static final String ID_PHOTO = "summaryPhoto"; // perhaps useful only for focal objects but it was simpler to include it here
protected static final String ID_ORGANIZATION = "summaryOrganization"; // similar (requires ObjectWrapper to get parent organizations so hard to use in ObjectSummaryPanel)
Expand Down Expand Up @@ -115,6 +119,11 @@ public boolean isVisible() {
});
box.add(identifierPanel);

IModel<List<Badge>> badgesModel = createBadgesModel();
BadgeListPanel badges = new BadgeListPanel(ID_BADGES, badgesModel);
badges.add(new VisibleBehaviour(() -> !badgesModel.getObject().isEmpty()));
box.add(badges);

AjaxButton navigateToObject = new AjaxButton(ID_NAVIGATE_TO_OBJECT_BUTTON) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
Expand Down Expand Up @@ -233,6 +242,10 @@ public boolean isVisible() {
box.add(tagBox);
}

protected IModel<List<Badge>> createBadgesModel() {
return Model.ofList(new ArrayList<>());
}

private IModel<String> getIconCssClass() {
return () -> {
String archetypeIcon = getArchetypeIconCssClass();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,45 +7,38 @@
package com.evolveum.midpoint.web.page.admin.server;

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

import com.evolveum.midpoint.gui.api.model.NonEmptyLoadableModel;
import com.evolveum.midpoint.schema.util.task.ActivityItemProcessingStatisticsUtil;

import com.evolveum.midpoint.schema.util.task.LegacyTaskInformation;
import com.evolveum.midpoint.schema.util.task.TaskInformation;

import com.evolveum.midpoint.xml.ns._public.common.common_3.SummaryPanelSpecificationType;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.model.NonEmptyLoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.LocalizationUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.schema.util.task.ActivityItemProcessingStatisticsUtil;
import com.evolveum.midpoint.schema.util.task.LegacyTaskInformation;
import com.evolveum.midpoint.schema.util.task.TaskInformation;
import com.evolveum.midpoint.web.component.ObjectSummaryPanel;
import com.evolveum.midpoint.web.component.util.SummaryTag;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoExecutionState;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;

import org.jetbrains.annotations.NotNull;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

public class TaskSummaryPanel extends ObjectSummaryPanel<TaskType> {
private static final long serialVersionUID = -5077637168906420769L;

private static final Trace LOGGER = TraceManager.getTrace(TaskSummaryPanel.class);

/** Keeps the pre-processed task information. */
@NotNull private final NonEmptyLoadableModel<TaskInformation> taskInformationModel;

Expand All @@ -70,6 +63,30 @@ private NonEmptyLoadableModel<TaskInformation> createFallbackTaskInformationMode
() -> LegacyTaskInformation.fromLegacyTaskOrNoTask(model.getObject()), false);
}

@Override
protected IModel<List<Badge>> createBadgesModel() {
return new LoadableDetachableModel<>() {

@Override
protected List<Badge> load() {
TaskType task = getModelObject();
ActivityDefinitionType def = task.getActivity();

if (def == null || def.getExecution() == null) {
return Collections.emptyList();
}

ActivityExecutionModeDefinitionType executionDef = def.getExecution();
ExecutionModeType mode = executionDef.getMode();
if (mode == null) {
return Collections.emptyList();
}

return List.of(new Badge(Badge.State.INFO.getCss(), LocalizationUtil.translateEnum(mode)));
}
};
}

@Override
protected List<SummaryTag<TaskType>> getSummaryTagComponentList() {
List<SummaryTag<TaskType>> summaryTagList = new ArrayList<>();
Expand Down Expand Up @@ -151,16 +168,16 @@ private String getIconForExecutionState(TaskDtoExecutionState status) {
break;
case SUSPENDED:
case SUSPENDING:
css = GuiStyleConstants.ICON_FA_BED;
css = GuiStyleConstants.ICON_FA_BED;
break;
case WAITING:
css = GuiStyleConstants.ICON_FAR_CLOCK;
break;
case CLOSED:
css = GuiStyleConstants.ICON_FA_POWER_OFF;
css = GuiStyleConstants.ICON_FA_POWER_OFF;
break;
default:
css = "";
css = "";
}

return StringUtils.isNotEmpty(css) ? css + " fa-fw" : "";
Expand Down Expand Up @@ -205,23 +222,23 @@ protected IModel<String> getTitleModel() {

String rv = WebComponentUtil.getTaskProgressDescription(taskInformation, true, getPageBase());
if (taskType.getExecutionState() != null) {
switch (taskType.getExecutionState()) {
case SUSPENDED:
rv += " " + getString("TaskSummaryPanel.progressIfSuspended");
break;
case CLOSED:
rv += " " + getString("TaskSummaryPanel.progressIfClosed");
break;
case WAITING:
rv += " " + getString("TaskSummaryPanel.progressIfWaiting");
break;
}
switch (taskType.getExecutionState()) {
case SUSPENDED:
rv += " " + getString("TaskSummaryPanel.progressIfSuspended");
break;
case CLOSED:
rv += " " + getString("TaskSummaryPanel.progressIfClosed");
break;
case WAITING:
rv += " " + getString("TaskSummaryPanel.progressIfWaiting");
break;
}
Long stalledSince = WebComponentUtil.xgc2long(taskType.getStalledSince());
if (stalledSince != null) {
rv += " " + getString("TaskSummaryPanel.progressIfStalled", WebComponentUtil.formatDate(new Date(stalledSince)));
}
return rv;
}
Long stalledSince = WebComponentUtil.xgc2long(taskType.getStalledSince());
if (stalledSince != null) {
rv += " " + getString("TaskSummaryPanel.progressIfStalled", WebComponentUtil.formatDate(new Date(stalledSince)));
}
return rv;
};
}

Expand Down Expand Up @@ -262,7 +279,7 @@ protected IModel<String> getTitle3Model() {

private String getTaskExecutionLabel(TaskType task) {
TaskDtoExecutionState status = TaskDtoExecutionState.fromTaskExecutionState(task.getExecutionState(), task.getNodeAsObserved() != null);
if (status != null){
if (status != null) {
return PageBase.createStringResourceStatic(TaskSummaryPanel.this, status).getString();
}
return "";
Expand Down Expand Up @@ -295,7 +312,7 @@ private String getLiveSyncToken(TaskType taskType) {
return token != null ? token.toString() : null;
}

public NonEmptyLoadableModel<TaskInformation> getTaskInfoModel(){
public NonEmptyLoadableModel<TaskInformation> getTaskInfoModel() {
return taskInformationModel;
}
}

0 comments on commit 04e5369

Please sign in to comment.