aprs.me/docs/web/liveview-pages.md

2.9 KiB

LiveView Pages

Non-map LiveView pages in the application.

Packet Streams

PacketsLive.Index (/packets)

  • Real-time stream of all incoming packets (max 100)
  • Subscribes to "postgres:aprsme_packets" Phoenix PubSub topic
  • Uses stream/4 for efficient DOM updates

PacketsLive.CallsignView (/packets/:callsign)

  • Filtered packet stream for a single callsign
  • Subscribes to "packets:#{callsign}" topic
  • Includes device information parsed per-packet

Station Info

InfoLive.Show (/info/:callsign)

  • Comprehensive station information page
  • Latest packet details, device identification
  • Nearby stations via spatial query (neighbors)
  • APRS path decoding — "heard by" and "stations heard" analysis
  • Digipeater relationships
  • APRS symbol rendering
  • Embedded single-station map via InfoMapComponent (JS hook)
  • Subscribes to "packets:#{callsign}" for live updates

Weather

WeatherLive.CallsignView (/weather/:callsign)

  • Weather station data visualization with Chart.js charts
  • Temperature, humidity, wind, pressure, rainfall trends
  • Locale-aware unit conversions (metric/imperial)
  • Subscribes to "weather:#{callsign}" for live updates
  • Pushes "update_weather_charts" events to refresh Chart.js

Status

StatusLive.Index (/status)

  • System status dashboard
  • APRS-IS connection state, uptime, health score
  • Cluster node information (when clustered)
  • Polls every 5 seconds via Process.send_after
  • Inline render/1 (no template file)
  • Subscribes to "aprs_status" topic

Bad Packets

BadPacketsLive.Index (/badpackets)

  • Malformed/rejected packet viewer
  • Shows raw packet data + error type/message
  • Debounced refresh (2s delay)
  • Subscribes to "postgres:aprsme_events"

Static Pages

AboutLive (/about)

  • Simple about page, title assign only

ApiDocsLive (/api)

  • API documentation with interactive testing form
  • Inline render (~970 lines)
  • Self-documenting with example requests/responses

Authentication Pages

All auth LiveViews use inline render/1:

LiveView Route Auth Pipeline
UserLoginLive /users/log_in redirect_if_user_is_authenticated
UserRegistrationLive /users/register redirect_if_user_is_authenticated
UserForgotPasswordLive /users/reset_password redirect_if_user_is_authenticated
UserResetPasswordLive /users/reset_password/:token redirect_if_user_is_authenticated
UserConfirmationLive /users/confirm/:token :current_user
UserConfirmationInstructionsLive /users/confirm :current_user
UserSettingsLive /users/settings require_authenticated_user

Shared LiveView Modules

Located in lib/aprsme_web/live/shared/:

  • BoundsUtils — Map boundary calculations
  • PacketHandler — Shared packet enrichment
  • ParamUtils — URL parameter parsing
  • PacketUtils — Shared packet querying
  • CoordinateUtils — Coordinate math