Repository navigation
20261019 - Show where the node is proven to see on a Tracker map - #121
Merged
Merged
Conversation
The Tracker page could only show detections in delay and Doppler, which says nothing about which way the antenna looks or how far it reaches. A Display control in the page header now switches the panel to a wedge view: a map of the node's coverage as proven by ADS-B-verified detections, with labelled tracks drawn as trails of their verified positions and unlabelled tracks as their delay arcs, solid inside the wedge and faint outside it. Clicking a track in the rail replays its travel through the wedge over ten seconds; clicking again stops or replays it. retina-tracker owns every shape, so the page only draws what it is sent. Four routes proxy the sidecar's new coverage endpoints and relay its status, so the page can tell a tracker without the wedge (404, 503) from an unreachable one (502) and say so over the map. Reset wedge clears the wedge on the node behind a confirm dialog, separate from Clear buffer because it must not touch tracking. The map reuses the setup wizard's Leaflet and CARTO basemap. The scope is not redrawn while hidden, and the Delay / Doppler view gets no replay cursor, since Plotly would redraw the whole scene every frame. Track ids are checked before they reach the upstream path. Tests cover the proxies, the id check and the page carrying the view; the full suite passes (1059). Checked in headless Chromium against a local tracker fed synthetic traffic, including phone width, and on a test node, but not against real map tiles. Needs retina-tracker with the coverage wedge. docs/features/tracker.md gains a Wedge view section and the message format's lat/lon columns; docs/README.md maps the new script. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…on the wedge
A wedge slice that reaches the furthest bistatic range the node
processes is limited by that setting, not by the antenna, and the map
gave no way to tell the two apart. It now draws that limit as a grey
dashed ellipse with its own legend entry, from retina-tracker's
span_ring, and the footer counts the slices that reach it ("3 at the
processed range limit").
The map also opened on a 120 km box around the receiver, which left a
short-range wedge small in the middle of the screen. It now fits the
proven lobes once there are any, refitting once when the first appear,
and keeps the viewer's own pan and zoom after that.
Checked in headless Chromium against a local tracker with synthetic
traffic and a stated delay limit; 1059 tests pass. Needs the matching
retina-tracker change for the ellipse and the count; without it the map
draws as before. docs/features/tracker.md covers the new layer, the
footer count and how the map fits.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The wedge view ringed the receiver with small proven slices in almost
every direction. On a test node those came from aircraft at a median 45
degrees elevation, nearly overhead, so they made the map read as if the
antenna saw all round and hid which way it points.
Slices retina-tracker serves as close-in (held under 10 km) are now
drawn much lighter with a dashed edge, under a "Close-in, overhead"
legend entry, and the footer counts them ("36 close-in"). They stay
proven and counted; only the drawing changes. The map also fits the
close-in slices as well as the main lobe, so the receiver is not pressed
against the edge.
Checked in headless Chromium against a local tracker loaded with a test
node's real wedge; 1059 tests pass. Needs the matching retina-tracker
change; without it the map draws as before. docs/features/tracker.md
covers the new layer, the legend entry and the footer count.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The Tracker page gains a second display. A Display control in the page header switches the panel between Delay / Doppler and a wedge view: a map of where the node is proven to see, built only from ADS-B-verified detections, with its tracks drawn on it. Labelled tracks are trails of their verified positions; unlabelled tracks are their delay arcs, solid inside the wedge and faint outside. Clicking a track in the rail replays its travel through the wedge over ten seconds.
Why
Delay and Doppler say nothing about which way the antenna looks or how far it reaches, and a declared beam is configuration, not measurement. The wedge is evidence: a slice appears only once two different aircraft have been detected in it, and it holds for a sliding 24 hours.
The wedge view
How it is built
retina-tracker owns every shape (lobes, arcs, the range limit); the page only draws. Four routes proxy the sidecar's coverage endpoints and relay its status. Track ids are checked before they reach the upstream path. Track columns on the stream gain
lat/lon, which only the wedge view reads; the scope ignores them. The new script isstatic/tracker-wedge.js.Testing
Docs
docs/features/tracker.mdgains a Wedge view section (with Replaying a track and Resetting the wedge) and the stream'slat/loncolumns;docs/README.mdmapsstatic/tracker-wedge.js.After this
🤖 Generated with Claude Code