This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch feature/CAMEL-23672-tui-diagram
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2245b15d874f5bff785b18c94459578dbf81c3e2
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Jun 3 22:34:50 2026 +0200

    CAMEL-23672: camel-tui - Right-align numbers in info panels
    
    Align Total/Failed/Inflight and Mean/Max/Min/Last values so digits
    line up in both topology and EIP info panels.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../dsl/jbang/core/commands/tui/DiagramTab.java    | 39 ++++++++++++++--------
 1 file changed, 26 insertions(+), 13 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
index 3d16c4e426b9..1ff1073cb3f1 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramTab.java
@@ -318,28 +318,30 @@ class DiagramTab implements MonitorTab {
                     Span.raw(route.throughput != null ? route.throughput : 
"")));
 
             lines.add(Line.from(Span.raw("")));
+            int w = numWidth(route.total, route.failed, route.inflight);
             lines.add(Line.from(
                     Span.styled(" Total:    ", Style.EMPTY.dim()),
-                    Span.raw(String.valueOf(route.total))));
+                    Span.raw(String.format("%" + w + "d", route.total))));
             Style failStyle = route.failed > 0 ? 
Style.EMPTY.fg(Color.LIGHT_RED).bold() : Style.EMPTY;
             lines.add(Line.from(
                     Span.styled(" Failed:   ", Style.EMPTY.dim()),
-                    Span.styled(String.valueOf(route.failed), failStyle)));
+                    Span.styled(String.format("%" + w + "d", route.failed), 
failStyle)));
             lines.add(Line.from(
                     Span.styled(" Inflight: ", Style.EMPTY.dim()),
-                    Span.raw(String.valueOf(route.inflight))));
+                    Span.raw(String.format("%" + w + "d", route.inflight))));
 
             lines.add(Line.from(Span.raw("")));
             if (route.total > 0) {
+                int tw = numWidth(route.meanTime, route.maxTime, 
route.minTime);
                 lines.add(Line.from(
                         Span.styled(" Mean: ", Style.EMPTY.dim()),
-                        Span.raw(route.meanTime + " ms")));
+                        Span.raw(String.format("%" + tw + "d ms", 
route.meanTime))));
                 lines.add(Line.from(
                         Span.styled(" Max:  ", Style.EMPTY.dim()),
-                        Span.raw(route.maxTime + " ms")));
+                        Span.raw(String.format("%" + tw + "d ms", 
route.maxTime))));
                 lines.add(Line.from(
                         Span.styled(" Min:  ", Style.EMPTY.dim()),
-                        Span.raw(route.minTime + " ms")));
+                        Span.raw(String.format("%" + tw + "d ms", 
route.minTime))));
             }
 
             if (route.coverage != null) {
@@ -435,32 +437,35 @@ class DiagramTab implements MonitorTab {
             if (ln.treeNode != null && ln.treeNode.info.stat != null) {
                 var stat = ln.treeNode.info.stat;
                 lines.add(Line.from(Span.raw("")));
+                int w = numWidth(stat.exchangesTotal, stat.exchangesFailed, 
stat.exchangesInflight);
                 lines.add(Line.from(
                         Span.styled(" Total:    ", Style.EMPTY.dim()),
-                        Span.raw(String.valueOf(stat.exchangesTotal))));
+                        Span.raw(String.format("%" + w + "d", 
stat.exchangesTotal))));
                 Style failStyle = stat.exchangesFailed > 0
                         ? Style.EMPTY.fg(Color.LIGHT_RED).bold() : Style.EMPTY;
                 lines.add(Line.from(
                         Span.styled(" Failed:   ", Style.EMPTY.dim()),
-                        Span.styled(String.valueOf(stat.exchangesFailed), 
failStyle)));
+                        Span.styled(String.format("%" + w + "d", 
stat.exchangesFailed), failStyle)));
                 lines.add(Line.from(
                         Span.styled(" Inflight: ", Style.EMPTY.dim()),
-                        Span.raw(String.valueOf(stat.exchangesInflight))));
+                        Span.raw(String.format("%" + w + "d", 
stat.exchangesInflight))));
 
                 if (stat.exchangesTotal > 0) {
                     lines.add(Line.from(Span.raw("")));
+                    int tw = numWidth(stat.meanProcessingTime, 
stat.maxProcessingTime,
+                            stat.minProcessingTime, stat.lastProcessingTime);
                     lines.add(Line.from(
                             Span.styled(" Mean: ", Style.EMPTY.dim()),
-                            Span.raw(stat.meanProcessingTime + " ms")));
+                            Span.raw(String.format("%" + tw + "d ms", 
stat.meanProcessingTime))));
                     lines.add(Line.from(
                             Span.styled(" Max:  ", Style.EMPTY.dim()),
-                            Span.raw(stat.maxProcessingTime + " ms")));
+                            Span.raw(String.format("%" + tw + "d ms", 
stat.maxProcessingTime))));
                     lines.add(Line.from(
                             Span.styled(" Min:  ", Style.EMPTY.dim()),
-                            Span.raw(stat.minProcessingTime + " ms")));
+                            Span.raw(String.format("%" + tw + "d ms", 
stat.minProcessingTime))));
                     lines.add(Line.from(
                             Span.styled(" Last: ", Style.EMPTY.dim()),
-                            Span.raw(stat.lastProcessingTime + " ms")));
+                            Span.raw(String.format("%" + tw + "d ms", 
stat.lastProcessingTime))));
                 }
             }
         } else {
@@ -657,4 +662,12 @@ class DiagramTab implements MonitorTab {
         result.put("lines", lines.size());
         return result;
     }
+
+    private static int numWidth(long... values) {
+        long max = 0;
+        for (long v : values) {
+            max = Math.max(max, Math.abs(v));
+        }
+        return Math.max(1, String.valueOf(max).length());
+    }
 }

Reply via email to