[feat](trx-rs): add ham sat pass predictions; rename SAT tab

- Rename "Weather Satellites" sub-tab to "SAT"
- Add "Predictions" view: next 24 h flyby table for 13 ham sats
  (ISS, AO-91, AO-92, SO-50, AO-73, JO-97, PO-101, LilacSat-2,
  CAS-4B, EO-88, RS-44, SALSAT, GREENCUBE)
- trx-core/geo: add PassPrediction, HAM_SATS, compute_upcoming_passes(),
  find_passes_for_sat(), compute_az_el() helpers; spawn_tle_refresh_task
  now also fetches CelesTrak amateur group on startup and every 24 h
- trx-frontend-http: add GET /sat_passes endpoint
- app.js: locator tooltips now accumulate all receivers per station
  via remotes Set; _detailPassesRigFilter checks the Set

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-03-28 13:42:57 +01:00
parent 27117a8de5
commit adec33708f
6 changed files with 499 additions and 48 deletions
@@ -515,7 +515,7 @@
<button class="sub-tab" data-subtab="ft2">FT2</button>
<button class="sub-tab" data-subtab="wspr">WSPR</button>
<button class="sub-tab" data-subtab="rds">RDS</button>
<button class="sub-tab" data-subtab="wxsat">Weather Satellites</button>
<button class="sub-tab" data-subtab="wxsat">SAT</button>
</div>
<div id="subtab-overview" class="sub-tab-panel">
<div class="plugin-item">
@@ -811,6 +811,7 @@
<div class="wxsat-view-bar">
<button id="wxsat-view-live" class="wxsat-view-btn wxsat-view-active" type="button">Live</button>
<button id="wxsat-view-history" class="wxsat-view-btn" type="button">History</button>
<button id="wxsat-view-predictions" class="wxsat-view-btn" type="button">Predictions</button>
</div>
<!-- Live view -->
<div id="wxsat-live-view">
@@ -861,6 +862,18 @@
<div id="wxsat-history-list"></div>
<small id="wxsat-history-count" style="color:var(--text-muted);font-size:0.75rem;">No images yet</small>
</div>
<!-- Predictions view -->
<div id="wxsat-predictions-view" style="display:none;">
<div class="sat-pred-header">
<span class="sat-pred-col-time">AOS (UTC)</span>
<span class="sat-pred-col-sat">Satellite</span>
<span class="sat-pred-col-el">Max El</span>
<span class="sat-pred-col-dur">Duration</span>
<span class="sat-pred-col-dir">Direction</span>
</div>
<div id="sat-pred-list"></div>
<small id="sat-pred-status" style="color:var(--text-muted);font-size:0.75rem;">Loading predictions&hellip;</small>
</div>
</div>
</div>
<div id="tab-map" class="tab-panel" style="display:none;">
@@ -1109,7 +1122,7 @@
<button id="settings-clear-ft4-history" class="sch-write sch-reset-btn" type="button">Clear full FT4 history</button>
<button id="settings-clear-ft2-history" class="sch-write sch-reset-btn" type="button">Clear full FT2 history</button>
<button id="settings-clear-wspr-history" class="sch-write sch-reset-btn" type="button">Clear full WSPR history</button>
<button id="settings-clear-wxsat-history" class="sch-write sch-reset-btn" type="button">Clear full Weather Sat history</button>
<button id="settings-clear-wxsat-history" class="sch-write sch-reset-btn" type="button">Clear full Sat history</button>
</div>
</div>
</div>