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

Reply via email to