From 5c45692031b76842bd045a00528c8227a60561b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Ant=C3=B4nio=20Siqueira?= Date: Tue, 20 Jun 2023 21:54:36 -0300 Subject: [PATCH] KOGITO-9425: Make sure that column settings are respected for meters and timeseries in Dashbuilder (#1781) --- .../client/EChartsMeterChartDisplayer.java | 13 ++++++++++--- .../client/EChartsTimeseriesDisplayer.java | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsMeterChartDisplayer.java b/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsMeterChartDisplayer.java index 6c693bf00fc..d3d54a7841e 100644 --- a/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsMeterChartDisplayer.java +++ b/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsMeterChartDisplayer.java @@ -15,6 +15,7 @@ */ package org.dashbuilder.renderer.echarts.client; +import java.util.Arrays; import java.util.List; import java.util.stream.IntStream; @@ -105,8 +106,12 @@ void chartSetup() { displayerSettings.getMeterEnd(), "red") }); + var valuesSettings = displayerSettings.getColumnSettings(valuesColumn); var names = getNames(nColumns); - var values = getNumberValues(valuesColumn); + var values = Arrays.stream(getNumberValues(valuesColumn)) + .mapToObj(v -> super.evaluateValueToString(v, valuesSettings)) + .map(Double::valueOf) + .toArray(Double[]::new); int legendBasePosX = LEGEND_ITEM_MIN_POS_X; int legendBasePosY = LEGEND_ITEM_MIN_POS_Y; @@ -171,9 +176,11 @@ private String[] getNames(int n) { .mapToObj(i -> "Series " + i) .toArray(String[]::new); } - List list = dataSet.getColumnByIndex(0).getValues(); + var column = dataSet.getColumnByIndex(0); + List list = column.getValues(); return list.stream() - .map(o -> o.toString()) + .map(Object::toString) + .map(v -> super.formatValue(v, column)) .toArray(String[]::new); } diff --git a/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsTimeseriesDisplayer.java b/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsTimeseriesDisplayer.java index 72f2515a5c2..47dfb59a7f3 100644 --- a/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsTimeseriesDisplayer.java +++ b/packages/dashbuilder/dashbuilder-client/dashbuilder-renderers/dashbuilder-renderer-echarts/src/main/java/org/dashbuilder/renderer/echarts/client/EChartsTimeseriesDisplayer.java @@ -23,6 +23,7 @@ import javax.enterprise.inject.Default; import javax.inject.Inject; +import org.dashbuilder.dataset.ColumnType; import org.dashbuilder.dataset.DataColumn; import org.dashbuilder.dataset.DataSetLookupConstraints; import org.dashbuilder.renderer.echarts.client.js.ECharts.Dataset; @@ -90,7 +91,19 @@ public Dataset buildDataSet() { } private Object getValue(DataColumn column, int i) { - return column.getValues().get(i); + var value = column.getValues().get(i); + if (column.getColumnType() != ColumnType.NUMBER) { + return super.formatValue(value, column); + } else { + var settings = displayerSettings.getColumnSettings(column); + var valueStr = super.evaluateValueToString(value, settings); + try { + return Double.parseDouble(valueStr); + } catch (Exception e) { + // just ignore this edge case + } + } + return value; } }