From 5e2aa3f17d324d3ca84010cefadd40573bf7eef8 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Tue, 26 May 2026 16:36:57 +0200 Subject: [PATCH] Plot tab: HH:MM:SS x-axis ticks, date label in control bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace pg.DateAxisItem with a custom TimeAxisItem that formats ticks as HH:MM:SS, eliminating locale-dependent day/date prefixes on the axis. Add a per-plot date label (right-aligned in the control bar) that shows the date range of the visible window — single date when the view stays within one day, "YYYY-MM-DD – YYYY-MM-DD" when it spans midnight. Co-Authored-By: Claude Sonnet 4.6 --- gui_client.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/gui_client.py b/gui_client.py index c7fae07..c84cde1 100644 --- a/gui_client.py +++ b/gui_client.py @@ -384,6 +384,12 @@ class DashboardTab(QWidget): # ── Plot tab ────────────────────────────────────────────────────────────────── +class TimeAxisItem(pg.AxisItem): + """X-axis that shows HH:MM:SS, suppressing any date prefix.""" + def tickStrings(self, values, scale, spacing): + return [datetime.fromtimestamp(v).strftime("%H:%M:%S") for v in values] + + class PlotTab(QWidget): NUM_PLOTS = 8 MAX_TRACES = 4 @@ -421,6 +427,7 @@ class PlotTab(QWidget): self._proxies: list = [] self._add_combos: list[QComboBox] = [] self._chip_bars: list[QHBoxLayout] = [] + self._date_labels: list[QLabel] = [] for i in range(self.NUM_PLOTS): cell = QWidget() @@ -465,12 +472,18 @@ class PlotTab(QWidget): ctrl_row.addLayout(chip_bar) ctrl_row.addStretch() + date_lbl = QLabel("") + date_lbl.setStyleSheet("color: #666688; font-size: 10px;") + date_lbl.setAlignment(Qt.AlignRight | Qt.AlignVCenter) + self._date_labels.append(date_lbl) + ctrl_row.addWidget(date_lbl) + cell_vbox.addWidget(ctrl) # plot pw = pg.PlotWidget( background="#12121e", - axisItems={"bottom": pg.DateAxisItem(orientation="bottom")}, + axisItems={"bottom": TimeAxisItem(orientation="bottom")}, ) pw.showGrid(x=True, y=True, alpha=0.3) pw.addLegend(offset=(0, 0), labelTextSize="8pt") @@ -663,7 +676,16 @@ class PlotTab(QWidget): name=label, ) - pw.setXRange(x_min if x_min is not None else cutoff, now, padding=0.02) + x_lo = x_min if x_min is not None else cutoff + pw.setXRange(x_lo, now, padding=0.02) + + d_lo = datetime.fromtimestamp(x_lo).date() + d_hi = datetime.fromtimestamp(now).date() + if d_lo == d_hi: + date_str = d_lo.strftime("%Y-%m-%d") + else: + date_str = f"{d_lo.strftime('%Y-%m-%d')} – {d_hi.strftime('%Y-%m-%d')}" + self._date_labels[i].setText(date_str) # ── cursor tracing ────────────────────────────────────────────────────────