Add action column for action history table and remove context menu
Signed-off-by: SirWayne <dennis.melzer@bosch-si.com>
This commit is contained in:
@@ -89,6 +89,7 @@ public class ConfirmationDialog implements Button.ClickListener {
|
||||
final Button cancelButton = SPUIComponentProvider.getButton(null, cancelLabel, "", null, false, null,
|
||||
SPUIButtonStyleTiny.class);
|
||||
cancelButton.addClickListener(this);
|
||||
cancelButton.setId(SPUIComponentIdProvider.CANCEL_BUTTON);
|
||||
window.setModal(true);
|
||||
window.addStyleName(SPUIStyleDefinitions.CONFIRMBOX_WINDOW_SYLE);
|
||||
if (this.callback == null) {
|
||||
|
||||
@@ -27,11 +27,11 @@ import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.ui.common.ConfirmationDialog;
|
||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent;
|
||||
import org.eclipse.hawkbit.ui.management.event.PinUnpinEvent;
|
||||
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
|
||||
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||
@@ -50,15 +50,14 @@ import org.vaadin.spring.events.EventBus;
|
||||
import org.vaadin.spring.events.EventScope;
|
||||
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.vaadin.data.Container;
|
||||
import com.vaadin.data.Item;
|
||||
import com.vaadin.data.util.HierarchicalContainer;
|
||||
import com.vaadin.event.Action.Handler;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.shared.ui.label.ContentMode;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
@@ -74,11 +73,13 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
public class ActionHistoryTable extends TreeTable {
|
||||
|
||||
private static final long serialVersionUID = -1631514704696786653L;
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ActionHistoryTable.class);
|
||||
private static final String BUTTON_CANCEL = "button.cancel";
|
||||
private static final String BUTTON_OK = "button.ok";
|
||||
private static final long serialVersionUID = -1631514704696786653L;
|
||||
|
||||
@Autowired
|
||||
private I18N i18n;
|
||||
|
||||
@@ -95,14 +96,10 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
private ManagementUIState managementUIState;
|
||||
|
||||
private Container hierarchicalContainer;
|
||||
private boolean alreadyHasMessages = false;
|
||||
private boolean alreadyHasMessages;
|
||||
|
||||
private Target target;
|
||||
|
||||
com.vaadin.event.Action actionCancel;
|
||||
com.vaadin.event.Action actionForce;
|
||||
com.vaadin.event.Action actionForceQuit;
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ActionHistoryTable.class);
|
||||
private static final String STATUS_ICON_GREEN = "statusIconGreen";
|
||||
|
||||
/**
|
||||
@@ -110,10 +107,6 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
*/
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
actionCancel = new com.vaadin.event.Action(i18n.get("message.cancel.action"));
|
||||
actionForceQuit = new com.vaadin.event.Action(i18n.get("message.forcequit.action"));
|
||||
actionForceQuit.setIcon(FontAwesome.WARNING);
|
||||
actionForce = new com.vaadin.event.Action(i18n.get("message.force.action"));
|
||||
initializeTableSettings();
|
||||
buildComponent();
|
||||
restorePreviousState();
|
||||
@@ -150,11 +143,12 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
}
|
||||
|
||||
private void setColumnExpandRatioForMinimisedTable() {
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ACTION_ID, 0.1f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DIST, 0.3f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_STATUS, 0.15f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DATETIME, 0.3f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_FORCED, 0.15f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ACTION_ID, 0.1F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DIST, 0.3F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_STATUS, 0.15F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DATETIME, 0.3F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_FORCED, 0.15F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTIONS_COLUMN, 0.2F);
|
||||
}
|
||||
|
||||
private void initializeTableSettings() {
|
||||
@@ -164,14 +158,15 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
setMultiSelect(false);
|
||||
setSortEnabled(true);
|
||||
setColumnReorderingAllowed(true);
|
||||
setHeight(100.0f, Unit.PERCENTAGE);
|
||||
setWidth(100.0f, Unit.PERCENTAGE);
|
||||
setHeight(100.0F, Unit.PERCENTAGE);
|
||||
setWidth(100.0F, Unit.PERCENTAGE);
|
||||
setImmediate(true);
|
||||
setStyleName("sp-table");
|
||||
addStyleName(ValoTheme.TABLE_NO_VERTICAL_LINES);
|
||||
addStyleName(ValoTheme.TABLE_SMALL);
|
||||
setColumnAlignment(SPUIDefinitions.ACTION_HIS_TBL_FORCED, Align.CENTER);
|
||||
setColumnAlignment(SPUIDefinitions.ACTION_HIS_TBL_STATUS, Align.CENTER);
|
||||
setColumnAlignment(SPUIDefinitions.ACTIONS_COLUMN, Align.CENTER);
|
||||
// listeners for child
|
||||
addExpandListener(event -> {
|
||||
expandParentActionRow(event.getItemId());
|
||||
@@ -181,11 +176,6 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
collapseParentActionRow(event.getItemId());
|
||||
managementUIState.getExpandParentActionRowId().remove(event.getItemId());
|
||||
});
|
||||
/*
|
||||
* Add the cancel action handler for active actions. To be used to
|
||||
* cancel the action.
|
||||
*/
|
||||
addActionHandler(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -204,6 +194,7 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
null);
|
||||
hierarchicalContainer.addContainerProperty(SPUIDefinitions.ACTION_HIS_TBL_MSGS_HIDDEN, List.class, null);
|
||||
hierarchicalContainer.addContainerProperty(SPUIDefinitions.ACTION_HIS_TBL_ROLLOUT_NAME, String.class, null);
|
||||
|
||||
}
|
||||
|
||||
private List<Object> getVisbleColumns() {
|
||||
@@ -213,6 +204,8 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
visibleColumnIds.add(SPUIDefinitions.ACTION_HIS_TBL_DATETIME);
|
||||
visibleColumnIds.add(SPUIDefinitions.ACTION_HIS_TBL_STATUS);
|
||||
visibleColumnIds.add(SPUIDefinitions.ACTION_HIS_TBL_FORCED);
|
||||
visibleColumnIds.add(SPUIDefinitions.ACTIONS_COLUMN);
|
||||
|
||||
if (managementUIState.isActionHistoryMaximized()) {
|
||||
visibleColumnIds.add(SPUIDefinitions.ACTION_HIS_TBL_ROLLOUT_NAME);
|
||||
visibleColumnIds.add(SPUIDefinitions.ACTION_HIS_TBL_MSGS);
|
||||
@@ -242,12 +235,12 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
|
||||
private void getcontainerData() {
|
||||
hierarchicalContainer.removeAllItems();
|
||||
|
||||
|
||||
if (target != null) {
|
||||
/* service method to create action history for target */
|
||||
final List<ActionWithStatusCount> actionHistory = deploymentManagement
|
||||
.findActionsWithStatusCountByTargetOrderByIdDesc(target);
|
||||
|
||||
.findActionsWithStatusCountByTargetOrderByIdDesc(target);
|
||||
|
||||
addDetailsToContainer(actionHistory);
|
||||
}
|
||||
}
|
||||
@@ -300,23 +293,22 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
* add distribution name to the item which will be displayed in the
|
||||
* table. The name should not exceed certain limit.
|
||||
*/
|
||||
item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_DIST).setValue(actionWithStatusCount.getDsName() + ":" +
|
||||
actionWithStatusCount.getDsVersion());
|
||||
item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_DIST)
|
||||
.setValue(actionWithStatusCount.getDsName() + ":" + actionWithStatusCount.getDsVersion());
|
||||
item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_FORCED).setValue(action);
|
||||
|
||||
/* Default no child */
|
||||
((Hierarchical) hierarchicalContainer).setChildrenAllowed(actionWithStatusCount.getAction().getId(), false);
|
||||
|
||||
item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_DATETIME)
|
||||
.setValue(SPDateTimeUtil.getFormattedDate((actionWithStatusCount.getAction().getLastModifiedAt() != null)
|
||||
? actionWithStatusCount.getAction().getLastModifiedAt()
|
||||
: actionWithStatusCount.getAction().getLastModifiedAt()));
|
||||
.setValue(SPDateTimeUtil.getFormattedDate(actionWithStatusCount.getAction().getLastModifiedAt()));
|
||||
|
||||
item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_ROLLOUT_NAME)
|
||||
.setValue(actionWithStatusCount.getRolloutName());
|
||||
|
||||
if (actionWithStatusCount.getActionStatusCount() > 0) {
|
||||
((Hierarchical) hierarchicalContainer).setChildrenAllowed(actionWithStatusCount.getAction().getId(), true);
|
||||
((Hierarchical) hierarchicalContainer).setChildrenAllowed(actionWithStatusCount.getAction().getId(),
|
||||
true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -350,12 +342,18 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
return getForcedColumn(itemId);
|
||||
}
|
||||
});
|
||||
|
||||
addGeneratedColumn(SPUIDefinitions.ACTIONS_COLUMN, new Table.ColumnGenerator() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public Component generateCell(final Table source, final Object itemId, final Object columnId) {
|
||||
return createActionBarColumn(itemId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemId
|
||||
* @return
|
||||
*/
|
||||
private Component getForcedColumn(final Object itemId) {
|
||||
final Action actionWithActiveStatus = (Action) hierarchicalContainer.getItem(itemId)
|
||||
.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_FORCED).getValue();
|
||||
@@ -372,10 +370,6 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
return actionLabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemId
|
||||
* @return
|
||||
*/
|
||||
private Component getActiveColumn(final Object itemId) {
|
||||
final Action.Status status = (Action.Status) hierarchicalContainer.getItem(itemId)
|
||||
.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_STATUS_HIDDEN).getValue();
|
||||
@@ -397,10 +391,43 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
return activeStatusIcon;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemId
|
||||
* @return
|
||||
*/
|
||||
private HorizontalLayout createActionBarColumn(final Object itemId) {
|
||||
final HorizontalLayout actionBar = new HorizontalLayout();
|
||||
final Item item = hierarchicalContainer.getItem(itemId);
|
||||
final Long actionId = (Long) item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_ACTION_ID_HIDDEN).getValue();
|
||||
final String activeValue = (String) item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_ACTIVE_HIDDEN)
|
||||
.getValue();
|
||||
final Action actionWithActiveStatus = (Action) item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_FORCED)
|
||||
.getValue();
|
||||
|
||||
if (actionWithActiveStatus == null) {
|
||||
return null;
|
||||
}
|
||||
final boolean isActionActive = target != null && SPUIDefinitions.ACTIVE.equals(activeValue);
|
||||
|
||||
final Button actionCancel = SPUIComponentProvider.getButton(
|
||||
SPUIComponentIdProvider.ACTION_HISTORY_TABLE_CANCEL_ID, "", i18n.get("message.cancel.action"),
|
||||
ValoTheme.BUTTON_TINY, true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
actionCancel.setEnabled(isActionActive && !actionWithActiveStatus.isCancelingOrCanceled());
|
||||
actionCancel.addClickListener(event -> confirmAndCancelAction(actionId));
|
||||
|
||||
final Button actionForce = SPUIComponentProvider.getButton(
|
||||
SPUIComponentIdProvider.ACTION_HISTORY_TABLE_FORCE_ID, "", i18n.get("message.force.action"),
|
||||
ValoTheme.BUTTON_TINY, true, FontAwesome.BOLT, SPUIButtonStyleSmallNoBorder.class);
|
||||
actionForce.setEnabled(isActionActive && !actionWithActiveStatus.isForce());
|
||||
actionForce.addClickListener(event -> confirmAndForceAction(actionId));
|
||||
|
||||
final Button actionForceQuit = SPUIComponentProvider.getButton(
|
||||
SPUIComponentIdProvider.ACTION_HISTORY_TABLE_FORCE_QUIT_ID, "", i18n.get("message.forcequit.action"),
|
||||
ValoTheme.BUTTON_TINY + " redicon", true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
actionForceQuit.setEnabled(isActionActive && actionWithActiveStatus.isCancelingOrCanceled());
|
||||
actionForceQuit.addClickListener(event -> confirmAndForceQuitAction(actionId));
|
||||
|
||||
actionBar.addComponents(actionCancel, actionForce, actionForceQuit);
|
||||
|
||||
return actionBar;
|
||||
}
|
||||
|
||||
private Component getStatusColumn(final Object itemId) {
|
||||
final Action.Status status = (Action.Status) hierarchicalContainer.getItem(itemId)
|
||||
.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_STATUS_HIDDEN).getValue();
|
||||
@@ -427,11 +454,11 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
final Pageable pageReq = new PageRequest(0, 1000,
|
||||
new Sort(Direction.DESC, ActionStatusFields.ID.getFieldName()));
|
||||
final Page<ActionStatus> actionStatusList;
|
||||
if (managementUIState.isActionHistoryMaximized()) {
|
||||
actionStatusList = deploymentManagement.findActionStatusByActionWithMessages(pageReq, action);
|
||||
} else {
|
||||
actionStatusList = deploymentManagement.findActionStatusByAction(pageReq, action);
|
||||
}
|
||||
if (managementUIState.isActionHistoryMaximized()) {
|
||||
actionStatusList = deploymentManagement.findActionStatusByActionWithMessages(pageReq, action);
|
||||
} else {
|
||||
actionStatusList = deploymentManagement.findActionStatusByAction(pageReq, action);
|
||||
}
|
||||
final List<ActionStatus> content = actionStatusList.getContent();
|
||||
/*
|
||||
* Since the recent action status and messages are already
|
||||
@@ -449,9 +476,8 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
*/
|
||||
childItem.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_ACTIVE_HIDDEN).setValue("");
|
||||
|
||||
childItem.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_DIST)
|
||||
.setValue(action.getDistributionSet().getName() + ":"
|
||||
+ action.getDistributionSet().getVersion());
|
||||
childItem.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_DIST).setValue(
|
||||
action.getDistributionSet().getName() + ":" + action.getDistributionSet().getVersion());
|
||||
|
||||
childItem.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_DATETIME)
|
||||
.setValue(SPDateTimeUtil.getFormattedDate(actionStatus.getCreatedAt()));
|
||||
@@ -637,14 +663,15 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
|
||||
private void setColumnExpantRatioOnTableMaximize() {
|
||||
/* set messages column can expand the rest of the available space */
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ACTIVE, 0.1f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ACTION_ID, 0.1f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_STATUS, 0.1f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DIST, 0.2f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_FORCED, 0.1f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ROLLOUT_NAME, 0.1f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_MSGS, 0.35f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DATETIME, 0.15f);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ACTIVE, 0.1F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ACTION_ID, 0.1F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_STATUS, 0.1F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DIST, 0.2F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_FORCED, 0.1F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_ROLLOUT_NAME, 0.1F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_MSGS, 0.35F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTION_HIS_TBL_DATETIME, 0.15F);
|
||||
setColumnExpandRatio(SPUIDefinitions.ACTIONS_COLUMN, 0.2F);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -706,46 +733,6 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
setColumnExpandRatioForMinimisedTable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleAction(final com.vaadin.event.Action action, final Object sender, final Object target) {
|
||||
/* Get the actionId details of the cancel item or row */
|
||||
final Item item = hierarchicalContainer.getItem(target);
|
||||
final Long actionId = (Long) item.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_ACTION_ID_HIDDEN).getValue();
|
||||
if (action.equals(actionCancel)) {
|
||||
if (actionId != null) {
|
||||
confirmAndCancelAction(actionId);
|
||||
}
|
||||
} else if (action.equals(actionForce)) {
|
||||
confirmAndForceAction(actionId);
|
||||
} else if (action.equals(actionForceQuit)) {
|
||||
confirmAndForceQuitAction(actionId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public com.vaadin.event.Action[] getActions(final Object target, final Object sender) {
|
||||
final List<com.vaadin.event.Action> actions = Lists.newArrayList();
|
||||
if (target != null) {
|
||||
/* Check if the row or item belongs to active action */
|
||||
final String activeValue = (String) hierarchicalContainer.getItem(target)
|
||||
.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_ACTIVE_HIDDEN).getValue();
|
||||
if (SPUIDefinitions.ACTIVE.equals(activeValue)) {
|
||||
final Action actionWithActiveStatus = (Action) hierarchicalContainer.getItem(target)
|
||||
.getItemProperty(SPUIDefinitions.ACTION_HIS_TBL_FORCED).getValue();
|
||||
if (!actionWithActiveStatus.isForce()) {
|
||||
actions.add(actionForce);
|
||||
}
|
||||
if (!actionWithActiveStatus.isCancelingOrCanceled()) {
|
||||
actions.add(actionCancel);
|
||||
} else {
|
||||
actions.add(actionForceQuit);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return actions.toArray(new com.vaadin.event.Action[actions.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show confirmation window and if ok then only, force the action.
|
||||
*
|
||||
@@ -756,21 +743,15 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
/* Display the confirmation */
|
||||
final ConfirmationDialog confirmDialog = new ConfirmationDialog(i18n.get("caption.force.action.confirmbox"),
|
||||
i18n.get("message.force.action.confirm"), i18n.get(BUTTON_OK), i18n.get(BUTTON_CANCEL), ok -> {
|
||||
if (ok) {
|
||||
/* cancel the action */
|
||||
deploymentManagement.forceTargetAction(actionId);
|
||||
|
||||
/*
|
||||
* Refresh the action history table to show latest
|
||||
* change of the action cancellation and update the
|
||||
* Target Details
|
||||
*/
|
||||
|
||||
populateAndupdateTargetDetails(target);
|
||||
notification.displaySuccess(i18n.get("message.force.action.success"));
|
||||
if (!ok) {
|
||||
return;
|
||||
}
|
||||
deploymentManagement.forceTargetAction(actionId);
|
||||
populateAndupdateTargetDetails(target);
|
||||
notification.displaySuccess(i18n.get("message.force.action.success"));
|
||||
});
|
||||
UI.getCurrent().addWindow(confirmDialog.getWindow());
|
||||
|
||||
confirmDialog.getWindow().bringToFront();
|
||||
}
|
||||
|
||||
@@ -778,22 +759,19 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
/* Display the confirmation */
|
||||
final ConfirmationDialog confirmDialog = new ConfirmationDialog(i18n.get("caption.forcequit.action.confirmbox"),
|
||||
i18n.get("message.forcequit.action.confirm"), i18n.get(BUTTON_OK), i18n.get(BUTTON_CANCEL), ok -> {
|
||||
if (ok) {
|
||||
final boolean cancelResult = forceQuitActiveAction(actionId);
|
||||
if (cancelResult) {
|
||||
/*
|
||||
* Refresh the action history table to show latest
|
||||
* change of the action cancellation and update the
|
||||
* Target Details
|
||||
*/
|
||||
populateAndupdateTargetDetails(target);
|
||||
notification.displaySuccess(i18n.get("message.forcequit.action.success"));
|
||||
} else {
|
||||
notification.displayValidationError(i18n.get("message.forcequit.action.failed"));
|
||||
}
|
||||
if (!ok) {
|
||||
return;
|
||||
}
|
||||
} , FontAwesome.WARNING);
|
||||
final boolean cancelResult = forceQuitActiveAction(actionId);
|
||||
if (cancelResult) {
|
||||
populateAndupdateTargetDetails(target);
|
||||
notification.displaySuccess(i18n.get("message.forcequit.action.success"));
|
||||
} else {
|
||||
notification.displayValidationError(i18n.get("message.forcequit.action.failed"));
|
||||
}
|
||||
}, FontAwesome.WARNING);
|
||||
UI.getCurrent().addWindow(confirmDialog.getWindow());
|
||||
|
||||
confirmDialog.getWindow().bringToFront();
|
||||
}
|
||||
|
||||
@@ -804,21 +782,21 @@ public class ActionHistoryTable extends TreeTable implements Handler {
|
||||
* as Id if the action needs to be cancelled.
|
||||
*/
|
||||
private void confirmAndCancelAction(final Long actionId) {
|
||||
if (actionId == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final ConfirmationDialog confirmDialog = new ConfirmationDialog(i18n.get("caption.cancel.action.confirmbox"),
|
||||
i18n.get("message.cancel.action.confirm"), i18n.get(BUTTON_OK), i18n.get(BUTTON_CANCEL), ok -> {
|
||||
if (ok) {
|
||||
final boolean cancelResult = cancelActiveAction(actionId);
|
||||
if (cancelResult) {
|
||||
/*
|
||||
* Refresh the action history table to show latest
|
||||
* change of the action cancellation and update the
|
||||
* Target Details
|
||||
*/
|
||||
populateAndupdateTargetDetails(target);
|
||||
notification.displaySuccess(i18n.get("message.cancel.action.success"));
|
||||
} else {
|
||||
notification.displayValidationError(i18n.get("message.cancel.action.failed"));
|
||||
}
|
||||
if (!ok) {
|
||||
return;
|
||||
}
|
||||
final boolean cancelResult = cancelActiveAction(actionId);
|
||||
if (cancelResult) {
|
||||
populateAndupdateTargetDetails(target);
|
||||
notification.displaySuccess(i18n.get("message.cancel.action.success"));
|
||||
} else {
|
||||
notification.displayValidationError(i18n.get("message.cancel.action.failed"));
|
||||
}
|
||||
});
|
||||
UI.getCurrent().addWindow(confirmDialog.getWindow());
|
||||
|
||||
@@ -14,6 +14,7 @@ import static org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil.HTML_UL_CLOSE_TAG;
|
||||
import static org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil.HTML_UL_OPEN_TAG;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -74,11 +75,9 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
|
||||
private static final String UPDATE_OPTION = "Update";
|
||||
|
||||
private static final String RESUME_OPTION = "Resume";
|
||||
|
||||
private static final String PAUSE_OPTION = "Pause";
|
||||
|
||||
private static final String START_OPTION = "Start";
|
||||
private static final String RUN_OPTION = "Run";
|
||||
|
||||
private static final String DS_TYPE = "type";
|
||||
|
||||
@@ -193,14 +192,11 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
rolloutGridContainer.addContainerProperty(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS,
|
||||
TotalTargetCountStatus.class, null, false, false);
|
||||
|
||||
rolloutGridContainer.addContainerProperty(START_OPTION, String.class, FontAwesome.PLAY.getHtml(), false, false);
|
||||
rolloutGridContainer.addContainerProperty(RUN_OPTION, String.class, FontAwesome.PLAY.getHtml(), false, false);
|
||||
|
||||
rolloutGridContainer.addContainerProperty(PAUSE_OPTION, String.class, FontAwesome.PAUSE.getHtml(), false,
|
||||
false);
|
||||
|
||||
rolloutGridContainer.addContainerProperty(RESUME_OPTION, String.class, FontAwesome.FORWARD.getHtml(), false,
|
||||
false);
|
||||
|
||||
if (permissionChecker.hasRolloutUpdatePermission()) {
|
||||
rolloutGridContainer.addContainerProperty(UPDATE_OPTION, String.class, FontAwesome.EDIT.getHtml(), false,
|
||||
false);
|
||||
@@ -225,18 +221,15 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
getColumn(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setMinimumWidth(40);
|
||||
getColumn(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setMaximumWidth(100);
|
||||
|
||||
getColumn(START_OPTION).setMinimumWidth(35);
|
||||
getColumn(START_OPTION).setMaximumWidth(35);
|
||||
getColumn(RUN_OPTION).setMinimumWidth(25);
|
||||
getColumn(RUN_OPTION).setMaximumWidth(25);
|
||||
|
||||
getColumn(PAUSE_OPTION).setMinimumWidth(35);
|
||||
getColumn(PAUSE_OPTION).setMaximumWidth(35);
|
||||
|
||||
getColumn(RESUME_OPTION).setMinimumWidth(35);
|
||||
getColumn(RESUME_OPTION).setMaximumWidth(35);
|
||||
getColumn(PAUSE_OPTION).setMinimumWidth(25);
|
||||
getColumn(PAUSE_OPTION).setMaximumWidth(25);
|
||||
|
||||
if (permissionChecker.hasRolloutUpdatePermission()) {
|
||||
getColumn(UPDATE_OPTION).setMinimumWidth(35);
|
||||
getColumn(UPDATE_OPTION).setMaximumWidth(35);
|
||||
getColumn(UPDATE_OPTION).setMinimumWidth(25);
|
||||
getColumn(UPDATE_OPTION).setMaximumWidth(25);
|
||||
}
|
||||
|
||||
getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setMinimumWidth(280);
|
||||
@@ -262,16 +255,16 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
.setHeaderCaption(i18n.get("header.detail.status"));
|
||||
getColumn(SPUILabelDefinitions.VAR_STATUS).setHeaderCaption(i18n.get("header.status"));
|
||||
|
||||
getColumn(START_OPTION).setHeaderCaption(i18n.get("header.action.start"));
|
||||
getColumn(RUN_OPTION).setHeaderCaption(i18n.get("header.action.run"));
|
||||
getColumn(PAUSE_OPTION).setHeaderCaption(i18n.get("header.action.pause"));
|
||||
getColumn(RESUME_OPTION).setHeaderCaption(i18n.get("header.action.resume"));
|
||||
|
||||
if (permissionChecker.hasRolloutUpdatePermission()) {
|
||||
getColumn(UPDATE_OPTION).setHeaderCaption(i18n.get("header.action.update"));
|
||||
}
|
||||
|
||||
getDefaultHeaderRow().join(START_OPTION, PAUSE_OPTION, RESUME_OPTION, UPDATE_OPTION)
|
||||
.setText(i18n.get("header.action"));
|
||||
final HeaderCell join = getDefaultHeaderRow().join(RUN_OPTION, PAUSE_OPTION, UPDATE_OPTION);
|
||||
join.setText(i18n.get("header.action"));
|
||||
join.getComponent().addStyleName("centeralign");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -292,9 +285,8 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
columnList.add(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS);
|
||||
columnList.add(SPUILabelDefinitions.VAR_TOTAL_TARGETS);
|
||||
|
||||
columnList.add(START_OPTION);
|
||||
columnList.add(RUN_OPTION);
|
||||
columnList.add(PAUSE_OPTION);
|
||||
columnList.add(RESUME_OPTION);
|
||||
|
||||
if (permissionChecker.hasRolloutUpdatePermission()) {
|
||||
columnList.add(UPDATE_OPTION);
|
||||
@@ -346,15 +338,12 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
customObjectRenderer.addClickListener(this::onClickOfRolloutName);
|
||||
getColumn(ROLLOUT_RENDERER_DATA).setRenderer(customObjectRenderer);
|
||||
|
||||
getColumn(START_OPTION)
|
||||
.setRenderer(new HtmlButtonRenderer(clickEvent -> startRolloutAsync((Long) clickEvent.getItemId())));
|
||||
getColumn(RUN_OPTION)
|
||||
.setRenderer(new HtmlButtonRenderer(clickEvent -> startOrResumeRollout((Long) clickEvent.getItemId())));
|
||||
|
||||
getColumn(PAUSE_OPTION)
|
||||
.setRenderer(new HtmlButtonRenderer(clickEvent -> pauseRollout((Long) clickEvent.getItemId())));
|
||||
|
||||
getColumn(RESUME_OPTION)
|
||||
.setRenderer(new HtmlButtonRenderer(clickEvent -> resumeRollout((Long) clickEvent.getItemId())));
|
||||
|
||||
if (permissionChecker.hasRolloutUpdatePermission()) {
|
||||
getColumn(UPDATE_OPTION)
|
||||
.setRenderer(new HtmlButtonRenderer(clickEvent -> updateRollout((Long) clickEvent.getItemId())));
|
||||
@@ -411,35 +400,24 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
uiNotification.displaySuccess(i18n.get("message.rollout.paused", rolloutName));
|
||||
}
|
||||
|
||||
private void resumeRollout(final Long rolloutId) {
|
||||
private void startOrResumeRollout(final Long rolloutId) {
|
||||
final Item row = getContainerDataSource().getItem(rolloutId);
|
||||
|
||||
final RolloutStatus rolloutStatus = (RolloutStatus) row.getItemProperty(SPUILabelDefinitions.VAR_STATUS)
|
||||
.getValue();
|
||||
final String rolloutName = (String) row.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
||||
|
||||
if (!RolloutStatus.PAUSED.equals(rolloutStatus)) {
|
||||
if (RolloutStatus.READY.equals(rolloutStatus)) {
|
||||
rolloutManagement.startRolloutAsync(rolloutManagement.findRolloutByName(rolloutName));
|
||||
uiNotification.displaySuccess(i18n.get("message.rollout.started", rolloutName));
|
||||
return;
|
||||
}
|
||||
|
||||
final String rolloutName = (String) row.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
||||
|
||||
rolloutManagement.resumeRollout(rolloutManagement.findRolloutById(rolloutId));
|
||||
uiNotification.displaySuccess(i18n.get("message.rollout.resumed", rolloutName));
|
||||
}
|
||||
|
||||
private void startRolloutAsync(final Long rolloutId) {
|
||||
final Item row = getContainerDataSource().getItem(rolloutId);
|
||||
|
||||
final RolloutStatus rolloutStatus = (RolloutStatus) row.getItemProperty(SPUILabelDefinitions.VAR_STATUS)
|
||||
.getValue();
|
||||
|
||||
if (!RolloutStatus.READY.equals(rolloutStatus)) {
|
||||
if (RolloutStatus.PAUSED.equals(rolloutStatus)) {
|
||||
rolloutManagement.resumeRollout(rolloutManagement.findRolloutById(rolloutId));
|
||||
uiNotification.displaySuccess(i18n.get("message.rollout.resumed", rolloutName));
|
||||
return;
|
||||
}
|
||||
|
||||
final String rolloutName = (String) row.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
||||
rolloutManagement.startRolloutAsync(rolloutManagement.findRolloutByName(rolloutName));
|
||||
uiNotification.displaySuccess(i18n.get("message.rollout.started", rolloutName));
|
||||
}
|
||||
|
||||
private void updateRollout(final Long rolloutId) {
|
||||
@@ -518,9 +496,8 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
private final Container.Indexed containerDataSource;
|
||||
|
||||
static {
|
||||
EXPECTED_ROLLOUT_STATUS_ENABLE_BUTTON.put(START_OPTION, RolloutStatus.READY);
|
||||
EXPECTED_ROLLOUT_STATUS_ENABLE_BUTTON.put(RUN_OPTION, RolloutStatus.READY);
|
||||
EXPECTED_ROLLOUT_STATUS_ENABLE_BUTTON.put(PAUSE_OPTION, RolloutStatus.RUNNING);
|
||||
EXPECTED_ROLLOUT_STATUS_ENABLE_BUTTON.put(RESUME_OPTION, RolloutStatus.PAUSED);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -548,9 +525,21 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (RUN_OPTION.equals(cellReference.getPropertyId())) {
|
||||
return getStatus(cellReference, RolloutStatus.READY, RolloutStatus.PAUSED);
|
||||
}
|
||||
|
||||
if (PAUSE_OPTION.equals(cellReference.getPropertyId())) {
|
||||
return getStatus(cellReference, RolloutStatus.RUNNING);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getStatus(final CellReference cellReference, final RolloutStatus... expectedRolloutStatus) {
|
||||
final RolloutStatus currentRolloutStatus = getRolloutStatus(cellReference.getItemId());
|
||||
|
||||
if (expectedRolloutStatus.equals(currentRolloutStatus)) {
|
||||
if (Arrays.asList(expectedRolloutStatus).contains(currentRolloutStatus)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -289,6 +289,21 @@ public final class SPUIComponentIdProvider {
|
||||
*/
|
||||
public static final String ACTION_HISTORY_TABLE_ID = "action.history.tableId";
|
||||
|
||||
/**
|
||||
* Action history table cancel Id.
|
||||
*/
|
||||
public static final String ACTION_HISTORY_TABLE_CANCEL_ID = "action.history.table.action.cancel";
|
||||
|
||||
/**
|
||||
* Action history table force Id.
|
||||
*/
|
||||
public static final String ACTION_HISTORY_TABLE_FORCE_ID = "action.history.table.action.force";
|
||||
|
||||
/**
|
||||
* Action history table force quit Id.
|
||||
*/
|
||||
public static final String ACTION_HISTORY_TABLE_FORCE_QUIT_ID = "action.history.table.action.force.quit";
|
||||
|
||||
/**
|
||||
* Target filter wrapper id.
|
||||
*/
|
||||
@@ -826,7 +841,7 @@ public final class SPUIComponentIdProvider {
|
||||
/**
|
||||
* Rollout start button id.
|
||||
*/
|
||||
public static final String ROLLOUT_START_BUTTON_ID = ROLLOUT_ACTION_ID + ".9";
|
||||
public static final String ROLLOUT_RUN_BUTTON_ID = ROLLOUT_ACTION_ID + ".9";
|
||||
|
||||
/**
|
||||
* Rollout pause button id.
|
||||
@@ -836,12 +851,7 @@ public final class SPUIComponentIdProvider {
|
||||
/**
|
||||
* Rollout resume button id.
|
||||
*/
|
||||
public static final String ROLLOUT_RESUME_BUTTON_ID = ROLLOUT_ACTION_ID + ".11";
|
||||
|
||||
/**
|
||||
* Rollout resume button id.
|
||||
*/
|
||||
public static final String ROLLOUT_UPDATE_BUTTON_ID = ROLLOUT_ACTION_ID + ".12";
|
||||
public static final String ROLLOUT_UPDATE_BUTTON_ID = ROLLOUT_ACTION_ID + ".11";
|
||||
|
||||
/**
|
||||
* Rollout save or start option group id.
|
||||
|
||||
@@ -87,6 +87,11 @@ public final class SPUIDefinitions {
|
||||
*/
|
||||
public static final String ACTION_HIS_TBL_STATUS = "Status";
|
||||
|
||||
/**
|
||||
* Actions column
|
||||
*/
|
||||
public static final String ACTIONS_COLUMN = "Actions";
|
||||
|
||||
/**
|
||||
* Action history messages of particular action update.
|
||||
*/
|
||||
|
||||
@@ -440,9 +440,8 @@ header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
|
||||
header.action=Actions
|
||||
header.action.start=Start
|
||||
header.action.run=Run
|
||||
header.action.pause=Pause
|
||||
header.action.resume=Resume
|
||||
header.action.update=Edit
|
||||
|
||||
distribution.details.header = Distribution set
|
||||
|
||||
@@ -431,9 +431,8 @@ header.swmodules = SwModules
|
||||
header.migrations.step=IsRequiredMigrationStep
|
||||
|
||||
header.action=Actions
|
||||
header.action.start=Start
|
||||
header.action.run=Run
|
||||
header.action.pause=Pause
|
||||
header.action.resume=Resume
|
||||
header.action.update=Edit
|
||||
|
||||
header.rolloutgroup.installed.percentage = % Finished
|
||||
|
||||
@@ -421,9 +421,8 @@ header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
|
||||
header.action=Actions
|
||||
header.action.start=Start
|
||||
header.action.run=Run
|
||||
header.action.pause=Pause
|
||||
header.action.resume=Resume
|
||||
header.action.update=Edit
|
||||
|
||||
header.rolloutgroup.installed.percentage = % Finished
|
||||
|
||||
Reference in New Issue
Block a user