Skip to contents

This is a low level module to handle teal_data_module execution and validation. teal_transform_module() inherits from teal_data_module() so it is handled by this module too. srv_teal() accepts various data objects and eventually they are all transformed to reactive teal_data() which is a standard data class in whole teal framework.

Usage

ui_teal_data(id, data_module = function(id) NULL)

srv_teal_data(
  id,
  data_module = function(id) NULL,
  modules = NULL,
  validate_shiny_silent_error = TRUE,
  is_transformer_failed = reactiveValues()
)

ui_validate_reactive_teal_data(id)

srv_validate_reactive_teal_data(
  id,
  data,
  modules = NULL,
  validate_shiny_silent_error = FALSE,
  hide_validation_error = reactive(FALSE)
)

Arguments

id

(character(1)) Module id

data_module

(teal_data_module)

modules

(teal_modules or teal_module) For datanames validation purpose

validate_shiny_silent_error

(logical) If TRUE, then shiny.silent.error is validated and

is_transformer_failed

(reactiveValues) contains logical flags named after each transformer. Help to determine if any previous transformer failed, so that following transformers can be disabled and display a generic failure message.

data

(reactive teal_data)

Value

reactive teal_data

data validation

Executed teal_data_module() is validated and output is validated for consistency. Output data is invalid if:

  1. teal_data_module() is invalid if server doesn't return reactive. Immediately crashes an app!

  2. reactive throws a shiny.error - happens when module creating teal_data() fails.

  3. reactive returns qenv.error - happens when teal_data() evaluates a failing code.

  4. reactive object doesn't return teal_data().

  5. teal_data() object lacks any datanames specified in the modules argument.

teal (observers in srv_teal) always waits to render an app until reactive teal_data is returned. If error 2-4 occurs, relevant error message is displayed to the app user. Once the issue is resolved, the app will continue to run. teal guarantees that errors in data don't crash the app (except error 1).