View Source Kino.Frame (Kino v0.5.2)

A placeholder for outputs.

A frame wraps outputs that can be dynamically updated at any time.

Also see Kino.animate/3 which offers a convenience on top of this widget.

Examples

widget = Kino.Frame.new() |> Kino.render()

for i <- 1..100 do
  Kino.Frame.render(widget, i)
  Process.sleep(50)
end

Or with a scheduled task in the background.

widget = Kino.Frame.new() |> Kino.render()

Kino.Frame.periodically(widget, 50, 0, fn i ->
  Kino.Frame.render(widget, i)
  {:cont, i + 1}
end)

Link to this section Summary

Functions

Renders and appends the given term to the frame.

Removes all outputs within the given frame.

Starts a widget process.

Registers a callback to run periodically in the widget process.

Renders the given term within the frame.

Link to this section Types

Link to this section Functions

Specs

append(t(), term()) :: :ok

Renders and appends the given term to the frame.

Specs

clear(t()) :: :ok

Removes all outputs within the given frame.

Specs

new() :: t()

Starts a widget process.

Link to this function

periodically(widget, interval_ms, acc, fun)

View Source

Specs

periodically(t(), pos_integer(), term(), (term() -> {:cont, term()} | :halt)) ::
  :ok

Registers a callback to run periodically in the widget process.

The callback is run every interval_ms milliseconds and receives the accumulated value. The callback should return either of:

  • {:cont, acc} - the continue with the new accumulated value

  • :halt - to no longer schedule callback evaluation

The callback is run for the first time immediately upon registration.

Specs

render(t(), term()) :: :ok

Renders the given term within the frame.

This works similarly to Kino.render/1, but the rendered output replaces existing frame contents.