% {symbol_table_id, symbol_code} = AprsmeWeb.MapLive.PacketUtils.get_symbol_info(@packet || %{}) %> <% symbol_table = if symbol_table_id in ["/", "\\", "]"], do: symbol_table_id, else: "/" %> <% symbol_code = symbol_code || ">" %> <% symbol_table_num = case symbol_table do "/" -> 0 "\\" -> 1 "]" -> 2 _ -> 0 end %> <% symbol_code_ord = symbol_code |> String.to_charlist() |> List.first() |> (fn c -> if is_integer(c), do: c, else: 63 end).() %> <% _symbol_img = "/aprs-symbols/aprs-symbols-24-#{symbol_table_num}@2x.png" %> <% _symbol_index = symbol_code_ord - 33 %>
| {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_id, symbol_code} =
AprsmeWeb.MapLive.PacketUtils.get_symbol_info(ssid_info.packet) %>
<% symbol_table =
if symbol_table_id in ["/", "\\", "]"],
do: symbol_table_id,
else: "/" %>
<% symbol_code = symbol_code || ">" %>
<% table_id =
if symbol_table == "/",
do: "0",
else: if(symbol_table == "]", do: "2", else: "1") %>
<% symbol_code_ord =
symbol_code
|> String.to_charlist()
|> List.first()
|> (fn c -> if is_integer(c), do: c, else: 63 end).() %>
<% index = symbol_code_ord - 33 %>
<% safe_index = max(0, min(index, 93)) %>
<% column = rem(safe_index, 16) %>
<% row = div(safe_index, 16) %>
<% x = -column * 128 %>
<% y = -row * 128 %>
<% symbol_img = "/aprs-symbols/aprs-symbols-128-#{table_id}@2x.png" %>
|
<%= 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 %>
|
| {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_id, symbol_code} =
AprsmeWeb.MapLive.PacketUtils.get_symbol_info(neighbor.packet) %>
<% symbol_table =
if symbol_table_id in ["/", "\\", "]"], do: symbol_table_id, else: "/" %>
<% symbol_code = symbol_code || ">" %>
<% table_id =
if symbol_table == "/",
do: "0",
else: if(symbol_table == "]", do: "2", else: "1") %>
<% symbol_code_ord =
symbol_code
|> String.to_charlist()
|> List.first()
|> (fn c -> if is_integer(c), do: c, else: 63 end).() %>
<% index = symbol_code_ord - 33 %>
<% safe_index = max(0, min(index, 93)) %>
<% column = rem(safe_index, 16) %>
<% row = div(safe_index, 16) %>
<% x = -column * 128 %>
<% y = -row * 128 %>
<% symbol_img = "/aprs-symbols/aprs-symbols-128-#{table_id}@2x.png" %>
|
<%= 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 %>
|
{gettext("No recent packet data available for this callsign.")}