defmodule ExESDBDashboard.ClusterComponent do @moduledoc """ LiveComponent for cluster view that can be embedded within other LiveViews. This provides a reusable cluster dashboard component with real-time updates via PubSub integration. """ use Phoenix.LiveComponent @impl true def mount(socket) do {:ok, socket} end @impl true def update(assigns, socket) do socket = socket |> assign(assigns) |> assign_new(:cluster_data, fn -> get_cluster_data() end) |> assign_new(:last_updated, fn -> DateTime.utc_now() end) {:ok, socket} end @impl true def handle_event("refresh", _params, socket) do cluster_data = get_cluster_data() socket = socket |> assign(:cluster_data, cluster_data) |> assign(:last_updated, DateTime.utc_now()) # Send update to parent LiveView send(self(), {:cluster_refreshed, cluster_data}) {:noreply, socket} end @impl true def render(assigns) do ~H"""
Real-time cluster monitoring
🕐 Last updated: <%= format_datetime(@last_updated) %>