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);
+ }
+
+
+}
+