fix bugs on agents screen

This commit is contained in:
Graham McIntire 2026-02-09 14:03:40 -06:00
parent a50c8e6314
commit 41594e5a96
No known key found for this signature in database
2 changed files with 25 additions and 12 deletions

View file

@ -56,7 +56,10 @@ defmodule ToweropsWeb.AgentLive.Index do
|> assign(:timezone, socket.assigns.current_scope.timezone)
|> assign(:is_superuser, is_superuser)
|> stream(:agent_tokens, agent_tokens)
|> assign(:cloud_pollers, cloud_pollers)
|> assign(:has_agents, agent_tokens != [])
|> stream(:cloud_pollers, cloud_pollers)
|> assign(:cloud_pollers_list, cloud_pollers)
|> assign(:has_cloud_pollers, cloud_pollers != [])
|> assign(:global_default_cloud_poller_id, global_default_cloud_poller_id)
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|> assign(:device_counts, equipment_counts)
@ -128,7 +131,8 @@ defmodule ToweropsWeb.AgentLive.Index do
{:noreply,
socket
|> assign(:agent_tokens, agent_tokens)
|> stream(:agent_tokens, agent_tokens, reset: true)
|> assign(:has_agents, agent_tokens != [])
|> assign(:new_token, %{agent_token: new_agent_token, token: token})
|> assign(:show_token_modal, true)
|> put_flash(:info, t_equipment("New token generated successfully"))}
@ -184,8 +188,11 @@ defmodule ToweropsWeb.AgentLive.Index do
{:noreply,
socket
|> assign(:agent_tokens, agent_tokens)
|> assign(:cloud_pollers, cloud_pollers)
|> stream(:agent_tokens, agent_tokens, reset: true)
|> assign(:has_agents, agent_tokens != [])
|> stream(:cloud_pollers, cloud_pollers, reset: true)
|> assign(:cloud_pollers_list, cloud_pollers)
|> assign(:has_cloud_pollers, cloud_pollers != [])
|> assign(:global_default_cloud_poller_id, global_default_cloud_poller_id)
|> assign(:selected_global_default, global_default_cloud_poller_id || "")
|> assign(:device_counts, equipment_counts)
@ -288,8 +295,11 @@ defmodule ToweropsWeb.AgentLive.Index do
{:noreply,
socket
|> assign(:agent_tokens, agent_tokens)
|> assign(:cloud_pollers, cloud_pollers)
|> stream(:agent_tokens, agent_tokens, reset: true)
|> assign(:has_agents, agent_tokens != [])
|> stream(:cloud_pollers, cloud_pollers, reset: true)
|> assign(:cloud_pollers_list, cloud_pollers)
|> assign(:has_cloud_pollers, cloud_pollers != [])
|> assign(:device_counts, equipment_counts)
|> assign(:cloud_poller_counts, cloud_poller_counts)
|> assign(:agent_health_stats, agent_health_stats)
@ -389,7 +399,10 @@ defmodule ToweropsWeb.AgentLive.Index do
socket
|> stream(:agent_tokens, agent_tokens, reset: true)
|> assign(:cloud_pollers, cloud_pollers)
|> assign(:has_agents, agent_tokens != [])
|> stream(:cloud_pollers, cloud_pollers, reset: true)
|> assign(:cloud_pollers_list, cloud_pollers)
|> assign(:has_cloud_pollers, cloud_pollers != [])
|> assign(:device_counts, equipment_counts)
|> assign(:cloud_poller_counts, cloud_poller_counts)
|> assign(:agent_health_stats, agent_health_stats)

View file

@ -52,7 +52,7 @@
</div>
</div>
<%= if Enum.empty?(@streams.agent_tokens) do %>
<%= if !@has_agents do %>
<div class="text-center py-16">
<.icon name="hero-server" class="mx-auto h-12 w-12 text-gray-400 dark:text-gray-500" />
<h3 class="mt-4 text-lg font-semibold text-gray-900 dark:text-white">No agents</h3>
@ -176,7 +176,7 @@
<% end %>
<%!-- Cloud Pollers Section (Superadmin Only) --%>
<%= if @is_superuser && @cloud_pollers != [] do %>
<%= if @is_superuser && @has_cloud_pollers do %>
<div class="mt-12">
<h2 class="text-lg font-semibold text-gray-900 dark:text-white mb-4">
Cloud Pollers
@ -184,7 +184,7 @@
<p class="text-sm text-gray-600 dark:text-gray-400 mb-4">
Application-wide agents that can poll devices for any organization. Only visible and manageable by superadmins.
</p>
<.table id="cloud-pollers-table" rows={@cloud_pollers}>
<.table id="cloud-pollers-table" rows={@streams.cloud_pollers}>
<:col :let={{_id, agent}} label="Name">
<div class="flex items-center gap-2">
<.link
@ -315,7 +315,7 @@
class="block w-full rounded-md border-amber-300 dark:border-amber-700 bg-white dark:bg-gray-900 text-gray-900 dark:text-white shadow-sm focus:border-amber-500 focus:ring-amber-500 sm:text-sm"
>
<option value="">No global default (direct Phoenix polling)</option>
<%= for cloud_poller <- @cloud_pollers do %>
<%= for cloud_poller <- @cloud_pollers_list do %>
<option value={cloud_poller.id}>
{cloud_poller.name}
<%= if cloud_poller.id == @global_default_cloud_poller_id do %>
@ -328,7 +328,7 @@
<%= if @global_default_cloud_poller_id do %>
<% selected_poller =
Enum.find(@cloud_pollers, &(&1.id == @global_default_cloud_poller_id)) %>
Enum.find(@cloud_pollers_list, &(&1.id == @global_default_cloud_poller_id)) %>
<%= if selected_poller do %>
<p class="text-xs text-amber-600 dark:text-amber-400">
<.icon name="hero-check-circle" class="h-4 w-4 inline" /> Currently using: