From da490f7c5958be38de724319956c06a230f0b7c1 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sat, 4 Apr 2026 11:26:35 -0500 Subject: [PATCH] Add tooltip to enrichment badge showing per-type status --- .../live/contact_live/index.ex | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/microwaveprop_web/live/contact_live/index.ex b/lib/microwaveprop_web/live/contact_live/index.ex index 4a024072..980533b5 100644 --- a/lib/microwaveprop_web/live/contact_live/index.ex +++ b/lib/microwaveprop_web/live/contact_live/index.ex @@ -72,13 +72,22 @@ defmodule MicrowavepropWeb.ContactLive.Index do defp validate_sort_order(order) when order in ~w(asc desc), do: order defp validate_sort_order(_), do: @default_sort_order - @enrichment_fields [:hrrr_status, :weather_status, :terrain_status, :iemre_status] + @enrichment_fields [ + {:hrrr_status, "HRRR"}, + {:weather_status, "Weather"}, + {:terrain_status, "Terrain"}, + {:iemre_status, "IEMRE"} + ] @done_statuses [:complete, :unavailable] defp enrichment_badge(contact) do - statuses = Enum.map(@enrichment_fields, &Map.get(contact, &1)) - done = Enum.count(statuses, &(&1 in @done_statuses)) - failed = Enum.count(statuses, &(&1 == :failed)) + details = + Enum.map(@enrichment_fields, fn {field, name} -> + {name, Map.get(contact, field)} + end) + + done = Enum.count(details, fn {_, s} -> s in @done_statuses end) + failed = Enum.count(details, fn {_, s} -> s == :failed end) {label, class} = cond do @@ -88,10 +97,15 @@ defmodule MicrowavepropWeb.ContactLive.Index do true -> {"Pending", "badge-ghost"} end - assigns = %{label: label, class: class} + tooltip = + Enum.map_join(details, ", ", fn {name, status} -> + "#{name}: #{status}" + end) + + assigns = %{label: label, class: class, tooltip: tooltip} ~H""" - {@label} + {@label} """ end