WebUI: per-signal vscale toolbar, active-signal highlighting, zoom fix

- Per-signal, per-plot vertical scale state (sigVScale keyed by plotId:signalKey)
  so the same signal in two plots has fully independent vscale config
- Active signal redrawn on top of all series with 2× line width for clear
  visual identification; badge click toggles selection and opens/closes the
  embedded vscale toolbar (click same badge again to deselect)
- Vscale configurator moved from floating popup to a slim toolbar strip
  anchored inside the plot card, with an × close button
- Trigger dropdown shows one entry per array signal with [0…N-1] label;
  opening it shows an index-picker dialog to choose the element
- Zoom resampling: when server returns no data for a zoomed range, fall
  back to the local circular buffer instead of returning empty arrays

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Martino Ferrari
2026-05-27 15:42:00 +02:00
parent b15e637f14
commit 3dd0d863fa
13 changed files with 1508 additions and 231 deletions
@@ -236,7 +236,7 @@ bool UDPStreamerTest::TestInitialise_AutoMode_Valid() {
UDPStreamer ds;
ConfigurationDatabase cdb;
cdb.Write("Port", 44502u);
cdb.Write("PublishingMode", "Auto");
cdb.Write("PublishingMode", "Accumulate");
cdb.Write("MinRefreshRate", 120.0);
cdb.CreateRelative("Signals");
cdb.MoveToRoot();
@@ -248,7 +248,7 @@ bool UDPStreamerTest::TestInitialise_AutoMode_MissingRefreshRate() {
UDPStreamer ds;
ConfigurationDatabase cdb;
cdb.Write("Port", 44503u);
cdb.Write("PublishingMode", "Auto");
cdb.Write("PublishingMode", "Accumulate");
/* MinRefreshRate intentionally omitted */
cdb.CreateRelative("Signals");
cdb.MoveToRoot();