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 d65865149e78d2a22f756d623f483dd2976f97bf Author: Claus Ibsen <[email protected]> AuthorDate: Thu May 14 09:36:03 2026 +0200 CAMEL-23514: Fix diagram flicker during live metric refresh Only show the "Loading diagram..." state on initial load, not on tick-based refreshes. Preserve scroll position when refreshing an already-visible diagram. This prevents the visible flash between the loading placeholder and the actual diagram content on each tick. 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 | 33 +++++++++++++--------- 1 file changed, 19 insertions(+), 14 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 58129fe37824..8f757e129554 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 @@ -1261,14 +1261,16 @@ public class CamelMonitor extends CamelCommand { boolean showMetrics = diagramMetrics; String routeId = selectedRoute.routeId; - // Show loading state immediately - diagramRouteId = routeId; - diagramLines = List.of("(Loading diagram...)"); - diagramImageData = null; - diagramFullImageData = null; - showDiagram = true; - diagramScroll = 0; - diagramScrollX = 0; + boolean initialLoad = !showDiagram; + if (initialLoad) { + diagramRouteId = routeId; + diagramLines = List.of("(Loading diagram...)"); + diagramImageData = null; + diagramFullImageData = null; + showDiagram = true; + diagramScroll = 0; + diagramScrollX = 0; + } runner.scheduler().execute(() -> { try { @@ -1377,17 +1379,20 @@ public class CamelMonitor extends CamelCommand { return; } runner.runOnRenderThread(() -> { + boolean wasShowing = showDiagram; diagramRouteId = routeId; diagramLines = lines; diagramImageData = imageData; diagramFullImageData = fullImageData; diagramProtocol = protocol; - diagramScroll = 0; - diagramScrollX = 0; - diagramCropX = -1; - diagramCropY = -1; - diagramCropW = -1; - diagramCropH = -1; + if (!wasShowing) { + diagramScroll = 0; + diagramScrollX = 0; + diagramCropX = -1; + diagramCropY = -1; + diagramCropW = -1; + diagramCropH = -1; + } showDiagram = true; }); }
