Current section

Files

Jump to
exq_ui lib exq_ui_web live components realtime_stats_component.ex
Raw

lib/exq_ui_web/live/components/realtime_stats_component.ex

defmodule ExqUIWeb.RealtimeStatsComponent do
use ExqUIWeb, :live_component
alias ExqUI.Queue
@tick_interval 5_000
@impl true
def mount(socket) do
if connected?(socket) do
send_update_after(__MODULE__, [id: "realtime-stats"], 0)
end
{:ok, socket}
end
@impl true
def update(assigns, socket) do
stats = Queue.realtime_stats(assigns[:stats])
send_update_after(
__MODULE__,
[id: "realtime-stats", stats: stats],
@tick_interval
)
socket = push_event(socket, "append-point", Map.take(stats, [:processed, :failed]))
{:ok, assign(socket, stats: stats, tick_interval: @tick_interval)}
end
end