View Source Kino.Table behaviour (Kino v0.14.0)
A behaviour module for implementing tabular kinos.
This module implements table visualization and delegates data fetching and traversal to the behaviour implementation.
Summary
Types
The following types have meaning on the front-end
Callbacks
Exports the data for download.
Loads data matching the given specification.
Invoked once to initialize server state.
Invoked to update state with new data.
Functions
Creates a new tabular kino using the given module as data specification.
Updates the table with new data.
Types
@type rows_spec() :: %{ offset: non_neg_integer(), limit: pos_integer(), order: nil | %{direction: :asc | :desc, key: term()}, relocates: [%{from_index: non_neg_integer(), to_index: non_neg_integer()}] }
@type state() :: term()
@type t() :: Kino.JS.Live.t()
@type type() :: String.t()
The following types have meaning on the front-end:
- "date"
- "list"
- "number"
- "struct"
- "text"
- "uri"
Callbacks
@callback export_data(rows_spec(), state(), String.t()) :: {:ok, %{data: binary(), extension: String.t(), type: String.t()}}
Exports the data for download.
The returned map must contain the binary, the file extension and the mime type.
@callback get_data(rows_spec(), state()) :: {:ok, %{ columns: [column()], data: {:columns | :rows, [[String.t()]]}, total_rows: non_neg_integer() | nil }, state()}
Loads data matching the given specification.
Invoked once to initialize server state.
Invoked to update state with new data.
This callback is called in response to update/2
.
Functions
Creates a new tabular kino using the given module as data specification.
Options
:export
- a function called to export the given kino to Markdown. This works the same asKino.JS.new/3
, except the function receives the state as an argument
Updates the table with new data.
An arbitrary update event can be used and it is then handled by
the on_update/2
callback.