{t("Monitor and triage network alerts, grouped by site with subscriber impact.")}
<%!-- Filter pills --%><%= case @filter do %> <% "unresolved" -> %> {t("No active alerts. Your network is looking good!")} <% "critical" -> %> {t("No critical alerts. Nice work keeping things healthy!")} <% "resolved" -> %> {t("No resolved alerts yet.")} <% _ -> %> {t("No active alerts. Your network is looking good!")} <% end %>
| {t("Device")} | {t("Site")} | {t("Message")} | {t("Duration")} | {t("Impact")} | {t("Actions")} | ||
|---|---|---|---|---|---|---|---|
|
<.icon
:if={MapSet.member?(@selected_alerts, alert.id)}
name="hero-check"
class="h-3 w-3 text-white"
/>
|
<%!-- Severity bar --%>
<%!-- Device --%> |
<%= if alert.alert_type == "device_down" do %>
<.icon name="hero-arrow-down" class="h-3 w-3" /> DOWN
<% else %>
<.icon name="hero-arrow-up" class="h-3 w-3" /> UP
<% end %>
<.link
navigate={~p"/devices/#{alert.device.id}"}
class="text-sm font-medium text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300"
>
{alert.device.name}
{alert.device.ip_address}
|
<%!-- Site --%>
<%= if alert.device.site do %> <.link navigate={~p"/sites/#{alert.device.site.id}"} class="hover:text-blue-600 dark:hover:text-blue-400" > {alert.device.site.name} <% else %> — <% end %> | <%!-- Message --%>{alert.message || "—"} | <%!-- Duration --%>{duration_text(alert)} | <%!-- Impact --%><%= if impact = impact_text(alert, @site_subscribers) do %> <.icon name="hero-users" class="h-3 w-3" /> {impact} <% else %> — <% end %> | <%!-- Actions --%>
<%= if alert.acknowledged_at && is_nil(alert.resolved_at) do %>
Ack'd
<% end %>
<%= if alert.resolved_at do %>
{t("Resolved")}
<% end %>
<%= if alert.alert_type == "device_down" && is_nil(alert.acknowledged_at) && is_nil(alert.resolved_at) do %>
<% end %>
<%= if is_nil(alert.resolved_at) do %>
<% end %>
|
|
<%!-- Timeline --%>
{t("Timeline")}
{t("Triggered")}
{ToweropsWeb.TimeHelpers.format_iso8601(
alert.triggered_at,
@timezone
)}
<%= if alert.acknowledged_at do %>
{t("Ack'd")}
{ToweropsWeb.TimeHelpers.format_iso8601(
alert.acknowledged_at,
@timezone
)}
<%= if alert.acknowledged_by do %>
by {alert.acknowledged_by.email}
<% end %>
<% end %>
<%= if alert.resolved_at do %>
{t("Resolved")}
{ToweropsWeb.TimeHelpers.format_iso8601(
alert.resolved_at,
@timezone
)}
<% end %>
{t("Impact")}
<.icon name="hero-users" class="h-3.5 w-3.5 text-amber-500" />
{format_number(alert.gaiia_impact["total_subscribers"])} subscribers affected
<%!-- Financial data: role-gated --%>
<%= if @can_view_financials && alert.gaiia_impact["total_mrr"] && alert.gaiia_impact["total_mrr"] != "0" do %>
<.icon
name="hero-currency-dollar"
class="h-3.5 w-3.5 text-amber-500"
/>
${alert.gaiia_impact["total_mrr"]}/mo at risk
<% end %>
{t("Details")}{alert.message} |
|||||||