defmodule Observer.Web.Metrics.Page do @moduledoc """ This is the live component responsible for handling the Live Metrics """ @behaviour Observer.Web.Page use Observer.Web, :live_component alias Observer.Web.Components.Attention alias Observer.Web.Components.Core alias Observer.Web.Components.Metrics.Phoenix, as: MetricsPhoenix alias Observer.Web.Components.Metrics.PhxLvSocket alias Observer.Web.Components.Metrics.VmLimits alias Observer.Web.Components.Metrics.VmMemory alias Observer.Web.Components.Metrics.VmPortMemory alias Observer.Web.Components.Metrics.VmProcessMemory alias Observer.Web.Components.Metrics.VmRunQueue alias Observer.Web.Components.MultiSelect alias Observer.Web.Page alias ObserverWeb.Telemetry @impl Phoenix.LiveComponent def render(assigns) do unselected_services_keys = assigns.node_info.services_keys -- assigns.node_info.selected_services_keys unselected_metrics_keys = assigns.node_info.metrics_keys -- assigns.node_info.selected_metrics_keys attention_msg = "" mode_color = case assigns.mode do :observer -> "text-white bg-gradient-to-r from-teal-400 via-teal-500 to-teal-600 hover:bg-gradient-to-br focus:ring-4 focus:outline-none focus:ring-teal-300 dark:focus:ring-teal-800 shadow-lg shadow-teal-500/50 dark:shadow-lg dark:shadow-teal-800/80" :broadcast -> "text-white bg-gradient-to-r from-pink-400 via-pink-500 to-pink-600 hover:bg-gradient-to-br focus:ring-4 focus:outline-none focus:ring-pink-300 dark:focus:ring-pink-800 shadow-lg shadow-pink-500/50 dark:shadow-lg dark:shadow-pink-800/80" _local_or_nil -> "text-white bg-gradient-to-r from-cyan-400 via-cyan-500 to-cyan-600 hover:bg-gradient-to-br focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800 shadow-lg shadow-cyan-500/50 dark:shadow-lg dark:shadow-cyan-800/80" end assigns = assigns |> assign(unselected_services_keys: unselected_services_keys) |> assign(unselected_metrics_keys: unselected_metrics_keys) |> assign(attention_msg: attention_msg) |> assign(mode_color: mode_color) |> assign( services_unselected_highlight: (Node.list() ++ [Node.self()]) |> Enum.map(&Atom.to_string/1) ) ~H"""