{gettext("APRS Station")}

{@callsign} <%= if @packet do %> <% {symbol_table, symbol_code} = AprsmeWeb.AprsSymbol.extract_from_packet(@packet) %> <% display_symbol = if symbol_table && String.match?(symbol_table, ~r/^[A-Z0-9]$/), do: symbol_table, else: "#{AprsmeWeb.AprsSymbol.normalize_symbol_table(symbol_table)}#{AprsmeWeb.AprsSymbol.normalize_symbol_code(symbol_code)}" %>
{render_symbol_html(@packet)}
<% end %>
<.link navigate={~p"/packets/#{@callsign}"} class="btn btn-outline btn-sm"> {gettext("View packets")} <%= if @has_weather_packets do %> <.link navigate={~p"/weather/#{@callsign}"} class="btn btn-primary btn-sm"> {gettext("Weather charts")} <% end %>
<%= if @packet do %>

{gettext("Position Information")}

{gettext("Location")}
{@packet.lat || ""}, {@packet.lon || ""}
<%= if @packet.lat && @packet.lon do %>
{gettext("Grid Square")}
<%= case Gridsquare.encode(@packet.lon, @packet.lat) do %> <% %Gridsquare.EncodeResult{grid_reference: grid_ref} -> %> {grid_ref} <% _ -> %> - <% end %>
<% end %>
{gettext("Last Position")}
<%= if @packet.received_at do %>
{AprsmeWeb.TimeHelpers.time_ago_in_words(@packet.received_at)}
{Calendar.strftime(@packet.received_at, "%Y-%m-%d %H:%M:%S UTC")}
<% else %> {gettext("Unknown")} <% end %>
<%= if @packet.altitude do %>
{gettext("Altitude")}
{@packet.altitude} ft
<% end %> <%= if @packet.course do %>
{gettext("Course")}
{@packet.course}°
<% end %> <%= if @packet.speed do %>
{gettext("Speed")}
{@packet.speed} MPH
<% end %>

{gettext("Device Information")}

{gettext("Device")}
<%= if @packet.device_model || @packet.device_vendor do %> {[ @packet.device_model, @packet.device_vendor, @packet.device_contact ] |> Enum.reject(&is_nil/1) |> Enum.join(" ")} <%= if @packet.device_class do %> ({@packet.device_class}) <% end %> <% else %> {@packet.device_identifier || gettext("Unknown")} <% end %>
{gettext("Path")}
{@packet.path || ""}
<%= if @packet.path && @packet.path != "" do %>
{gettext("Decoded Path")}
{decode_aprs_path(@packet.path)}
<% end %>
{gettext("Raw Packet")}
<%= if is_binary(@packet.raw_packet) do %> {Aprsme.EncodingUtils.sanitize_string(@packet.raw_packet)} <% else %> {@packet.raw_packet || ""} <% end %>
<%= if length(@other_ssids) > 0 do %>

{gettext("Other SSIDs")}

<%= for ssid_info <- @other_ssids do %> <% end %>
{gettext("Callsign")} {gettext("Distance & Direction")} {gettext("Last Heard")}
<.link navigate={~p"/info/#{ssid_info.callsign}"} class="link link-primary" > {ssid_info.callsign} <%= if ssid_info.packet do %> <% {symbol_table, symbol_code} = AprsmeWeb.AprsSymbol.extract_from_packet(ssid_info.packet) %> <% display_symbol = if symbol_table && String.match?(symbol_table, ~r/^[A-Z0-9]$/), do: symbol_table, else: "#{AprsmeWeb.AprsSymbol.normalize_symbol_table(symbol_table)}#{AprsmeWeb.AprsSymbol.normalize_symbol_code(symbol_code)}" %>
{render_symbol_html(ssid_info.packet)}
<% end %>
<%= if ssid_info.packet && ssid_info.packet.lat && ssid_info.packet.lon && @packet && @packet.lat && @packet.lon do %> <% dist = haversine( @packet.lat, @packet.lon, ssid_info.packet.lat, ssid_info.packet.lon ) %> <% course = calculate_course( @packet.lat, @packet.lon, ssid_info.packet.lat, ssid_info.packet.lon ) %> <% locale = Map.get(assigns, :locale, "en") %> <%= if course do %> {format_distance(dist, locale)} @ {Float.round(course, 0)}° <% else %> {format_distance(dist, locale)} <% end %> <% else %> - <% end %> <%= if ssid_info.last_heard do %>
{ssid_info.last_heard.time_ago}
{ssid_info.last_heard.formatted}
<% else %> {gettext("Unknown")} <% end %>
<% end %>

{gettext("Stations Near Current Position")}

<%= for neighbor <- @neighbors do %> <% end %>
{gettext("Callsign")} {gettext("Distance & Course")} {gettext("Last Heard")}
<.link navigate={~p"/info/#{neighbor.callsign}"} class="link link-primary"> {neighbor.callsign} <%= if neighbor.packet do %> <% {symbol_table, symbol_code} = AprsmeWeb.AprsSymbol.extract_from_packet(neighbor.packet) %> <% display_symbol = if symbol_table && String.match?(symbol_table, ~r/^[A-Z0-9]$/), do: symbol_table, else: "#{AprsmeWeb.AprsSymbol.normalize_symbol_table(symbol_table)}#{AprsmeWeb.AprsSymbol.normalize_symbol_code(symbol_code)}" %>
{render_symbol_html(neighbor.packet)}
<% end %>
<%= if neighbor.course do %> {neighbor.distance || ""} @ {Float.round(neighbor.course, 0)}° <% else %> {neighbor.distance || ""} <% end %> <%= if neighbor.last_heard do %>
{neighbor.last_heard.time_ago}
{neighbor.last_heard.formatted}
<% else %> {gettext("Unknown")} <% end %>
<% else %>

{gettext("No data available")}

{gettext("No recent packet data available for this callsign.")}

<% end %>