diff --git a/lib/microwaveprop_web/live/weather_map_live.ex b/lib/microwaveprop_web/live/weather_map_live.ex index 11fc7d66..dbbce71c 100644 --- a/lib/microwaveprop_web/live/weather_map_live.ex +++ b/lib/microwaveprop_web/live/weather_map_live.ex @@ -12,12 +12,24 @@ defmodule MicrowavepropWeb.WeatherMapLive do } @layers [ - %{id: "refractivity_gradient", label: "Refractivity Gradient", unit: "N/km"}, - %{id: "bl_height", label: "Boundary Layer", unit: "m"}, - %{id: "dewpoint_depression", label: "Dewpoint Depression", unit: "°C"}, - %{id: "pwat", label: "Precipitable Water", unit: "mm"}, - %{id: "temperature", label: "Temperature", unit: "°C"}, - %{id: "ducting", label: "Ducting Detected", unit: ""} + # Surface + %{id: "temperature", label: "Temperature", unit: "°C", group: "Surface"}, + %{id: "dewpoint_depression", label: "Td Depression", unit: "°C", group: "Surface"}, + %{id: "surface_rh", label: "Humidity", unit: "%", group: "Surface"}, + %{id: "pwat", label: "PWAT", unit: "mm", group: "Surface"}, + %{id: "surface_refractivity", label: "Refractivity", unit: "N", group: "Surface"}, + %{id: "refractivity_gradient", label: "N-Gradient", unit: "N/km", group: "Surface"}, + %{id: "bl_height", label: "BL Height", unit: "m", group: "Surface"}, + # Upper Air + %{id: "temp_850mb", label: "T @ 850mb", unit: "°C", group: "Upper Air"}, + %{id: "dewpoint_850mb", label: "Td @ 850mb", unit: "°C", group: "Upper Air"}, + %{id: "lapse_rate", label: "Lapse Rate", unit: "°C/km", group: "Upper Air"}, + %{id: "inversion_strength", label: "Inversion", unit: "°C", group: "Upper Air"}, + %{id: "inversion_base_m", label: "Inv. Base", unit: "m", group: "Upper Air"}, + # Ducting + %{id: "ducting", label: "Ducting", unit: "", group: "Ducting"}, + %{id: "duct_base_m", label: "Duct Base", unit: "m", group: "Ducting"}, + %{id: "duct_strength", label: "Duct Strength", unit: "M", group: "Ducting"} ] @impl true @@ -79,6 +91,14 @@ defmodule MicrowavepropWeb.WeatherMapLive do {:noreply, socket} end + @group_order ["Surface", "Upper Air", "Ducting"] + + defp group_layers(layers) do + layers + |> Enum.group_by(& &1.group) + |> Enum.sort_by(fn {group, _} -> Enum.find_index(@group_order, &(&1 == group)) || 99 end) + end + @impl true def render(assigns) do ~H""" @@ -121,19 +141,26 @@ defmodule MicrowavepropWeb.WeatherMapLive do - <%!-- Layer pill buttons --%> -
- + <%!-- Layer pill buttons grouped --%> +
+
+
+ {group} +
+
+ +
+
<%!-- Links --%>