From 080dac3813a8592dc5f4fcd8949cb4102a69f361 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sun, 27 Jul 2025 12:53:19 -0500 Subject: [PATCH] Improve status page cluster information display MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove APRS server port from status page server field - Add comprehensive cluster node list to cluster status section - Highlight leader node with primary badge and indicator dot - Display all cluster nodes in a responsive flex layout - Include all_nodes field in cluster_info for complete node visibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- lib/aprsme/cluster/leader_election.ex | 6 ++++-- lib/aprsme_web/live/status_live/index.ex | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/aprsme/cluster/leader_election.ex b/lib/aprsme/cluster/leader_election.ex index 8c7a256..93ac74d 100644 --- a/lib/aprsme/cluster/leader_election.ex +++ b/lib/aprsme/cluster/leader_election.ex @@ -210,7 +210,8 @@ defmodule Aprsme.Cluster.LeaderElection do Map.put(status, :cluster_info, %{ total_nodes: length(all_nodes), connected_nodes: length(connected_statuses), - leader_node: get_leader_node_name() + leader_node: get_leader_node_name(), + all_nodes: all_nodes |> Enum.map(&to_string/1) |> Enum.sort() }) [] -> @@ -220,7 +221,8 @@ defmodule Aprsme.Cluster.LeaderElection do Map.put(local_status, :cluster_info, %{ total_nodes: length(all_nodes), connected_nodes: 0, - leader_node: get_leader_node_name() + leader_node: get_leader_node_name(), + all_nodes: all_nodes |> Enum.map(&to_string/1) |> Enum.sort() }) end end diff --git a/lib/aprsme_web/live/status_live/index.ex b/lib/aprsme_web/live/status_live/index.ex index dc83f16..acaff08 100644 --- a/lib/aprsme_web/live/status_live/index.ex +++ b/lib/aprsme_web/live/status_live/index.ex @@ -137,7 +137,7 @@ defmodule AprsmeWeb.StatusLive.Index do
{gettext("Server:")} - {@aprs_status.server}:{@aprs_status.port} + {@aprs_status.server}
@@ -317,6 +317,28 @@ defmodule AprsmeWeb.StatusLive.Index do + <%= if Map.has_key?(@aprs_status.cluster_info, :all_nodes) do %> +
+ {gettext("Cluster Nodes:")} +
+ <%= for node_name <- @aprs_status.cluster_info.all_nodes do %> +
+ <%= if node_name == @aprs_status.cluster_info.leader_node do %> +
+ <% end %> + {node_name} +
+ <% end %> +
+

+ {gettext("Leader node")} {gettext("highlighted")} +

+
+ <% end %> +

{gettext( "Status is aggregated from all nodes in the cluster. Only the leader node maintains the APRS-IS connection."