Skip to contents

Logic including a modal-based UI for board actions such as "append block" or "edit stack" can be specified using action objects, which essentially are classed functions that can either be called to return a shiny module as_module = TRUE or a function as_module = FALSE which injects code (passed as expr) into a shiny server context.

Usage

new_action(func)

is_action(x)

is_action_module(x)

is_action_function(x)

add_block_action(trigger, as_module = TRUE)

append_block_action(trigger, as_module = TRUE)

remove_block_action(trigger, as_module = TRUE)

add_link_action(trigger, as_module = TRUE)

remove_link_action(trigger, as_module = TRUE)

add_stack_action(trigger, as_module = TRUE)

edit_stack_action(trigger, as_module = TRUE)

remove_stack_action(trigger, as_module = TRUE)

block_input_select(
  block = NULL,
  block_id = NULL,
  links = NULL,
  mode = c("create", "update", "inputs"),
  ...
)

block_registry_selectize(id, blocks = list_blocks())

board_select(id, blocks, selected = NULL, ...)

Arguments

func

A function which will be evaluated (with modified formals) in a shiny server context

x

Object

trigger

A string, function or shiny::reactive()

as_module

Logical flag controlling the return type

block

Block object

block_id

Block ID

Links object

mode

Switch for determining the return object

...

Forwarded to other methods

id

Input ID

blocks

Character vector of block registry IDs

selected

Character vector of pre-selected block (registry) IDs

Value

The constructor new_action returns a classed function that inherits from action. Inheritance can be checked with functions is_action(), is_action_module() and is_action_function(), which all return scalar logicals.

For utilities block_input_select(), block_registry_selectize() and board_select, see the respective sections.

Details

An action is a function that can be called with arguments trigger and as_module to return another function. The action trigger may either be a string (referring to an input), a function (that will be called with a single argument input) or a shiny::reactive() object. The flag as_module controls the behavior of the returned function: if TRUE, it is a function (inheriting from action_module) with arguments board, update, ... and domain, which, when called, again returns a function with arguments input, output and session, suitable as argument to shiny::moduleServer(). If FALSE is passed instead, a function (inheriting from action_function) with arguments board, update, ... and domain is returned.

The expression expr, passed when instantiating an action object will be evaluated in a context, where the following bindings exist: board, update, domain, input, output and session. In the case of as_module = FALSE, domain is an alias for session.

block_input_select()

Determine input options for a block by removing inputs that are already used and also takes into account some edge-cases, such as variadic blocks. If mode is set as "inputs", this will return a character vector, for "create", the return value of a shiny::selectizeInput() call and for "update", the return value of a shiny::updateSelectizeInput() call.

block_registry_selectize()

This creates UI for a block registry selector via shiny::selectizeInput() and returns an object that inherits from shiny.tag.

board_select()

Block selection UI, enumerating all blocks in a board is available as board_select(). An object that inherits from shiny.tag is returned, which contains the result from a shiny::selectizeInput() call.