Current section
Files
Jump to
Current section
Files
lib/server_logger/dashboard/page.ex
if Code.ensure_loaded?(Phoenix.LiveDashboard.PageBuilder) do
defmodule ServerLogger.Dashboard.Page do
@moduledoc """
Phoenix LiveDashboard custom page for viewing server logs.
## Usage
Add to your LiveDashboard configuration in your router:
live_dashboard "/dashboard",
additional_pages: [
server_logs: ServerLogger.Dashboard.Page
]
"""
use Phoenix.LiveDashboard.PageBuilder
@impl true
def menu_link(_, _) do
{:ok, "Server Logs"}
end
@impl true
def mount(params, _session, socket) do
{:ok, assign(socket, :query_params, params)}
end
@impl true
def handle_params(params, _url, socket) do
send_update(ServerLogger.Dashboard.Component,
id: :server_logger,
query_params: params
)
{:noreply, assign(socket, :query_params, params)}
end
@impl true
def render(assigns) do
~H"""
<.live_component
module={ServerLogger.Dashboard.Component}
id={:server_logger}
query_params={@query_params}
/>
"""
end
@impl true
def handle_info(:server_logger_refresh, socket) do
send_update(ServerLogger.Dashboard.Component, id: :server_logger, refresh_msg: :refresh)
{:noreply, socket}
end
@impl true
def handle_info({:update_query_params, params}, socket) do
page = socket.assigns.page
to =
Phoenix.LiveDashboard.PageBuilder.live_dashboard_path(
socket,
page.route,
page.node,
page.params,
params
)
{:noreply, push_patch(socket, to: to)}
end
end
end