Skip to contents

It evaluates the raw_data (delayed data mechanism) and creates the datasets object that is shared across modules. Once it is ready and non-NULL, the splash screen is replaced by the main teal UI that depends on the data. The currently active tab is tracked and the right filter panel updates the displayed datasets to filter for according to the active datanames of the tab.

Usage

srv_teal(id, modules, raw_data, filter = list())

Arguments

id

(character)
module id to embed it, if provided, the server function must be called with shiny::moduleServer(); See the vignette for an example. However, ui_teal_with_splash() is then preferred to this function.

modules

(list, teal_modules or teal_module)
nested list of teal_modules or teal_module objects or a single teal_modules or teal_module object. These are the specific output modules which will be displayed in the teal application. See modules() and module() for more details.

raw_data

(reactive)
returns the TealData, only evaluated once, NULL value is ignored

filter

(list)
You can define filters that show when the app starts. List names should be named according to datanames passed to the data argument. In case of data.frame` the list should be composed as follows:

list(<dataname1> = list(<varname1> = ..., <varname2> = ...),
     <dataname2> = list(...),
     ...)

For example, filters for variable Sepal.Length in iris can be specified as follows:

list(iris = list(Sepal.Length = list(selected = c(5.0, 7.0))))
# or
list(iris = list(Sepal.Length = c(5.0, 7.0)))

In case developer would like to include NA and Inf values in the filtered dataset.

list(Species = list(selected = c(5.0, 7.0), keep_na = TRUE, keep_inf = TRUE))
list(Species = c(c(5.0, 7.0), NA, Inf))

To initialize with specific variable filter with all values on start, one can use

list(Species = list())

filter should be set with respect to the class of the column:

  • numeric: selected should be a two elements vector defining the range of the filter.

  • Date: selected should be a two elements vector defining the date-range of the filter

  • POSIXct: selected should be a two elements vector defining the datetime range of the filter

  • character and factor: selected should be a vector of any length defining initial values selected to filter.
    filter for MultiAssayExperiment objects should be specified in slightly different way. Since it contains patient data with list of experiments, filter list should be created as follows:

list(
  <MAE dataname> = list(
    subjects = list(<column in colData> = ..., <column in colData> = ...),
    <experiment name> = list(
      subset = list(<column in rowData of experiment> = ...,
                    <column in rowData of experiment> = ...),
      select = list(<column in colData of experiment> = ...,
                    <column in colData of experiment> = ...)
    )
  )
)

By adding the filterable attribute it is possible to control which variables can be filtered for each dataset. See the example below where ADSL can only be filtered by AGE, SEX or RACE.

Value

reactive which returns the currently active module

Details

For more doc, see ui_teal().