This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 6bb4217f6a highlight error lines in metrics tab, fixes #6514 (#6544)
6bb4217f6a is described below
commit 6bb4217f6a3ea02e1ce0810bfe5f69410a30194d
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Wed Feb 11 13:49:07 2026 +0100
highlight error lines in metrics tab, fixes #6514 (#6544)
---
.../main/java/org/apache/hop/ui/core/PropsUi.java | 1 +
.../org/apache/hop/ui/core/gui/GuiResource.java | 2 ++
.../delegates/HopGuiPipelineGridDelegate.java | 26 ++++++++++++++++++----
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
b/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
index 60f725557e..8755f35c2f 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
@@ -1058,6 +1058,7 @@ public class PropsUi extends Props {
contrastingColors.put(new RGB(85, 115, 85), new RGB(120, 155, 120)); //
DarkGreenMuted
contrastingColors.put(new RGB(75, 95, 165), new RGB(130, 150, 215)); //
LightBlueMuted
contrastingColors.put(new RGB(130, 85, 85), new RGB(175, 120, 120)); //
RedMuted
+ contrastingColors.put(new RGB(255, 200, 200), new RGB(120, 65, 65)); //
LightRed (dark mode)
contrastingColors.put(new RGB(105, 105, 105), new RGB(145, 145, 145)); //
DarkGrayMuted
contrastingColors.put(new RGB(90, 90, 90), new RGB(135, 135, 135)); //
BlackMuted
diff --git a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
index 188dddd6fc..dbd5930bf7 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
@@ -80,6 +80,7 @@ public class GuiResource {
@Getter private Color colorTab;
@Getter private Color colorRed;
@Getter private Color colorDarkRed;
+ @Getter private Color colorLightRed;
@Getter private Color colorSuccessGreen;
@Getter private Color colorBlueCustomGrid;
@Getter private Color colorGreen;
@@ -366,6 +367,7 @@ public class GuiResource {
colorSuccessGreen = new Color(display, props.contrastColor(0, 139, 0));
colorRed = new Color(display, props.contrastColor(255, 0, 0));
colorDarkRed = new Color(display, props.contrastColor(192, 57, 43));
+ colorLightRed = new Color(display, props.contrastColor(255, 200, 200));
colorGreen = new Color(display, props.contrastColor(0, 255, 0));
colorDarkGreen = new Color(display, props.contrastColor(16, 172, 132));
colorBlue = new Color(display, props.contrastColor(0, 0, 255));
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/delegates/HopGuiPipelineGridDelegate.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/delegates/HopGuiPipelineGridDelegate.java
index 2f261be7c6..6cae360d41 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/delegates/HopGuiPipelineGridDelegate.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/delegates/HopGuiPipelineGridDelegate.java
@@ -39,6 +39,7 @@ import org.apache.hop.core.row.value.ValueMetaString;
import org.apache.hop.core.util.ExecutorUtil;
import org.apache.hop.core.util.Utils;
import org.apache.hop.i18n.BaseMessages;
+import org.apache.hop.pipeline.Pipeline;
import org.apache.hop.pipeline.PipelineMeta;
import org.apache.hop.pipeline.engine.EngineMetrics;
import org.apache.hop.pipeline.engine.IEngineComponent;
@@ -59,6 +60,7 @@ import
org.apache.hop.ui.hopgui.file.pipeline.HopGuiPipelineGraph;
import org.apache.hop.ui.hopgui.selection.HopGuiSelectionTracker;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
@@ -514,7 +516,8 @@ public class HopGuiPipelineGridDelegate {
sortComponentStringsByColumn(componentStringsList, gridSortColumn,
gridSortDescending);
- fillTableRows(componentStringsList);
+ int errorCol = indexOfMetric(usedMetrics, Pipeline.METRIC_ERROR);
+ fillTableRows(componentStringsList, errorCol);
setSortIndicator();
@@ -707,10 +710,13 @@ public class HopGuiPipelineGridDelegate {
pipelineGridComposite.layout(true, true);
}
- private void fillTableRows(List<List<String>> componentStringsList) {
+ private void fillTableRows(List<List<String>> componentStringsList, int
errorColumnIndex) {
while (pipelineGridView.table.getItemCount() >
componentStringsList.size()) {
pipelineGridView.table.remove(pipelineGridView.table.getItemCount() - 1);
}
+ int errorsCol = 3 + errorColumnIndex; // row has #, name, copy, then
metrics
+ Color errorBg = GuiResource.getInstance().getColorLightRed();
+ Color white = GuiResource.getInstance().getColorWhite();
for (int row = 0; row < componentStringsList.size(); row++) {
List<String> componentStrings = componentStringsList.get(row);
TableItem item;
@@ -722,7 +728,20 @@ public class HopGuiPipelineGridDelegate {
for (int col = 0; col < componentStrings.size(); col++) {
item.setText(col, componentStrings.get(col));
}
+ if (errorColumnIndex >= 0 && errorsCol < componentStrings.size()) {
+ long err = parseFormattedLong(componentStrings.get(errorsCol));
+ item.setBackground(err > 0 ? errorBg : white);
+ }
+ }
+ }
+
+ private static int indexOfMetric(List<IEngineMetric> usedMetrics,
IEngineMetric metric) {
+ for (int i = 0; i < usedMetrics.size(); i++) {
+ if (usedMetrics.get(i).getHeader().equals(metric.getHeader())) {
+ return i;
+ }
}
+ return -1;
}
/**
@@ -947,9 +966,8 @@ public class HopGuiPipelineGridDelegate {
updateCellsIfChanged(fields, row);
- // Error lines should appear in red:
if (baseTransform.getErrors() > 0) {
- row.setBackground(GuiResource.getInstance().getColorRed());
+ row.setBackground(GuiResource.getInstance().getColorLightRed());
} else {
row.setBackground(GuiResource.getInstance().getColorWhite());
}