diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlButtonRenderer.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlButtonRenderer.java index 629eb1f4d..b0019086b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlButtonRenderer.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlButtonRenderer.java @@ -14,7 +14,6 @@ public class HtmlButtonRenderer extends ButtonRenderer { // this is to allow the button to disappear, if the text is null button.setVisible(text != null); button.getElement().setId("rollout.action.button.id"); - button.getElement().setTitle("action"); } private void applystyles(Button button) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlLabelRenderer.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlLabelRenderer.java index 8109cec43..5ff1b1814 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlLabelRenderer.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/HtmlLabelRenderer.java @@ -19,7 +19,6 @@ public class HtmlLabelRenderer extends WidgetRenderer { public void render(RendererCellReference cell, String input, VLabel label) { Map map = formatInput(input); String value = map.containsKey("value") ? map.get("value") : null; - String description = map.containsKey("description") ? map.get("description") : null; String style = map.containsKey("style") ? map.get("style") : null; String id = map.containsKey("id") ? map.get("id") : null; @@ -30,7 +29,6 @@ public class HtmlLabelRenderer extends WidgetRenderer { label.setHTML(""); } applyStyle(label, style); - label.setTitle(description); label.getElement().setId(id); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/LinkRenderer.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/LinkRenderer.java index 66814f6dc..016fbf8b5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/LinkRenderer.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/LinkRenderer.java @@ -12,7 +12,6 @@ public class LinkRenderer extends ButtonRenderer { // this is to allow the button to disappear, if the text is null button.setVisible(text != null); button.getElement().setId(new StringBuilder("link").append(".").append(text).toString()); - button.setTitle(text); } private void applystyle(Button button) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/StringDistributionBarRenderer.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/StringDistributionBarRenderer.java index 4c79b0980..1fa2f4efe 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/StringDistributionBarRenderer.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/customrenderers/client/renderers/StringDistributionBarRenderer.java @@ -9,11 +9,16 @@ import org.vaadin.alump.distributionbar.gwt.client.GwtDistributionBar; import org.vaadin.alump.distributionbar.gwt.client.dom.ToolTipPresenter.TooltipClassNameProvider; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Unit; import com.vaadin.client.renderers.WidgetRenderer; import com.vaadin.client.widget.grid.RendererCellReference; public class StringDistributionBarRenderer extends WidgetRenderer { + private static final String STATUS_BAR_PART = "status-bar-part-"; + private static final String FINISHED = "FINISHED"; + private static final String SCHEDULED = "SCHEDULED"; + private static final String ROLLOUT_STATUS_PROGRESS_BAR_ID = "rollout.status.progress.bar.id"; private String uiWidgetClassName; @Override @@ -28,24 +33,26 @@ public class StringDistributionBarRenderer extends WidgetRenderer map = formatData(input); if (!map.isEmpty()) { if (isNoTargets(map.values())) { - setBarPartSize(widget, "SCHEDULED".toLowerCase(), 0, 0); - setBarPartSize(widget, "FINISHED".toLowerCase(), 0, 1); + setBarPartSize(widget, SCHEDULED.toLowerCase(), 0, 0); + setBarPartSize(widget, FINISHED.toLowerCase(), 0, 1); } else { setThePartDetails(widget, map); } } - widget.getElement().setId("rollout.status.progress.bar.id"); - widget.updateParts(); + widget.getElement().setId(ROLLOUT_STATUS_PROGRESS_BAR_ID); + widget.getElement().getStyle().setWidth(100, Unit.PCT); + widget.getElement().getStyle().setHeight(100, Unit.PCT); } + widget.updateParts(); } private void setThePartDetails(GwtDistributionBar widget, Map map) { @@ -93,7 +100,7 @@ public class StringDistributionBarRenderer extends WidgetRenderer() { @@ -283,43 +276,44 @@ public class RolloutGroupListGrid extends AbstractSimpleGrid { } }); } - - private String convertRolloutGroupStatusToString(final RolloutGroupStatus value) { String result = null; switch (value) { case FINISHED: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.CHECK_CIRCLE.getCodepoint()), - value.name().toLowerCase(), "statusIconGreen", SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.CHECK_CIRCLE.getCodepoint()), "statusIconGreen", + SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); break; case SCHEDULED: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.BULLSEYE.getCodepoint()), - value.name().toLowerCase(), "statusIconBlue", SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.BULLSEYE.getCodepoint()), "statusIconBlue", + SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); break; case RUNNING: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.ADJUST.getCodepoint()), - value.name().toLowerCase(), "statusIconYellow", SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.ADJUST.getCodepoint()), "statusIconYellow", + SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); break; case READY: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.DOT_CIRCLE_O.getCodepoint()), - value.name().toLowerCase(), "statusIconLightBlue", SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.DOT_CIRCLE_O.getCodepoint()), "statusIconLightBlue", + SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); break; case ERROR: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), - value.name().toLowerCase(), "statusIconRed", SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), "statusIconRed", + SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); break; default: break; } return result; - + } - private void addDetailStatusColumn() { - getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setRenderer( - new StringDistributionBarRenderer(), + getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setRenderer(new StringDistributionBarRenderer(), new Converter() { private static final long serialVersionUID = 2660476405836705932L; @@ -357,10 +351,40 @@ public class RolloutGroupListGrid extends AbstractSimpleGrid { columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_DATE); columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_BY); columnsToBeHidden.add(SPUILabelDefinitions.VAR_DESC); - columnsToBeHidden.add(SPUILabelDefinitions.VAR_ID); for (Object propertyId : columnsToBeHidden) { getColumn(propertyId).setHidden(true); } } + @Override + public void browserWindowResized(BrowserWindowResizeEvent event) { + // Intermediate solution for the column width problem for + // SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS column + // Readding the column + recalculateColumnWidths(); + removeColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS); + addColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS); + getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS) + .setHeaderCaption(i18n.get("header.detail.status")); + setColumnProperties(); + addDetailStatusColumn(); + } + + @Override + protected CellDescriptionGenerator getDescriptionGenerator() { + return cell -> getDescription(cell); + }; + + private String getDescription(CellReference cell) { + if (SPUILabelDefinitions.VAR_STATUS.equals(cell.getPropertyId())) { + return cell.getProperty().getValue().toString().toLowerCase(); + } else if (SPUILabelDefinitions.ACTION.equals(cell.getPropertyId())) { + return SPUILabelDefinitions.ACTION.toLowerCase(); + } else if (SPUILabelDefinitions.VAR_NAME.equals(cell.getPropertyId())) { + return cell.getProperty().getValue().toString(); + } else { + return null; + } + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutGroupTargetsListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutGroupTargetsListGrid.java index 1ae1b8788..c96d93d77 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutGroupTargetsListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutGroupTargetsListGrid.java @@ -31,6 +31,8 @@ import com.vaadin.data.util.converter.Converter; import com.vaadin.server.FontAwesome; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; +import com.vaadin.ui.Grid.CellDescriptionGenerator; +import com.vaadin.ui.Grid.CellReference; @SpringComponent @ViewScope @@ -99,28 +101,24 @@ public class RolloutGroupTargetsListGrid extends AbstractSimpleGrid { @Override protected void setColumnExpandRatio() { - getColumn(SPUILabelDefinitions.VAR_NAME).setExpandRatio(2); - getColumn(SPUILabelDefinitions.VAR_NAME).setMinimumWidth(200); + getColumn(SPUILabelDefinitions.VAR_NAME).setMinimumWidth(20); + getColumn(SPUILabelDefinitions.VAR_NAME).setMaximumWidth(250); - getColumn(SPUILabelDefinitions.VAR_STATUS).setExpandRatio(0); - getColumn(SPUILabelDefinitions.VAR_STATUS).setMinimumWidth(150); + getColumn(SPUILabelDefinitions.VAR_STATUS).setMinimumWidth(50); + getColumn(SPUILabelDefinitions.VAR_STATUS).setMaximumWidth(100); - getColumn(SPUILabelDefinitions.VAR_CREATED_DATE).setExpandRatio(1); - getColumn(SPUILabelDefinitions.VAR_CREATED_DATE).setMaximumWidth(250); + getColumn(SPUILabelDefinitions.VAR_CREATED_DATE).setMaximumWidth(150); + getColumn(SPUILabelDefinitions.VAR_CREATED_DATE).setMinimumWidth(50); - getColumn(SPUILabelDefinitions.VAR_CREATED_BY).setExpandRatio(1); - getColumn(SPUILabelDefinitions.VAR_CREATED_BY).setMaximumWidth(250); + getColumn(SPUILabelDefinitions.VAR_CREATED_BY).setMaximumWidth(150); + getColumn(SPUILabelDefinitions.VAR_CREATED_BY).setMinimumWidth(50); - getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_DATE).setExpandRatio(1); - getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_DATE).setMaximumWidth(250); + getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_DATE).setMaximumWidth(150); + getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_DATE).setMinimumWidth(20); - getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_BY).setExpandRatio(1); - getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_BY).setMaximumWidth(250); + getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_BY).setMaximumWidth(150); + getColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_BY).setMinimumWidth(20); - getColumn(SPUILabelDefinitions.VAR_DESC).setExpandRatio(1); - getColumn(SPUILabelDefinitions.VAR_DESC).setMaximumWidth(300); - - getColumn(SPUILabelDefinitions.ASSIGNED_DISTRIBUTION_NAME_VER).setExpandRatio(0); setFrozenColumnCount(getColumns().size()); } @@ -151,8 +149,8 @@ public class RolloutGroupTargetsListGrid extends AbstractSimpleGrid { columnList.add(SPUILabelDefinitions.VAR_CREATED_BY); columnList.add(SPUILabelDefinitions.VAR_LAST_MODIFIED_DATE); columnList.add(SPUILabelDefinitions.VAR_LAST_MODIFIED_BY); - columnList.add(SPUILabelDefinitions.VAR_DESC); columnList.add(SPUILabelDefinitions.VAR_STATUS); + columnList.add(SPUILabelDefinitions.VAR_DESC); setColumnOrder(columnList.toArray()); alignColumns(); } @@ -182,77 +180,77 @@ public class RolloutGroupTargetsListGrid extends AbstractSimpleGrid { } private void addStatusCoulmn() { - getColumn(SPUILabelDefinitions.VAR_STATUS).setRenderer(new HtmlLabelRenderer(), new Converter() { - private static final long serialVersionUID = 1L; + getColumn(SPUILabelDefinitions.VAR_STATUS).setRenderer(new HtmlLabelRenderer(), + new Converter() { + private static final long serialVersionUID = 1L; - @Override - public Status convertToModel(final String value, final Class targetType, - final Locale locale) { - return null; - } - - @Override - public String convertToPresentation(final Status status, final Class targetType, - final Locale locale) { - String result = null; - if (status == null) { - // Actions are not created for targets when rollout's status - // is READY and when duplicate assignment is done. - // In these cases display a appropriate status with - // description - return getStatus(); - } else { - switch (status) { - case FINISHED: - result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.CHECK_CIRCLE.getCodepoint()), status.name().toLowerCase(), - "statusIconGreen", null); - break; - case SCHEDULED: - result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.BULLSEYE.getCodepoint()), status.name().toLowerCase(), - "statusIconBlue", null); - break; - case RUNNING: - case RETRIEVED: - case WARNING: - case DOWNLOAD: - result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.ADJUST.getCodepoint()), status.name().toLowerCase(), - "statusIconYellow", null); - break; - case CANCELING: - result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.TIMES_CIRCLE.getCodepoint()), status.name().toLowerCase(), - "statusIconPending", null); - break; - case CANCELED: - result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.TIMES_CIRCLE.getCodepoint()), status.name().toLowerCase(), - "statusIconGreen", null); - break; - case ERROR: - result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), - status.name().toLowerCase(), "statusIconRed", null); - break; - default: - break; + @Override + public Status convertToModel(final String value, final Class targetType, + final Locale locale) { + return null; } - return result; - } - } - @Override - public Class getModelType() { - return Status.class; - } + @Override + public String convertToPresentation(final Status status, final Class targetType, + final Locale locale) { + String result = null; + if (status == null) { + // Actions are not created for targets when + // rollout's status + // is READY and when duplicate assignment is done. + // In these cases display a appropriate status with + // description + return getStatus(); + } else { + switch (status) { + case FINISHED: + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.CHECK_CIRCLE.getCodepoint()), "statusIconGreen", + null); + break; + case SCHEDULED: + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.BULLSEYE.getCodepoint()), "statusIconBlue", null); + break; + case RUNNING: + case RETRIEVED: + case WARNING: + case DOWNLOAD: + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.ADJUST.getCodepoint()), "statusIconYellow", null); + break; + case CANCELING: + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.TIMES_CIRCLE.getCodepoint()), "statusIconPending", + null); + break; + case CANCELED: + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.TIMES_CIRCLE.getCodepoint()), "statusIconGreen", + null); + break; + case ERROR: + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), + "statusIconRed", null); + break; + default: + break; + } + return result; + } + } - @Override - public Class getPresentationType() { - return String.class; - } - }); + @Override + public Class getModelType() { + return Status.class; + } + + @Override + public Class getPresentationType() { + return String.class; + } + }); } private String getStatus() { @@ -260,14 +258,39 @@ public class RolloutGroupTargetsListGrid extends AbstractSimpleGrid { ? rolloutUIState.getRolloutGroup().get() : null; if (rolloutGroup != null && rolloutGroup.getStatus() == RolloutGroupStatus.READY) { return HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.DOT_CIRCLE_O.getCodepoint()), RolloutGroupStatus.READY.toString().toLowerCase(), - "statusIconLightBlue", null); + Integer.toString(FontAwesome.DOT_CIRCLE_O.getCodepoint()), "statusIconLightBlue", null); } else if (rolloutGroup != null && rolloutGroup.getStatus() == RolloutGroupStatus.FINISHED) { - String ds = rolloutUIState.getRolloutDistributionSet().isPresent()? rolloutUIState.getRolloutDistributionSet() .get():""; - ds = ds.replace(":", "-"); return HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.MINUS_CIRCLE.getCodepoint()), - i18n.get("message.dist.already.assigned", new Object[] { ds }), "statusIconBlue", null); + Integer.toString(FontAwesome.MINUS_CIRCLE.getCodepoint()), "statusIconBlue", null); + } else { + return HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.QUESTION_CIRCLE.getCodepoint()), "statusIconBlue", null); + } + } + + @Override + protected CellDescriptionGenerator getDescriptionGenerator() { + return cell -> getDescription(cell); + }; + + private String getDescription(CellReference cell) { + if (SPUILabelDefinitions.VAR_STATUS.equals(cell.getPropertyId())) { + if (null != cell.getProperty().getValue()) { + return cell.getProperty().getValue().toString().toLowerCase(); + + } else { + final RolloutGroup rolloutGroup = rolloutUIState.getRolloutGroup().isPresent() + ? rolloutUIState.getRolloutGroup().get() : null; + if (rolloutGroup != null && rolloutGroup.getStatus() == RolloutGroupStatus.READY) { + return RolloutGroupStatus.READY.toString().toLowerCase(); + } else if (rolloutGroup != null && rolloutGroup.getStatus() == RolloutGroupStatus.FINISHED) { + String ds = rolloutUIState.getRolloutDistributionSet().isPresent() + ? rolloutUIState.getRolloutDistributionSet().get() : ""; + return i18n.get("message.dist.already.assigned", new Object[] { ds }); + } else { + return "unknown"; + } + } } return null; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutListGrid.java index b50387d55..e862d6f07 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutListGrid.java @@ -44,15 +44,19 @@ import com.vaadin.data.util.PropertyValueGenerator; import com.vaadin.data.util.converter.Converter; import com.vaadin.server.AbstractClientConnector; import com.vaadin.server.FontAwesome; +import com.vaadin.server.Page; +import com.vaadin.server.Page.BrowserWindowResizeEvent; +import com.vaadin.server.Page.BrowserWindowResizeListener; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.UI; import com.vaadin.ui.Window; +import com.vaadin.ui.Grid.CellReference; import com.vaadin.ui.renderers.ClickableRenderer.RendererClickEvent; @SpringComponent @ViewScope -public class RolloutListGrid extends AbstractSimpleGrid { +public class RolloutListGrid extends AbstractSimpleGrid implements BrowserWindowResizeListener { private static final long serialVersionUID = 4060904914954370524L; @Autowired @@ -81,8 +85,8 @@ public class RolloutListGrid extends AbstractSimpleGrid { protected void init() { super.init(); eventBus.subscribe(this); - setColumnReorderingAllowed(true); - isColumnReorderingAllowed(); + Page.getCurrent().addBrowserWindowResizeListener(this); + } @PreDestroy @@ -165,59 +169,26 @@ public class RolloutListGrid extends AbstractSimpleGrid { } @Override - protected String getTableId() { - return SPUIComponetIdProvider.ROLLOUT_LIST_TABLE_ID; - } + protected void setColumnExpandRatio() { + getColumn(SPUILabelDefinitions.VAR_NAME).setMinimumWidth(40); + getColumn(SPUILabelDefinitions.VAR_NAME).setMaximumWidth(150); - @Override - protected void setColumnProperties() { - List columnList = new ArrayList<>(); - columnList.add(SPUILabelDefinitions.VAR_NAME); - columnList.add(SPUILabelDefinitions.VAR_DIST_NAME_VERSION); - columnList.add(SPUILabelDefinitions.VAR_STATUS); - columnList.add(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS); - columnList.add(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS); - columnList.add(SPUILabelDefinitions.VAR_TOTAL_TARGETS); - columnList.add(SPUILabelDefinitions.ACTION); - columnList.add(SPUILabelDefinitions.VAR_CREATED_DATE); - columnList.add(SPUILabelDefinitions.VAR_CREATED_USER); - columnList.add(SPUILabelDefinitions.VAR_MODIFIED_DATE); - columnList.add(SPUILabelDefinitions.VAR_MODIFIED_BY); - columnList.add(SPUILabelDefinitions.VAR_DESC); - setColumnOrder(columnList.toArray()); + getColumn(SPUILabelDefinitions.VAR_DIST_NAME_VERSION).setMinimumWidth(40); + getColumn(SPUILabelDefinitions.VAR_DIST_NAME_VERSION).setMaximumWidth(150); - alignColumns(); - } + getColumn(SPUILabelDefinitions.VAR_STATUS).setMinimumWidth(75); + getColumn(SPUILabelDefinitions.VAR_STATUS).setMaximumWidth(75); - private void alignColumns() { - setCellStyleGenerator(new CellStyleGenerator() { - private static final long serialVersionUID = 5573570647129792429L; + getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS).setMinimumWidth(40); + getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS).setMaximumWidth(100); - @Override - public String getStyle(final CellReference cellReference) { - String[] coulmnNames = { SPUILabelDefinitions.VAR_STATUS, - SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS, SPUILabelDefinitions.ACTION }; - if (Arrays.asList(coulmnNames).contains(cellReference.getPropertyId())) { - return "centeralign"; - } - return null; - } - }); - } + getColumn(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setMinimumWidth(40); + getColumn(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setMaximumWidth(100); - @Override - protected void setHiddenColumns() { - List columnsToBeHidden = new ArrayList<>(); - columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_DATE); - columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_USER); - columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_DATE); - columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_BY); - columnsToBeHidden.add(SPUILabelDefinitions.VAR_DESC); - columnsToBeHidden.add(SPUILabelDefinitions.VAR_ID); + getColumn(SPUILabelDefinitions.ACTION).setMinimumWidth(75); + getColumn(SPUILabelDefinitions.ACTION).setMaximumWidth(75); - for (Object propertyId : columnsToBeHidden) { - getColumn(propertyId).setHidden(true); - } + setFrozenColumnCount(getColumns().size()); } @Override @@ -238,30 +209,44 @@ public class RolloutListGrid extends AbstractSimpleGrid { } @Override - protected void setColumnExpandRatio() { - getColumn(SPUILabelDefinitions.VAR_NAME).setExpandRatio(1); - getColumn(SPUILabelDefinitions.VAR_NAME).setMinimumWidth(40); - getColumn(SPUILabelDefinitions.VAR_NAME).setMaximumWidth(150); + protected String getTableId() { + return SPUIComponetIdProvider.ROLLOUT_LIST_TABLE_ID; + } - getColumn(SPUILabelDefinitions.VAR_DIST_NAME_VERSION).setExpandRatio(1); - getColumn(SPUILabelDefinitions.VAR_DIST_NAME_VERSION).setMinimumWidth(40); - getColumn(SPUILabelDefinitions.VAR_DIST_NAME_VERSION).setMaximumWidth(150); + @Override + protected void setColumnProperties() { + List columnList = new ArrayList<>(); + columnList.add(SPUILabelDefinitions.VAR_NAME); + columnList.add(SPUILabelDefinitions.VAR_DIST_NAME_VERSION); + columnList.add(SPUILabelDefinitions.VAR_STATUS); + columnList.add(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS); + columnList.add(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS); + columnList.add(SPUILabelDefinitions.VAR_TOTAL_TARGETS); + columnList.add(SPUILabelDefinitions.ACTION); - getColumn(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setExpandRatio(0); - getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS).setExpandRatio(0); + columnList.add(SPUILabelDefinitions.VAR_CREATED_DATE); + columnList.add(SPUILabelDefinitions.VAR_CREATED_USER); + columnList.add(SPUILabelDefinitions.VAR_MODIFIED_DATE); + columnList.add(SPUILabelDefinitions.VAR_MODIFIED_BY); + columnList.add(SPUILabelDefinitions.VAR_DESC); + setColumnOrder(columnList.toArray()); + alignColumns(); + } - getColumn(SPUILabelDefinitions.VAR_CREATED_DATE).setExpandRatio(0); - getColumn(SPUILabelDefinitions.VAR_CREATED_USER).setExpandRatio(0); - getColumn(SPUILabelDefinitions.VAR_MODIFIED_DATE).setExpandRatio(0); - getColumn(SPUILabelDefinitions.VAR_MODIFIED_BY).setExpandRatio(0); - getColumn(SPUILabelDefinitions.VAR_DESC).setExpandRatio(0); - getColumn(SPUILabelDefinitions.VAR_STATUS).setExpandRatio(0); - - getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setExpandRatio(2); + private void alignColumns() { + setCellStyleGenerator(new CellStyleGenerator() { + private static final long serialVersionUID = 5573570647129792429L; - getColumn(SPUILabelDefinitions.ACTION).setExpandRatio(0); - getColumn(SPUILabelDefinitions.ACTION).setMinimumWidth(90); - setFrozenColumnCount(getColumns().size()); + @Override + public String getStyle(final CellReference cellReference) { + String[] coulmnNames = { SPUILabelDefinitions.VAR_STATUS, + SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS, SPUILabelDefinitions.ACTION }; + if (Arrays.asList(coulmnNames).contains(cellReference.getPropertyId())) { + return "centeralign"; + } + return null; + } + }); } @Override @@ -379,42 +364,44 @@ public class RolloutListGrid extends AbstractSimpleGrid { String result = null; switch (value) { case FINISHED: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.CHECK_CIRCLE.getCodepoint()), - value.name().toLowerCase(), "statusIconGreen", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.CHECK_CIRCLE.getCodepoint()), "statusIconGreen", + SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case PAUSED: result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.PAUSE.getCodepoint()), - value.name().toLowerCase(), "statusIconBlue", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); + "statusIconBlue", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case RUNNING: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(null, value.name().toLowerCase(), "yellowSpinner", + result = HawkbitCommonUtil.getStatusLabelDetailsInString(null, "yellowSpinner", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case READY: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.DOT_CIRCLE_O.getCodepoint()), - value.name().toLowerCase(), "statusIconLightBlue", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); + result = HawkbitCommonUtil.getStatusLabelDetailsInString( + Integer.toString(FontAwesome.DOT_CIRCLE_O.getCodepoint()), "statusIconLightBlue", + SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case STOPPED: result = HawkbitCommonUtil.getStatusLabelDetailsInString(Integer.toString(FontAwesome.STOP.getCodepoint()), - value.name().toLowerCase(), "statusIconRed", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); + "statusIconRed", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case CREATING: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(null, value.name().toLowerCase(), "greySpinner", + result = HawkbitCommonUtil.getStatusLabelDetailsInString(null, "greySpinner", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case STARTING: - result = HawkbitCommonUtil.getStatusLabelDetailsInString(null, value.name().toLowerCase(), "blueSpinner", + result = HawkbitCommonUtil.getStatusLabelDetailsInString(null, "blueSpinner", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case ERROR_CREATING: result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), value.name().toLowerCase(), - "statusIconRed", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); + Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), "statusIconRed", + SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; case ERROR_STARTING: result = HawkbitCommonUtil.getStatusLabelDetailsInString( - Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), value.name().toLowerCase(), - "statusIconRed", SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); + Integer.toString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()), "statusIconRed", + SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); break; default: break; @@ -469,4 +456,50 @@ public class RolloutListGrid extends AbstractSimpleGrid { } } + @Override + public void browserWindowResized(BrowserWindowResizeEvent event) { + // Intermediate solution for the column width problem for + // SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS column + // Readding the column + recalculateColumnWidths(); + removeColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS); + addColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS); + getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS) + .setHeaderCaption(i18n.get("header.detail.status")); + setColumnProperties(); + addDetailStatusColumn(); + } + + @Override + protected void setHiddenColumns() { + List columnsToBeHidden = new ArrayList<>(); + columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_DATE); + columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_USER); + columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_DATE); + columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_BY); + columnsToBeHidden.add(SPUILabelDefinitions.VAR_DESC); + columnsToBeHidden.add(SPUILabelDefinitions.VAR_ID); + for (Object propertyId : columnsToBeHidden) { + getColumn(propertyId).setHidden(true); + } + + } + + @Override + protected CellDescriptionGenerator getDescriptionGenerator() { + return cell -> getDescription(cell); + }; + + private String getDescription(CellReference cell) { + if (SPUILabelDefinitions.VAR_STATUS.equals(cell.getPropertyId())) { + return cell.getProperty().getValue().toString().toLowerCase(); + } else if (SPUILabelDefinitions.ACTION.equals(cell.getPropertyId())) { + return SPUILabelDefinitions.ACTION.toLowerCase(); + } else if (SPUILabelDefinitions.VAR_NAME.equals(cell.getPropertyId())) { + return cell.getProperty().getValue().toString(); + } else { + return null; + } + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java index cf1e55c00..e9e287fe3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java @@ -1377,22 +1377,17 @@ public final class HawkbitCommonUtil { * * @param value * label value - * @param description - * label description * @param style * label style * @param id * label id * @return */ - public static String getStatusLabelDetailsInString(String value, String description, String style, String id) { + public static String getStatusLabelDetailsInString(String value, String style, String id) { StringBuilder val = new StringBuilder(); if (!Strings.isNullOrEmpty(value)) { val.append("value:").append(value).append(","); } - if (!Strings.isNullOrEmpty(description)) { - val.append("description:").append(description).append(","); - } if (!Strings.isNullOrEmpty(style)) { val.append("style:").append(style).append(","); } diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/rollout.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/rollout.scss index 373e6d281..712e04ec1 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/rollout.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/rollout.scss @@ -70,7 +70,11 @@ } .v-grid-cell.frozen{ - box-shadow: none!important; + box-shadow: none !important; + } + + .v-grid-cell.frozen + th{ + border-left: $v-grid-border-size solid $widget-border-color ; } } diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/statusprogressbar.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/statusprogressbar.scss index b87e1849c..9cc628022 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/statusprogressbar.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/statusprogressbar.scss @@ -62,8 +62,4 @@ -webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); } - .status-bar{ - width:100%; - height:100%; - } } \ No newline at end of file