diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/DistributionBarRendererWidgetSet.gwt.xml b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/DistributionBarRendererWidgetSet.gwt.xml new file mode 100644 index 000000000..7ac135682 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/DistributionBarRendererWidgetSet.gwt.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/client/StringDistributionBarRendererConnector.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/client/StringDistributionBarRendererConnector.java new file mode 100644 index 000000000..8fc205120 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/client/StringDistributionBarRendererConnector.java @@ -0,0 +1,17 @@ +package org.eclipse.hawkbit.ui.distributionbar.client; + + +import com.vaadin.client.connectors.AbstractRendererConnector; +import com.vaadin.shared.ui.Connect; + +@Connect(org.eclipse.hawkbit.ui.distributionbar.renderers.StringDistributionBarRenderer.class) +public class StringDistributionBarRendererConnector extends + AbstractRendererConnector { + + private static final long serialVersionUID = 7697966991925490786L; + + @Override + public org.eclipse.hawkbit.ui.distributionbar.client.renderers.StringDistributionBarRenderer getRenderer() { + return (org.eclipse.hawkbit.ui.distributionbar.client.renderers.StringDistributionBarRenderer) super.getRenderer(); + } +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/client/renderers/StringDistributionBarRenderer.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/client/renderers/StringDistributionBarRenderer.java new file mode 100644 index 000000000..3f7a4cb98 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/client/renderers/StringDistributionBarRenderer.java @@ -0,0 +1,77 @@ +package org.eclipse.hawkbit.ui.distributionbar.client.renderers; + +import java.util.HashMap; +import java.util.Map; + +import org.vaadin.alump.distributionbar.gwt.client.GwtDistributionBar; + +import com.google.gwt.core.client.GWT; +import com.vaadin.client.renderers.WidgetRenderer; +import com.vaadin.client.widget.grid.RendererCellReference; + +public class StringDistributionBarRenderer extends WidgetRenderer { + + @Override + public GwtDistributionBar createWidget() { + return GWT.create(GwtDistributionBar.class); + } + + @Override + public void render(RendererCellReference cell, String input, GwtDistributionBar widget) { + if (null != input) { + widget.setNumberOfParts(2); + Map map = formatData(input); + if (!map.isEmpty()) { + final Long notStartedTargetsCount = map.keySet().contains("NOTSTARTED") ? map.get("NOTSTARTED") : 0L; + final Long runningTargetsCount = map.keySet().contains("RUNNING") ? map.get("RUNNING") : 0L; + final Long scheduledTargetsCount = map.keySet().contains("SCHEDULED") ? map.get("SCHEDULED") : 0L; + final Long errorTargetsCount = map.keySet().contains("ERROR") ? map.get("ERROR") : 0L; + final Long finishedTargetsCount = map.keySet().contains("FINISHED") ? map.get("FINISHED") : 0L; + final Long cancelledTargetsCount = map.keySet().contains("CANCELLED") ? map.get("CANCELLED") : 0L; + if (isNoTargets(errorTargetsCount, notStartedTargetsCount, runningTargetsCount, scheduledTargetsCount, + finishedTargetsCount, cancelledTargetsCount)) { + setBarPartSize(widget, "SCHEDULED".toLowerCase(), 0, 0); + setBarPartSize(widget, "FINISHED".toString().toLowerCase(), 0, 1); + + } else { + widget.setNumberOfParts(6); + setBarPartSize(widget, "NOTSTARTED".toString().toLowerCase(), notStartedTargetsCount.intValue(), 0); + setBarPartSize(widget, "SCHEDULED".toString().toLowerCase(), scheduledTargetsCount.intValue(), 1); + setBarPartSize(widget, "RUNNING".toLowerCase(), scheduledTargetsCount.intValue(), 2); + setBarPartSize(widget, "ERROR".toLowerCase(), errorTargetsCount.intValue(), 3); + setBarPartSize(widget, "FINISHED".toLowerCase(), finishedTargetsCount.intValue(), 4); + setBarPartSize(widget, "CANCELLED".toLowerCase(), cancelledTargetsCount.intValue(), 5); + } + } + widget.updateParts(); + } + } + + private Map formatData(String input) { + Map details = new HashMap<>(); + String[] tempData = input.split(","); + for (String statusWithCount : tempData) { + String[] statusWithCountList = statusWithCount.split(":"); + details.put(statusWithCountList[0], new Long(statusWithCountList[1])); + } + return details; + } + + private static boolean isNoTargets(Long errorTargetsCount, Long notStartedTargetsCount, Long runningTargetsCount, + Long scheduledTargetsCount, Long finishedTargetsCount, Long cancelledTargetsCount) { + if (errorTargetsCount == 0 && notStartedTargetsCount == 0 && runningTargetsCount == 0 + && scheduledTargetsCount == 0 && finishedTargetsCount == 0 && cancelledTargetsCount == 0) { + return true; + } + return false; + } + + public void setBarPartSize(final GwtDistributionBar bar, final String statusName, final int count, + final int index) { + bar.setPartSize(index, count); + bar.setPartTooltip(index, statusName); + // check thi::: + bar.setPartStyleName(index, index, "status-bar-part-" + statusName); + } + +} \ No newline at end of file diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/renderers/StringDistributionBarRenderer.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/renderers/StringDistributionBarRenderer.java new file mode 100644 index 000000000..4a8e3ff73 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributionbar/renderers/StringDistributionBarRenderer.java @@ -0,0 +1,18 @@ +package org.eclipse.hawkbit.ui.distributionbar.renderers; + + +import com.vaadin.ui.Grid.AbstractRenderer; + +public class StringDistributionBarRenderer extends AbstractRenderer { + private static final long serialVersionUID = -4543220859821576209L; + + /** + * Creates a new text renderer + */ + public StringDistributionBarRenderer() { + super(String.class, null); + } + + +} +