grid column resize : intermediate solution

Signed-off-by: asharani-murugesh <asharani.murugesh@in.bosch.com>
This commit is contained in:
asharani-murugesh
2016-02-25 14:47:56 +01:00
parent d6c6712af7
commit f9dde70341
11 changed files with 322 additions and 234 deletions

View File

@@ -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) {

View File

@@ -19,7 +19,6 @@ public class HtmlLabelRenderer extends WidgetRenderer<String, VLabel> {
public void render(RendererCellReference cell, String input, VLabel label) {
Map<String, String> 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<String, VLabel> {
label.setHTML("<span></span>");
}
applyStyle(label, style);
label.setTitle(description);
label.getElement().setId(id);
}

View File

@@ -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) {

View File

@@ -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<String, GwtDistributionBar> {
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<String, GwtDis
return gwt;
}
@Override
public void render(RendererCellReference cell, String input, GwtDistributionBar widget) {
if (null != input) {
widget.setNumberOfParts(2);
widget.addStyleName("status-bar");
Map<String, Long> 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<String, Long> map) {
@@ -93,7 +100,7 @@ public class StringDistributionBarRenderer extends WidgetRenderer<String, GwtDis
final int index) {
bar.setPartSize(index, count);
bar.setPartTooltip(index, statusName);
bar.setPartStyleName(index, index, "status-bar-part-" + statusName);
bar.setPartStyleName(index, index, STATUS_BAR_PART + statusName);
}
public String getUiWidgetClassName() {

View File

@@ -12,6 +12,7 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import com.vaadin.data.Container;
import com.vaadin.data.Container.Indexed;
import com.vaadin.shared.ui.grid.HeightMode;
import com.vaadin.ui.Grid;
import com.vaadin.ui.themes.ValoTheme;
@@ -33,12 +34,15 @@ public abstract class AbstractSimpleGrid extends Grid {
addStyleName(ValoTheme.TABLE_NO_VERTICAL_LINES);
addStyleName(ValoTheme.TABLE_SMALL);
addNewContainerDS();
setHeight("100%");
setHeightMode(HeightMode.CSS);
setSelectionMode(SelectionMode.NONE);
setColumnReorderingAllowed(true);
addNewContainerDS();
}
private void addNewContainerDS() {
public void addNewContainerDS() {
final Container container = createContainer();
setContainerDataSource((Indexed) container);
addContainerProperties();
@@ -46,12 +50,17 @@ public abstract class AbstractSimpleGrid extends Grid {
setColumnProperties();
setColumnHeaderNames();
addColumnRenderes();
CellDescriptionGenerator cellDescriptionGenerator = getDescriptionGenerator();
if (getDescriptionGenerator() != null) {
setCellDescriptionGenerator(cellDescriptionGenerator);
}
// Allow column hiding
for (Column c : getColumns()) {
c.setHidable(true);
}
setHiddenColumns();
int size = 0;
if (container != null) {
size = container.size();
@@ -59,7 +68,6 @@ public abstract class AbstractSimpleGrid extends Grid {
if (size == 0) {
setData(SPUIDefinitions.NO_DATA);
}
}
protected abstract Container createContainer();
@@ -77,4 +85,6 @@ public abstract class AbstractSimpleGrid extends Grid {
protected abstract void addColumnRenderes();
protected abstract void setHiddenColumns();
protected abstract CellDescriptionGenerator getDescriptionGenerator();
}

View File

@@ -36,13 +36,18 @@ import com.vaadin.data.Container;
import com.vaadin.data.Item;
import com.vaadin.data.util.converter.Converter;
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.Grid.CellDescriptionGenerator;
import com.vaadin.ui.Grid.CellReference;
import com.vaadin.ui.renderers.ClickableRenderer.RendererClickEvent;
@SpringComponent
@ViewScope
public class RolloutGroupListGrid extends AbstractSimpleGrid {
public class RolloutGroupListGrid extends AbstractSimpleGrid implements BrowserWindowResizeListener {
private static final long serialVersionUID = 4060904914954370524L;
@Autowired
@@ -64,6 +69,7 @@ public class RolloutGroupListGrid extends AbstractSimpleGrid {
@PostConstruct
protected void init() {
super.init();
Page.getCurrent().addBrowserWindowResizeListener(this);
eventBus.subscribe(this);
}
@@ -115,7 +121,6 @@ public class RolloutGroupListGrid extends AbstractSimpleGrid {
@Override
protected void addContainerProperties() {
final LazyQueryContainer rolloutGroupGridContainer = (LazyQueryContainer) getContainerDataSource();
rolloutGroupGridContainer.addContainerProperty(SPUILabelDefinitions.VAR_ID, String.class, null, false, false);
rolloutGroupGridContainer.addContainerProperty(SPUILabelDefinitions.VAR_NAME, String.class, "", false, false);
rolloutGroupGridContainer.addContainerProperty(SPUILabelDefinitions.VAR_DESC, String.class, null, false, false);
rolloutGroupGridContainer.addContainerProperty(SPUILabelDefinitions.VAR_STATUS, RolloutGroupStatus.class, null,
@@ -146,35 +151,24 @@ public class RolloutGroupListGrid extends AbstractSimpleGrid {
@Override
protected void setColumnExpandRatio() {
getColumn(SPUILabelDefinitions.VAR_NAME).setExpandRatio(1);
getColumn(SPUILabelDefinitions.VAR_NAME).setMinimumWidth(40);
getColumn(SPUILabelDefinitions.VAR_NAME).setMaximumWidth(150);
getColumn(SPUILabelDefinitions.VAR_NAME).setMaximumWidth(200);
getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS).setExpandRatio(1);
getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS).setMinimumWidth(40);
getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS).setMaximumWidth(100);
getColumn(SPUILabelDefinitions.VAR_STATUS).setExpandRatio(0);
getColumn(SPUILabelDefinitions.VAR_STATUS).setMinimumWidth(75);
getColumn(SPUILabelDefinitions.VAR_STATUS).setMaximumWidth(75);
getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setExpandRatio(2);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_INSTALLED_PERCENTAGE).setExpandRatio(1);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_INSTALLED_PERCENTAGE).setMinimumWidth(40);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_INSTALLED_PERCENTAGE).setMaximumWidth(100);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_ERROR_THRESHOLD).setExpandRatio(1);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_ERROR_THRESHOLD).setMinimumWidth(40);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_ERROR_THRESHOLD).setMaximumWidth(100);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_THRESHOLD).setExpandRatio(1);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_THRESHOLD).setMinimumWidth(40);
getColumn(SPUILabelDefinitions.ROLLOUT_GROUP_THRESHOLD).setMaximumWidth(100);
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_ID).setExpandRatio(0);
setFrozenColumnCount(7);
}
@@ -254,7 +248,6 @@ public class RolloutGroupListGrid extends AbstractSimpleGrid {
eventBus.publish(this, RolloutEvent.SHOW_ROLLOUT_GROUP_TARGETS);
}
private void addStatusCoulmn() {
getColumn(SPUILabelDefinitions.VAR_STATUS).setRenderer(new HtmlLabelRenderer(),
new Converter<String, RolloutGroupStatus>() {
@@ -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<String, TotalTargetCountStatus>() {
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;
}
}
}

View File

@@ -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<String, Status>() {
private static final long serialVersionUID = 1L;
getColumn(SPUILabelDefinitions.VAR_STATUS).setRenderer(new HtmlLabelRenderer(),
new Converter<String, Status>() {
private static final long serialVersionUID = 1L;
@Override
public Status convertToModel(final String value, final Class<? extends Status> targetType,
final Locale locale) {
return null;
}
@Override
public String convertToPresentation(final Status status, final Class<? extends String> 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<? extends Status> targetType,
final Locale locale) {
return null;
}
return result;
}
}
@Override
public Class<Status> getModelType() {
return Status.class;
}
@Override
public String convertToPresentation(final Status status, final Class<? extends String> 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<String> getPresentationType() {
return String.class;
}
});
@Override
public Class<Status> getModelType() {
return Status.class;
}
@Override
public Class<String> 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;
}

View File

@@ -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<Object> 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<Object> 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<Object> 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<Object> 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;
}
}
}

View File

@@ -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(",");
}

View File

@@ -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 ;
}
}

View File

@@ -62,8 +62,4 @@
-webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
}
.status-bar{
width:100%;
height:100%;
}
}