This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-23514-ascii-diagram-metrics in repository https://gitbox.apache.org/repos/asf/camel.git
commit f838da67d8457a0f2247c70c1f606d390b694212 Author: Claus Ibsen <[email protected]> AuthorDate: Thu May 14 09:45:51 2026 +0200 CAMEL-23514: Add metrics to image diagram with F5 manual refresh Pass metrics flag to RouteDiagramRenderer for image diagrams so counters are shown. Add F5 key to manually refresh the diagram (both text and image modes) to update counters on demand. The image diagram shows static counters from load time since terminal image protocols don't support partial updates. Footer hints show F5 refresh when metrics are enabled. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../dsl/jbang/core/commands/tui/CamelMonitor.java | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java index 54a3d7ac7daa..71c0a1bbb99f 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java +++ b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java @@ -57,6 +57,7 @@ import dev.tamboui.text.Text; import dev.tamboui.tui.TuiConfig; import dev.tamboui.tui.TuiRunner; import dev.tamboui.tui.event.Event; +import dev.tamboui.tui.event.KeyCode; import dev.tamboui.tui.event.KeyEvent; import dev.tamboui.tui.event.MouseEvent; import dev.tamboui.tui.event.MouseEventKind; @@ -403,10 +404,13 @@ public class CamelMonitor extends CamelCommand { if (tab == TAB_ROUTES && showDiagram && ke.isCharIgnoreCase('m')) { diagramMetrics = !diagramMetrics; - if (diagramTextMode) { - diagramLoading.set(false); - loadDiagramForSelectedRoute(); - } + diagramLoading.set(false); + loadDiagramForSelectedRoute(); + return true; + } + if (tab == TAB_ROUTES && showDiagram && ke.isKey(KeyCode.F5)) { + diagramLoading.set(false); + loadDiagramForSelectedRoute(); return true; } @@ -1359,7 +1363,9 @@ public class CamelMonitor extends CamelCommand { layoutRoutes.add(lr); totalHeight = lr.maxY; } - RouteDiagramRenderer renderer = new RouteDiagramRenderer(); + RouteDiagramRenderer renderer = new RouteDiagramRenderer( + engine.getNodeWidth(), RouteDiagramLayoutEngine.DEFAULT_FONT_SIZE * RouteDiagramLayoutEngine.SCALE, + metrics); RouteDiagramRenderer.DiagramColors colors = RouteDiagramRenderer.DiagramColors.parse("transparent"); java.awt.image.BufferedImage image = renderer.renderDiagram(layoutRoutes, totalHeight, colors); ImageData fullImage = ImageData.fromBufferedImage(image); @@ -2016,7 +2022,12 @@ public class CamelMonitor extends CamelCommand { hint(spans, "\u2191\u2193\u2190\u2192", "scroll"); hint(spans, "PgUp/PgDn", "page"); hint(spans, "Home/End", "top/bottom"); - hintLast(spans, "m", "metrics" + (diagramMetrics ? " [on]" : " [off]")); + hint(spans, "m", "metrics" + (diagramMetrics ? " [on]" : " [off]")); + if (diagramMetrics && !diagramTextMode) { + hintLast(spans, "F5", "refresh counters"); + } else if (diagramMetrics && diagramTextMode) { + hintLast(spans, "F5", "refresh"); + } } else if (tab == TAB_ROUTES) { hint(spans, "Esc", "back"); hint(spans, "\u2191\u2193", "navigate"); @@ -2063,7 +2074,6 @@ public class CamelMonitor extends CamelCommand { spans.add(Span.raw(" " + label)); } - // ---- Data Loading ---- private void refreshData() {
