Skip to content

feat(dashboard): each source's numbers, and the sources compared - #463

Merged
gx1400 merged 1 commit into
feat/gateway-versionfrom
feat/dashboard-sources
Oct 28, 2026
Merged

gx1400 merged 1 commit into
feat/gateway-versionfrom
feat/dashboard-sources

Conversation

@gx1400

@gx1400 gx1400 commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

Closes #454. Stacked on #462. It depends on #460 for metrics.db.

Engine:

  • Per-source counters: the engine keeps a second DashboardCounters per source, the same class as the whole feed's. Every packet a source lists is counted there.
  • Copies count for each source: a copy another source brought first (today only RecordSource) is summarized and counted for this source. All sources still counts it once.
  • GetSourceDashboardAsync(range, sourceId, filter) works for every range, including 7 days from that source's hours. Farthest, weather, the tables and heard on RF stay the whole feed's.
  • Sources compared: Dashboard.Comparison (DashboardSourceRow: stations, packets, heard only here) is on the All sources dashboard when there are two or more sources. Over 7 days it covers the last 24 hours.
  • Restarts: per-source counters are saved in dashboard-history.json (HistorySnapshot.Sources, optional, so older files still load) and hourly in metrics.db.
  • Schema change: metrics.db moves to schema 2 with a source column. A schema 1 file from feat(dashboard): a 7 days range, from hours kept 90 days #460 builds is set aside and started afresh; none was ever released.
  • Clearing: clearing the packets clears the per-source counters too.

UI:

  • A Source picker beside the range, only when the profile has two or more sources. It's kept for the session, like the range; neither is saved.
  • A Sources compared tile.
  • The note under the range says which tiles still count every source.

Spec: F1.22 behavior 7a and the service surface.

Tests:

  • An engine test with two connected sources: each source's packets and stations, the copy counted for both, and the comparison.
  • A restart test: a source's counts and its 7-day hours come back.
  • A view-model test: picker, comparison rows, asking for one source, the note.

Release build, all tests and csharpier pass locally.

With two or more sources, a Source picker shows All sources or one: the
engine keeps the same counters again per source, a copy another source
brought first counting for this one too, while All sources counts it once.
All sources adds Sources compared: each source's stations heard, packets
and the stations no other source heard. Each source's counters are kept
across restarts, and their hours in metrics.db for 7 days.

Closes #454
@gx1400
gx1400 force-pushed the feat/dashboard-sources branch from ba0d15e to 928cfc9 Compare October 28, 2026 13:21
@gx1400
gx1400 merged commit 465ab86 into main Oct 28, 2026
11 checks passed
@gx1400
gx1400 deleted the feat/dashboard-sources branch October 28, 2026 13:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dashboard: show the APRS numbers for all sources or for each source

1 participant