Handles async data loading with streams for MishkaGervaz tables.
This module manages:
- Initial data loading
- Pagination (load more)
- Filtering and sorting
- Stream management
- Async result handling
Sub-builders
DataLoader is composed of sub-builders that can be overridden:
QueryBuilder- Builds queries with filters and sortingFilterParser- Parses raw filter valuesPaginationHandler- Handles page loading and calculationsTenantResolver- Resolves tenant and actionsHookRunner- Executes lifecycle hooks
User Override
Override the entire data_loader module:
defmodule MyApp.Table.DataLoader do
use MishkaGervaz.Table.Web.DataLoader
def load_async(socket, state, opts) do
# Custom loading logic
super(socket, state, opts)
end
endOverride specific sub-builders:
defmodule MyApp.Table.DataLoader do
use MishkaGervaz.Table.Web.DataLoader,
query: MyApp.Table.DataLoader.QueryBuilder,
pagination: MyApp.Table.DataLoader.PaginationHandler
endOr override via DSL:
mishka_gervaz do
table do
data_loader do
query MyApp.Table.DataLoader.QueryBuilder
pagination MyApp.Table.DataLoader.PaginationHandler
end
end
endOverride entire data_loader module via DSL (positional argument):
mishka_gervaz do
table do
data_loader MyApp.Table.CustomDataLoader
end
endSee MishkaGervaz.Table.Web.DataLoader.Helpers,
MishkaGervaz.Table.Web.DataLoader.QueryBuilder,
MishkaGervaz.Table.Web.DataLoader.FilterParser,
MishkaGervaz.Table.Web.DataLoader.PaginationHandler,
MishkaGervaz.Table.Web.DataLoader.TenantResolver,
MishkaGervaz.Table.Web.DataLoader.HookRunner,
MishkaGervaz.Table.Web.DataLoader.RelationLoader,
MishkaGervaz.Table.Web.State,
MishkaGervaz.Table.Web.UrlSync,
MishkaGervaz.Table.Web.AutoState.
Summary
Functions
See MishkaGervaz.Table.Web.DataLoader.Default.apply_archive_status/3.
See MishkaGervaz.Table.Web.DataLoader.Default.apply_filters/3.
See MishkaGervaz.Table.Web.DataLoader.Default.apply_sort/3.
See MishkaGervaz.Table.Web.DataLoader.Default.handle_async/3.
See MishkaGervaz.Table.Web.DataLoader.Default.load_async/3.
See MishkaGervaz.Table.Web.DataLoader.Default.load_more/2.
See MishkaGervaz.Table.Web.DataLoader.Default.maybe_load/2.
See MishkaGervaz.Table.Web.DataLoader.Default.reload/2.
Functions
@spec apply_archive_status( Phoenix.LiveView.Socket.t(), MishkaGervaz.Table.Web.State.t(), :active | :archived ) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.apply_archive_status/3.
@spec apply_filters( Phoenix.LiveView.Socket.t(), MishkaGervaz.Table.Web.State.t(), map() ) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.apply_filters/3.
@spec apply_sort( Phoenix.LiveView.Socket.t(), MishkaGervaz.Table.Web.State.t(), atom() ) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.apply_sort/3.
@spec handle_async(atom(), {:ok, any()} | {:exit, any()}, Phoenix.LiveView.Socket.t()) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.handle_async/3.
@spec load_async( Phoenix.LiveView.Socket.t(), MishkaGervaz.Table.Web.State.t(), keyword() ) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.load_async/3.
@spec load_more(Phoenix.LiveView.Socket.t(), MishkaGervaz.Table.Web.State.t()) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.load_more/2.
@spec maybe_load(Phoenix.LiveView.Socket.t(), MishkaGervaz.Table.Web.State.t()) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.maybe_load/2.
@spec reload(Phoenix.LiveView.Socket.t(), MishkaGervaz.Table.Web.State.t()) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Table.Web.DataLoader.Default.reload/2.