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

gnodet pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 4cdac0be47e9 fix: make TUI charts fill available width on wide 
terminals (#24318)
4cdac0be47e9 is described below

commit 4cdac0be47e9f2ca65df9cd8311eff577a976d87
Author: Guillaume Nodet <[email protected]>
AuthorDate: Tue Jun 30 07:47:32 2026 +0200

    fix: make TUI charts fill available width on wide terminals (#24318)
    
    * fix: make TUI charts fill available width on wide terminals
    
    Charts previously used a fixed 60-point buffer which left empty
    space on wide terminals. Increase history buffers to 300 points
    and compute renderPoints dynamically from the available area
    width so sparklines and bar charts fill their panels.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    
    * fix: apply dynamic chart sizing to CircuitBreakerTab
    
    Same treatment as EndpointsTab: increase MAX_CHART_POINTS to 300,
    compute renderPoints from available width, and use dynamic x-axis
    labels.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 .../camel/dsl/jbang/core/commands/tui/CircuitBreakerTab.java      | 7 ++++---
 .../apache/camel/dsl/jbang/core/commands/tui/EndpointsTab.java    | 8 ++++----
 .../camel/dsl/jbang/core/commands/tui/MetricsCollector.java       | 4 ++--
 .../org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java | 2 +-
 4 files changed, 11 insertions(+), 10 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CircuitBreakerTab.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CircuitBreakerTab.java
index 762cac0d0d73..8cc985eaed27 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CircuitBreakerTab.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CircuitBreakerTab.java
@@ -49,7 +49,7 @@ import static 
org.apache.camel.dsl.jbang.core.commands.tui.MonitorContext.*;
 class CircuitBreakerTab implements MonitorTab {
 
     private static final String[] SORT_COLUMNS = { "route", "id", "component", 
"state" };
-    private static final int MAX_CHART_POINTS = 60;
+    private static final int MAX_CHART_POINTS = 300;
 
     private final MonitorContext ctx;
     private final TableState tableState = new TableState();
@@ -352,7 +352,7 @@ class CircuitBreakerTab implements MonitorTab {
 
         LinkedList<Long> successHist = cbSuccessHistory.get(key);
         LinkedList<Long> failHist = cbFailHistory.get(key);
-        int renderPoints = MAX_CHART_POINTS;
+        int renderPoints = Math.min(MAX_CHART_POINTS, Math.max(2, 
vSplit.get(1).width() - 6));
         long[] successArr = new long[renderPoints];
         long[] failArr = new long[renderPoints];
         if (successHist != null) {
@@ -384,7 +384,8 @@ class CircuitBreakerTab implements MonitorTab {
                 .topStyle(Style.EMPTY.fg(Color.GREEN))
                 .bottomStyle(Style.EMPTY.fg(Color.LIGHT_RED))
                 .showYAxis(true)
-                .xLabels("-60s", "-45s", "-30s", "-15s", "now")
+                .xLabels("-" + renderPoints + "s", "-" + (renderPoints * 3 / 
4) + "s",
+                        "-" + (renderPoints / 2) + "s", "-" + (renderPoints / 
4) + "s", "now")
                 
.block(Block.builder().borderType(BorderType.ROUNDED).borders(Borders.ALL)
                         .title(Title.from(chartTitle)).build())
                 .build(), vSplit.get(1));
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/EndpointsTab.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/EndpointsTab.java
index 68813cbb9ee0..e50c0b0acb79 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/EndpointsTab.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/EndpointsTab.java
@@ -51,7 +51,7 @@ import static 
org.apache.camel.dsl.jbang.core.commands.tui.MonitorContext.*;
 class EndpointsTab implements MonitorTab {
 
     private static final String[] SORT_COLUMNS = { "component", "route", 
"dir", "total", "body", "hdr", "uri" };
-    private static final int MAX_CHART_POINTS = 60;
+    private static final int MAX_CHART_POINTS = 300;
     private static final int CHART_ALL = 0;
     private static final int CHART_SINGLE = 1;
     private static final int CHART_OFF = 2;
@@ -426,7 +426,7 @@ class EndpointsTab implements MonitorTab {
         LinkedList<Long> inHist = inHistMap.getOrDefault(pid, new 
LinkedList<>());
         LinkedList<Long> outHist = outHistMap.getOrDefault(pid, new 
LinkedList<>());
 
-        int renderPoints = MAX_CHART_POINTS;
+        int renderPoints = Math.min(MAX_CHART_POINTS, Math.max(2, 
hSplit.get(1).width() - 6));
         long[] inArr = new long[renderPoints];
         long[] outArr = new long[renderPoints];
         for (int i = 0; i < renderPoints; i++) {
@@ -529,7 +529,7 @@ class EndpointsTab implements MonitorTab {
         LinkedList<Long> inHist = perEndpointInHistory.getOrDefault(key, new 
LinkedList<>());
         LinkedList<Long> outHist = perEndpointOutHistory.getOrDefault(key, new 
LinkedList<>());
 
-        int renderPoints = MAX_CHART_POINTS;
+        int renderPoints = Math.min(MAX_CHART_POINTS, Math.max(2, 
hSplit.get(1).width() - 6));
         long[] inArr = new long[renderPoints];
         long[] outArr = new long[renderPoints];
         for (int i = 0; i < renderPoints; i++) {
@@ -576,7 +576,7 @@ class EndpointsTab implements MonitorTab {
         LinkedList<Long> inHist = endpointInSizeHistory.getOrDefault(pid, new 
LinkedList<>());
         LinkedList<Long> outHist = endpointOutSizeHistory.getOrDefault(pid, 
new LinkedList<>());
 
-        int renderPoints = MAX_CHART_POINTS;
+        int renderPoints = Math.min(MAX_CHART_POINTS, Math.max(2, area.width() 
- 6));
         long[] inArr = new long[renderPoints];
         long[] outArr = new long[renderPoints];
         for (int i = 0; i < renderPoints; i++) {
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/MetricsCollector.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/MetricsCollector.java
index a2db00029ec8..974af492c85f 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/MetricsCollector.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/MetricsCollector.java
@@ -29,8 +29,8 @@ import java.util.concurrent.ConcurrentHashMap;
  */
 class MetricsCollector {
 
-    static final int MAX_SPARKLINE_POINTS = 60;
-    static final int MAX_ENDPOINT_CHART_POINTS = 60;
+    static final int MAX_SPARKLINE_POINTS = 300;
+    static final int MAX_ENDPOINT_CHART_POINTS = 300;
     static final int MAX_HEAP_HISTORY_POINTS = 120;
     static final long HEAP_SAMPLE_INTERVAL_MS = 5000;
 
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
index b45dea4e93a5..09b95d7995cf 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
@@ -71,7 +71,7 @@ class OverviewTab implements MonitorTab {
     }
 
     private static final long VANISH_DURATION_MS = 6000;
-    private static final int MAX_SPARKLINE_POINTS = 60;
+    private static final int MAX_SPARKLINE_POINTS = 300;
     private static final String[] SORT_COLUMNS = { "pid", "name", "version", 
"status", "total", "fail" };
 
     static final int CHART_ALL = 0;

Reply via email to