JavaScript
-
Value
-
+
Value
A shiny.tag.list
.
-
Details
-
+
Details
Simply add include_teal_css_js()
as one of the UI elements.
-
+
-
+
+
+
-
-
diff --git a/main/reference/index.html b/main/reference/index.html
index 45146ecd19..35b0b1bbf7 100644
--- a/main/reference/index.html
+++ b/main/reference/index.html
@@ -1,19 +1,5 @@
-
-
-
-
-
-
-Package index • teal
-
-
-
-
-
-
-
-
-
+
+Package index • teal
Skip to contents
@@ -21,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -116,311 +74,239 @@ Package index
-
Core teal
functions
-
+
Core teal
functions
Main functions needed to build a teal
app
-
-
+
-
+
Helper Functions
Helper functions for teal
-
-
+
-
-
+
-
-
+
-
-
+
-
-
Functions for module developers
-
+
+
Functions for module developers
-
-
+
-
-
Validation functions
-
+
-
+
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/init.html b/main/reference/init.html
index 3c611ab9f3..c1c2f9934b 100644
--- a/main/reference/init.html
+++ b/main/reference/init.html
@@ -1,25 +1,9 @@
-
-
-
-
-
-
-Create the server and UI function for the shiny app — init • teal
-
-
-
-
-
-Create the server and UI function for the shiny app — init • teal
-
-
-
-
-
+teal app that is composed of teal modules.">
Skip to contents
@@ -27,7 +11,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -130,8 +86,7 @@ Create the server and UI function for the shiny
app
-
Usage
-
+
Usage
init(
data,
modules,
@@ -145,20 +100,16 @@ Usage
-
Arguments
-
+
Arguments
-
-- data
-
+- data
(teal_data
or teal_data_module
)
For constructing the data object, refer to teal_data()
and teal_data_module()
.
If datanames
are not set for the teal_data
object, defaults from the teal_data
environment will be used.
-- modules
-
+- modules
(list
or 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
@@ -166,55 +117,46 @@
Argumentsfilter
-
+- filter
(teal_slices
) Optionally,
specifies the initial filter using teal_slices()
.
-- title
-
+- title
(shiny.tag
or character(1)
) Optionally,
the browser window title. Defaults to a title "teal app" with the icon of NEST.
Can be created using the build_app_title()
or
by passing a valid shiny.tag
which is a head tag with title and link tag.
-
+
(shiny.tag
or character(1)
) Optionally,
the header of the app.
-
+
(shiny.tag
or character(1)
) Optionally,
the footer of the app.
-- id
-
+- id
(character
) Optionally,
a string specifying the shiny
module id in cases it is used as a shiny
module
rather than a standalone shiny
app. This is a legacy feature.
-- landing_popup
-
+- landing_popup
(teal_module_landing
) Optionally,
a landing_popup_module
to show up as soon as the teal app is initialized.
-
-
+
-
Value
-
+
Value
Named list containing server and UI functions.
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/is_arg_used.html b/main/reference/is_arg_used.html
index 7831924e95..6120ab2cd5 100644
--- a/main/reference/is_arg_used.html
+++ b/main/reference/is_arg_used.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Does the object make use of the arg — is_arg_used • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Does the object make use of the arg — is_arg_used • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -114,8 +70,7 @@
@@ -125,48 +80,39 @@ Does the object make use of the arg
-
Usage
-
+
Usage
is_arg_used(modules, arg)
-
Arguments
-
+
Arguments
-
-- modules
-
+- modules
(teal_module
or teal_modules
) object
-- arg
-
+- arg
(character(1)
) names of the arguments to be checked against formals of teal
modules.
-
-
+
-
Value
-
+
Value
logical
whether the object makes use of arg
.
-
+
-
+
+
+
-
-
diff --git a/main/reference/landing_popup_module.html b/main/reference/landing_popup_module.html
index 786aef4f4b..d1c3816c61 100644
--- a/main/reference/landing_popup_module.html
+++ b/main/reference/landing_popup_module.html
@@ -1,25 +1,9 @@
-
-
-
-
-
-
-Landing popup module — landing_popup_module • teal
-
-
-
-
-
-Landing popup module — landing_popup_module • teal
-
-
-
-
-
+The dialog blocks access to the application and must be closed with a button before the application can be viewed.">
Skip to contents
@@ -27,7 +11,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -130,8 +86,7 @@ Landing popup module
-
Usage
-
+
Usage
landing_popup_module(
label = "Landing Popup",
title = NULL,
@@ -141,42 +96,33 @@ Usage
-
Arguments
-
+
Arguments
-
-- label
-
+- label
(character(1)
) Label of the module.
-- title
-
+- title
(character(1)
) Text to be displayed as popup title.
-- content
-
+- content
(character(1)
, shiny.tag
or shiny.tag.list
) with the content of the popup.
Passed to ...
of shiny::modalDialog
. See examples.
-- buttons
-
+- buttons
(shiny.tag
or shiny.tag.list
) Typically a modalButton
or actionButton
. See examples.
-
-
+
-
Value
-
+
Value
A teal_module
(extended with teal_landing_module
class) to be used in teal
applications.
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/module_bookmark_manager.html b/main/reference/module_bookmark_manager.html
index c46c11acaa..a2c40efc67 100644
--- a/main/reference/module_bookmark_manager.html
+++ b/main/reference/module_bookmark_manager.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-App state management. — module_bookmark_manager • teal
-
-
-
-
-
-
-
-
-
-
-
+
+App state management. — module_bookmark_manager • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,8 +83,7 @@ App state management.
-
Usage
-
+
Usage
ui_bookmark_panel(id, modules)
srv_bookmark_panel(id, modules)
@@ -139,36 +94,29 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character
) Optionally,
a string specifying the shiny
module id in cases it is used as a shiny
module
rather than a standalone shiny
app. This is a legacy feature.
-- modules
-
+- modules
(list
or 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.
-
-
+
-
Value
-
+
Value
Invisible NULL
.
-
Details
-
+
Details
This module introduces bookmarks into teal
apps: the shiny
bookmarking mechanism becomes enabled
and server-side bookmarks can be created.
The bookmark manager presents a button with the bookmark icon and is placed in the tab-bar.
@@ -180,8 +128,7 @@
Details
should set the teal_bookmarkable
attribute to TRUE
.
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_data_summary.html b/main/reference/module_data_summary.html
index 4c03720d4e..7791d48034 100644
--- a/main/reference/module_data_summary.html
+++ b/main/reference/module_data_summary.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Data summary — module_data_summary • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Data summary — module_data_summary • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,8 +80,7 @@ Data summary
-
Usage
-
+
Usage
ui_data_summary(id)
srv_data_summary(id, teal_data)
@@ -140,76 +95,60 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character(1)
) shiny
module instance id.
-- teal_data
-
+- teal_data
(reactive
returning teal_data
)
-- current_data
-
+- current_data
(object
) current object (after filtering and transforming).
-- initial_data
-
+- initial_data
(object
) initial object.
-- dataname
-
+- dataname
(character(1)
)
-- subject_keys
-
+- subject_keys
(character
) names of the columns which determine a single unique subjects
-
-
+
-
Details
-
+
Details
Handling different data classes:
-get_filter_overview()
is a pseudo S3 method which has variants for:
-
-array
(data.frame
, DataFrame
, array
, Matrix
and SummarizedExperiment
): Method variant
+get_filter_overview()
is a pseudo S3 method which has variants for:
array
(data.frame
, DataFrame
, array
, Matrix
and SummarizedExperiment
): Method variant
can be applied to any two-dimensional objects on which ncol()
can be used.
MultiAssayExperiment
: for which summary contains counts for colData
and all experiments
.
For other data types module displays data name with warning icon and no more details.
-
-Module includes also "Show/Hide unsupported" button to toggle rows of the summary table
+
Module includes also "Show/Hide unsupported" button to toggle rows of the summary table
containing datasets where number of observations are not calculated.
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_filter_data.html b/main/reference/module_filter_data.html
index f7967194c4..619b319b36 100644
--- a/main/reference/module_filter_data.html
+++ b/main/reference/module_filter_data.html
@@ -1,29 +1,13 @@
-
-
-
-
-
-
-Filter panel module in teal — module_filter_data • teal
-
-
-
-
-
-Filter panel module in teal — module_filter_data • teal
-
-
-
-
-
+currently displayed.">
Skip to contents
@@ -31,7 +15,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -136,8 +92,7 @@ Filter panel module in teal
-
Usage
-
+
Usage
ui_filter_data(id)
srv_filter_data(id, datasets, active_datanames, data_rv, is_active)
@@ -150,70 +105,56 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character
) Optionally,
a string specifying the shiny
module id in cases it is used as a shiny
module
rather than a standalone shiny
app. This is a legacy feature.
-- datasets
-
+- datasets
(reactive
returning FilteredData
or NULL
)
When datasets
is passed from the parent module (srv_teal
) then dataset
is a singleton
which implies in filter-panel to be "global". When NULL
then filter-panel is "module-specific".
-- active_datanames
-
+- active_datanames
(reactive
returning character
) this module's data names
-- data_rv
-
+- data_rv
(reactive
returning teal_data
)
-- modules
-
+- modules
(list
or 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.
-
-
+
-
Value
-
+
Value
A eventReactive
containing teal_data
containing filtered objects and filter code.
-eventReactive
triggers only if all conditions are met:
-
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_filter_manager.html b/main/reference/module_filter_manager.html
index 6a7f559dbb..d75f38f1d1 100644
--- a/main/reference/module_filter_manager.html
+++ b/main/reference/module_filter_manager.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Manage multiple FilteredData objects — module_filter_manager • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Manage multiple FilteredData objects — module_filter_manager • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,8 +80,7 @@ Manage multiple FilteredData
objects
-
Usage
-
+
Usage
ui_filter_manager_panel(id)
srv_filter_manager_panel(id, slices_global)
@@ -138,95 +93,71 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character(1)
)
shiny
module instance id.
-- slices_global
-
+- slices_global
(reactiveVal
)
containing teal_slices
.
-- module_fd
-
+- module_fd
(FilteredData
)
Object containing the data to be filtered in a single teal
module.
-
-
+
-
Value
-
+
Value
Module returns a slices_global
(reactiveVal
) containing a teal_slices
object with mapping.
-
Slices global
-
+
Slices global
The key role in maintaining the module-specific filter states is played by the .slicesGlobal
-object. It is a reference class that holds the following fields:
-
-all_slices
(reactiveVal
) - reactive value containing all filters registered in an app.
+object. It is a reference class that holds the following fields:all_slices
(reactiveVal
) - reactive value containing all filters registered in an app.
module_slices_api
(reactiveValues
) - reactive field containing references to each modules'
FilteredData
object methods. At this moment it is used only in srv_filter_manager
to display
the filter states in a table combining informations from all_slices
and from
FilteredData$get_available_teal_slices()
.
-
-During a session only new filters are added to all_slices
unless module_snapshot_manager
is
+
During a session only new filters are added to all_slices
unless module_snapshot_manager
is
used to restore previous state. Filters from all_slices
can be activated or deactivated in a
-module which is linked (both ways) by attr(, "mapping")
so that:
-
+
-
Filter manager
-
+
Filter manager
-
Filter-manager is split into two parts:
-
-ui/srv_filter_manager_panel
- Called once for the whole app. This module observes changes in
+
Filter-manager is split into two parts:
ui/srv_filter_manager_panel
- Called once for the whole app. This module observes changes in
the filters in slices_global
and displays them in a table utilizing information from mapping
:
-
-
(TRUE
) - filter is active in the module
(FALSE
) - filter is inactive in the module
(NA
) - filter is not available in the module
-
-
-ui/srv_module_filter_manager
- Called once for each teal_module
. Handling filter states
+
ui/srv_module_filter_manager
- Called once for each teal_module
. Handling filter states
for of single module and keeping module FilteredData
consistent with slices_global
, so that
local filters are always reflected in the slices_global
and its mapping and vice versa.
-
-
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_init_data.html b/main/reference/module_init_data.html
index f369f0a0c4..6c8a0351d5 100644
--- a/main/reference/module_init_data.html
+++ b/main/reference/module_init_data.html
@@ -1,31 +1,15 @@
-
-
-
-
-
-
-Data Module for teal — module_init_data • teal
-
-
-
-
-
-Data Module for teal — module_init_data • teal
-
-
-
-
-
+">
Skip to contents
@@ -33,7 +17,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -131,66 +87,51 @@ Data Module for teal
This module manages the data
argument for srv_teal
. The teal
framework uses teal_data()
,
-which can be provided in various ways:
-
-Directly as a teal.data::teal_data()
object. This will automatically convert it into a reactive
teal_data
.
+which can be provided in various ways:Directly as a teal.data::teal_data()
object. This will automatically convert it into a reactive
teal_data
.
As a reactive
object that returns a teal.data::teal_data()
object.
-
-
+
-
Usage
-
+
Usage
ui_init_data(id)
srv_init_data(id, data)
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character
) Optionally,
a string specifying the shiny
module id in cases it is used as a shiny
module
rather than a standalone shiny
app. This is a legacy feature.
-- data
-
+- data
(teal_data
, teal_data_module
, or reactive
returning teal_data
)
The data which application will depend on.
-
-
+
-
Value
-
+
Value
A reactive
object that returns:
Output of the data
. If data
fails then returned error is handled (after tryCatch()
) so that
rest of the application can respond to this respectively.
-
Details
-
+
Details
-
Reactive teal_data
:
-
+
Reactive teal_data
:
The data in the application can be reactively updated, prompting srv_teal()
to rebuild the
-content accordingly. There are two methods for creating interactive teal_data
:
-
-Using a reactive
object provided from outside the teal
application. In this scenario,
+content accordingly. There are two methods for creating interactive teal_data
:
Using a reactive
object provided from outside the teal
application. In this scenario,
reactivity is controlled by an external module, and srv_teal
responds to changes.
Using teal_data_module()
, which is embedded within the teal
application, allowing data to
be resubmitted by the user as needed.
-
-Since the server of teal_data_module()
must return a reactive
teal_data
object, both
+
Since the server of teal_data_module()
must return a reactive
teal_data
object, both
methods (1 and 2) produce the same reactive behavior within a teal
application. The distinction
lies in data control: the first method involves external control, while the second method
involves control from a custom module within the app.
@@ -200,19 +141,17 @@
Reactive teal_data
:
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_labels.html b/main/reference/module_labels.html
index 532b6e0fe9..8fbff92ea8 100644
--- a/main/reference/module_labels.html
+++ b/main/reference/module_labels.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Retrieve labels from teal_modules — module_labels • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Retrieve labels from teal_modules — module_labels • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -114,8 +70,7 @@
@@ -125,44 +80,36 @@ Retrieve labels from teal_modules
-
Arguments
-
+
Arguments
-
-- modules
-
+- modules
(teal_modules
)
-
-
+
-
Value
-
+
Value
A list
containing the labels of the modules. If the modules are nested,
the function returns a nested list
of labels.
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_management.html b/main/reference/module_management.html
index 7d2cf38c6e..5485002eaf 100644
--- a/main/reference/module_management.html
+++ b/main/reference/module_management.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Extract/Remove module(s) of specific class — extract_module • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Extract/Remove module(s) of specific class — extract_module • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,55 +80,44 @@ Extract/Remove module(s) of specific class
-
Usage
-
+
Usage
extract_module(modules, class)
drop_module(modules, class)
-
Arguments
-
+
Arguments
-
-- modules
-
+- modules
(teal_modules
)
-- class
-
+- class
The class name of teal_module
to be extracted or dropped.
-
-
+
-
Value
-
+
Value
-
teal_modules
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_snapshot_manager.html b/main/reference/module_snapshot_manager.html
index 15f991101e..86a18728a5 100644
--- a/main/reference/module_snapshot_manager.html
+++ b/main/reference/module_snapshot_manager.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Filter state snapshot management — module_snapshot_manager • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Filter state snapshot management — module_snapshot_manager • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,8 +80,7 @@ Filter state snapshot management
-
Usage
-
+
Usage
ui_snapshot_manager_panel(id)
srv_snapshot_manager_panel(id, slices_global)
@@ -136,31 +91,24 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character(1)
) shiny
module instance id.
-- slices_global
-
+- slices_global
(reactiveVal
) that contains a teal_slices
object
containing all teal_slice
s existing in the app, both active and inactive.
-
-
+
-
Value
-
+
Value
list
containing the snapshot history, where each element is an unlisted teal_slices
object.
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_teal.html b/main/reference/module_teal.html
index 50df31b8d3..6559198906 100644
--- a/main/reference/module_teal.html
+++ b/main/reference/module_teal.html
@@ -1,27 +1,11 @@
-
-
-
-
-
-
-teal main module — module_teal • teal
-
-
-
-
-
-teal main module — module_teal • teal
-
-
-
-
-
+automatically, which is not a case when calling ui/srv_teal directly.">
Skip to contents
@@ -29,7 +13,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -120,8 +76,7 @@
@@ -134,8 +89,7 @@
-
Usage
-
+
Usage
ui_teal(
id,
modules,
@@ -148,20 +102,16 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character
) Optionally,
a string specifying the shiny
module id in cases it is used as a shiny
module
rather than a standalone shiny
app. This is a legacy feature.
-- modules
-
+- modules
(list
or 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
@@ -169,69 +119,55 @@
Argumentstitle
-
+- title
(shiny.tag
or character(1)
) Optionally,
the browser window title. Defaults to a title "teal app" with the icon of NEST.
Can be created using the build_app_title()
or
by passing a valid shiny.tag
which is a head tag with title and link tag.
-
+
(shiny.tag
or character(1)
) Optionally,
the header of the app.
-
+
(shiny.tag
or character(1)
) Optionally,
the footer of the app.
-- data
-
+- data
(teal_data
, teal_data_module
, or reactive
returning teal_data
)
The data which application will depend on.
-- filter
-
+- filter
(teal_slices
) Optionally,
specifies the initial filter using teal_slices()
.
-
-
+
-
Value
-
+
Value
NULL
invisibly
-
Details
-
+
Details
Module is responsible for creating the main shiny
app layout and initializing all the necessary
components. This module establishes reactive connection between the input data
and every other
component in the app. Reactive change of the data
passed as an argument, reloads the app and
-possibly keeps all input settings the same so the user can continue where one left off.
-
-
data flow in teal
application
-
+possibly keeps all input settings the same so the user can continue where one left off.
+
data flow in teal
application
This module supports multiple data inputs but eventually, they are all converted to reactive
returning teal_data
in this module. On this reactive teal_data
object several actions are
-performed:
-
+
-
Fallback on failure
-
+
Fallback on failure
teal
is designed in such way that app will never crash if the error is introduced in any
@@ -243,19 +179,17 @@
Fallback on failure
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_teal_data.html b/main/reference/module_teal_data.html
index e206a0914a..106a461e90 100644
--- a/main/reference/module_teal_data.html
+++ b/main/reference/module_teal_data.html
@@ -1,27 +1,11 @@
-
-
-
-
-
-
-Execute and validate teal_data_module — module_teal_data • teal
-
-
-
-
-
-Execute and validate teal_data_module — module_teal_data • teal
-
-
-
-
-
+teal_data() which is a standard data class in whole teal framework.">
Skip to contents
@@ -29,7 +13,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -120,8 +76,7 @@
@@ -134,8 +89,7 @@ Execute and validate teal_data_module
-
Usage
-
+
Usage
ui_teal_data(id, data_module = function(id) NULL)
srv_teal_data(
@@ -158,84 +112,68 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character(1)
) Module id
-- data_module
-
+- data_module
(teal_data_module
)
-- modules
-
+- modules
(teal_modules
or teal_module
) For datanames
validation purpose
-- validate_shiny_silent_error
-
+- validate_shiny_silent_error
(logical
) If TRUE
, then shiny.silent.error
is validated and
-- is_transformer_failed
-
+- 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
-
+- data
(reactive teal_data
)
-
-
+
-
Value
-
+
Value
reactive
teal_data
-
data validation
-
+
data validation
Executed teal_data_module()
is validated and output is validated for consistency.
-Output data
is invalid if:
-
-teal_data_module()
is invalid if server doesn't return reactive
. Immediately crashes an app!
+Output data
is invalid if:teal_data_module()
is invalid if server doesn't return reactive
. Immediately crashes an app!
reactive
throws a shiny.error
- happens when module creating teal_data()
fails.
reactive
returns qenv.error
- happens when teal_data()
evaluates a failing code.
reactive
object doesn't return teal_data()
.
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
+
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).
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_teal_lockfile.html b/main/reference/module_teal_lockfile.html
index 1b8c50c226..ba770704b4 100644
--- a/main/reference/module_teal_lockfile.html
+++ b/main/reference/module_teal_lockfile.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Generate lockfile for application's environment reproducibility — module_teal_lockfile • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Generate lockfile for application's environment reproducibility — module_teal_lockfile • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,8 +80,7 @@ Generate lockfile for application's environment reproducibility
-
Usage
-
+
Usage
ui_teal_lockfile(id)
srv_teal_lockfile(id)
@@ -140,30 +95,22 @@ Usage
-
Arguments
-
+
Arguments
-
-- lockfile_path
-
+- lockfile_path
(character
) path to the lockfile.
-
-
+
-
Different ways of creating lockfile
-
+
Different ways of creating lockfile
-
teal
leverages renv::snapshot()
, which offers multiple methods for lockfile creation.
-
-Working directory lockfile: teal
, by default, will create an implicit
type lockfile that uses
+
teal
leverages renv::snapshot()
, which offers multiple methods for lockfile creation.
Working directory lockfile: teal
, by default, will create an implicit
type lockfile that uses
renv::dependencies()
to detect all R packages in the current project's working directory.
DESCRIPTION
-based lockfile: To generate a lockfile based on a DESCRIPTION
file in your working
directory, set renv::settings$snapshot.type("explicit")
. The naming convention for type
follows
@@ -171,35 +118,30 @@
Different ways of creating lockfile
DESCRIPTION
fields included in the lockfile.
Custom files-based lockfile: To specify custom files as the basis for the lockfile, set
renv::settings$snapshot.type("custom")
and configure the renv.snapshot.filter
option.
-
-
+
-
lockfile usage
-
+
lockfile usage
After creating the lockfile, you can restore the application's environment using renv::restore()
.
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_teal_module.html b/main/reference/module_teal_module.html
index 9841f5fa26..e25b7b65ed 100644
--- a/main/reference/module_teal_module.html
+++ b/main/reference/module_teal_module.html
@@ -1,25 +1,9 @@
-
-
-
-
-
-
-Calls all modules — module_teal_module • teal
-
-
-
-
-
-Calls all modules — module_teal_module • teal
-
-
-
-
-
+reflect nested structure of modules argument.">
Skip to contents
@@ -27,7 +11,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -118,8 +74,7 @@
@@ -131,8 +86,7 @@ Calls all modules
-
Usage
-
+
Usage
ui_teal_module(id, modules, depth = 0L)
# Default S3 method
@@ -193,20 +147,16 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character
) Optionally,
a string specifying the shiny
module id in cases it is used as a shiny
module
rather than a standalone shiny
app. This is a legacy feature.
-- modules
-
+- modules
(list
or 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
@@ -214,69 +164,53 @@
Argumentsdepth
-
+- depth
(integer(1)
)
number which helps to determine depth of the modules nesting.
-- data_rv
-
+- data_rv
(reactive
returning teal_data
)
-- datasets
-
+- datasets
(reactive
returning FilteredData
or NULL
)
When datasets
is passed from the parent module (srv_teal
) then dataset
is a singleton
which implies in filter-panel to be "global". When NULL
then filter-panel is "module-specific".
-- slices_global
-
+- slices_global
(reactiveVal
returning modules_teal_slices
)
see module_filter_manager
-- data_load_status
-
--
-
(reactive
returning character
)
-Determines action dependent on a data loading status:
-
-
-
+
-
Value
-
-
output of currently active module.
-
-srv_teal_module.teal_module
returns reactiveVal
containing output of the called module.
+ Value
+ output of currently active module.
-
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_teal_with_splash.html b/main/reference/module_teal_with_splash.html
index 475e8cb750..1f290e319a 100644
--- a/main/reference/module_teal_with_splash.html
+++ b/main/reference/module_teal_with_splash.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-UI and server modules of teal — module_teal_with_splash • teal
-
-
-
-
-
-
-
-
-
-
-
+
+UI and server modules of teal — module_teal_with_splash • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -116,8 +72,7 @@
@@ -128,8 +83,7 @@ UI and server modules of teal
-
Usage
-
+
Usage
ui_teal_with_splash(
id,
data,
@@ -142,46 +96,38 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character
) Optionally,
a string specifying the shiny
module id in cases it is used as a shiny
module
rather than a standalone shiny
app. This is a legacy feature.
-- data
-
+- data
(teal_data
, teal_data_module
, or reactive
returning teal_data
)
The data which application will depend on.
-- title
-
+- title
(shiny.tag
or character(1)
) Optionally,
the browser window title. Defaults to a title "teal app" with the icon of NEST.
Can be created using the build_app_title()
or
by passing a valid shiny.tag
which is a head tag with title and link tag.
-
+
(shiny.tag
or character(1)
) Optionally,
the header of the app.
-
+
(shiny.tag
or character(1)
) Optionally,
the footer of the app.
-- modules
-
+- modules
(list
or 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
@@ -189,33 +135,28 @@
Argumentsfilter
-
+- filter
(teal_slices
) Optionally,
specifies the initial filter using teal_slices()
.
-
-
+
-
Value
-
+
Value
Returns a reactive
expression containing a teal_data
object when data is loaded or NULL
when it is not.
-
+
-
+
+
+
-
-
diff --git a/main/reference/module_transform_data.html b/main/reference/module_transform_data.html
index b83a025d4c..27f1843d1c 100644
--- a/main/reference/module_transform_data.html
+++ b/main/reference/module_transform_data.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Module to transform reactive teal_data — module_transform_data • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Module to transform reactive teal_data — module_transform_data • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -116,8 +72,7 @@
@@ -128,8 +83,7 @@ Module to transform reactive
teal_data
-
Usage
-
+
Usage
ui_transform_data(id, transformers = list(), class = "well")
srv_transform_data(
@@ -142,61 +96,50 @@ Usage
-
Arguments
-
+
Arguments
-
-- id
-
+- id
(character(1)
) Module id
-- transformers
-
+- transformers
(list
of teal_data_module
) that will be applied to transform the data.
Each transform module UI will appear in the teal
's sidebar panel.
Transformers' datanames
are added to the datanames
. See teal_transform_module()
.
-- data
-
+- data
(reactive teal_data
)
-- modules
-
+- modules
(teal_modules
or teal_module
) For datanames
validation purpose
-- is_transformer_failed
-
+- 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.
-
-
+
-
Value
-
+
Value
reactive
teal_data
-
+
-
+
+
+
-
-
diff --git a/main/reference/modules_bookmarkable.html b/main/reference/modules_bookmarkable.html
index bf96f0de15..68c3d8643a 100644
--- a/main/reference/modules_bookmarkable.html
+++ b/main/reference/modules_bookmarkable.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -114,8 +70,7 @@
@@ -125,44 +80,36 @@ Retrieve teal_bookmarkable
attribute from teal_modules
-
Usage
-
+
Usage
modules_bookmarkable(modules)
-
Arguments
-
+
Arguments
-
-- modules
-
+- modules
(teal_modules
or teal_module
) object
-
-
+
-
Value
-
+
Value
named list of the same structure as modules
with TRUE
or FALSE
values indicating
whether the module is bookmarkable.
-
+
-
+
+
+
-
-
diff --git a/main/reference/modules_depth.html b/main/reference/modules_depth.html
index 9c489c7046..d0f92b06b7 100644
--- a/main/reference/modules_depth.html
+++ b/main/reference/modules_depth.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Get module depth — modules_depth • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Get module depth — modules_depth • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,19 +83,15 @@ Get module depth
-
Usage
-
+
Usage
modules_depth(modules, depth = 0L)
-
Arguments
-
+
Arguments
-
-- modules
-
+- modules
(list
or 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
@@ -147,32 +99,27 @@
Argumentsdepth
-
+- depth
optional integer determining current depth level
-
-
+
-
Value
-
+
Value
Depth level for given module.
-
+
-
+
+
+
-
-
diff --git a/main/reference/report_card_template.html b/main/reference/report_card_template.html
index 8ceb38c208..f2579bd288 100644
--- a/main/reference/report_card_template.html
+++ b/main/reference/report_card_template.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Template function for TealReportCard creation and customization — report_card_template • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Template function for TealReportCard creation and customization — report_card_template • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,8 +83,7 @@ Template function for TealReportCard
creation and customization
-
Usage
-
+
Usage
report_card_template(
title,
label,
@@ -139,58 +94,47 @@ Usage
-
Arguments
-
+
Arguments
-
-- title
-
+- title
(character(1)
) title of the card (unless overwritten by label)
-- label
-
+- label
(character(1)
) label provided by the user when adding the card
-- description
-
+- description
(character(1)
) optional, additional description
-- with_filter
-
+- with_filter
(logical(1)
) flag indicating to add filter state
-- filter_panel_api
-
+- filter_panel_api
(FilterPanelAPI
) object with API that allows the generation
of the filter state in the report
-
-
+
-
Value
-
+
Value
(TealReportCard
) populated with a title, description and filter state.
-
+
-
+
+
+
-
-
diff --git a/main/reference/reporter_previewer_module.html b/main/reference/reporter_previewer_module.html
index e57d8026c5..63f9f8c1a3 100644
--- a/main/reference/reporter_previewer_module.html
+++ b/main/reference/reporter_previewer_module.html
@@ -1,33 +1,17 @@
-
-
-
-
-
-
-Create a teal module for previewing a report — reporter_previewer_module • teal
-
-
-
-
-
-Create a teal module for previewing a report — reporter_previewer_module • teal
-
-
-
-
-
+support report generation.">
Skip to contents
@@ -35,7 +19,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -142,50 +98,41 @@ Create a teal
module for previewing a report
-
Usage
-
+
Usage
reporter_previewer_module(label = "Report previewer", server_args = list())
-
Arguments
-
+
Arguments
-
-- label
-
+- label
(character(1)
) Label shown in the navigation item for the module or module group.
For modules()
defaults to "root"
. See Details
.
-- server_args
-
+- server_args
(named list
)
Arguments passed to teal.reporter::reporter_previewer_srv()
.
-
-
+
-
Value
-
+
Value
teal_module
(extended with teal_module_previewer
class) containing the teal.reporter
previewer functionality.
-
+
-
+
+
+
-
-
diff --git a/main/reference/restoreValue.html b/main/reference/restoreValue.html
index a96e72bf3e..d0cc42937f 100644
--- a/main/reference/restoreValue.html
+++ b/main/reference/restoreValue.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Restore value from bookmark. — restoreValue • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Restore value from bookmark. — restoreValue • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,38 +80,30 @@ Restore value from bookmark.
-
Usage
-
+
Usage
restoreValue(value, default)
-
Arguments
-
+
Arguments
-
-- value
-
+- value
(character(1)
) name of value to restore
-- default
-
+- default
fallback value
-
-
+
-
Value
-
+
Value
In an application restored from a server-side bookmark,
the variable specified by value
from the values
environment.
Otherwise default
.
-
Details
-
+
Details
Bookmarks can store not only inputs but also arbitrary values.
These values are stored by onBookmark
callbacks and restored by onBookmarked
callbacks,
and they are placed in the values
environment in the session$restoreContext
field.
@@ -167,19 +115,17 @@
Details
-
+
-
+
+
+
-
-
diff --git a/main/reference/run_js_files.html b/main/reference/run_js_files.html
index f1b041a548..dfeb1e6726 100644
--- a/main/reference/run_js_files.html
+++ b/main/reference/run_js_files.html
@@ -1,27 +1,11 @@
-
-
-
-
-
-
-Run JS file from /inst/js/ package directory — run_js_files • teal
-
-
-
-
-
-Run JS file from /inst/js/ package directory — run_js_files • teal
-
-
-
-
-
+the run_js actually executes JavaScript functions.">
Skip to contents
@@ -29,7 +13,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -133,50 +89,41 @@ Run JS
file from /inst/js/
package directory
-
Arguments
-
+
Arguments
-
-- files
-
+- files
(character
) vector of filenames.
-
-
+
-
Value
-
+
Value
NULL
, invisibly.
-
Details
-
+
Details
system.file
should not be used to access files in other packages, it does
not work with devtools
. Therefore, we redefine this method in each package
as needed. Thus, we do not export this method.
-
+
-
+
+
+
-
-
diff --git a/main/reference/show_rcode_modal.html b/main/reference/show_rcode_modal.html
index 7ff38effee..04bc5136e0 100644
--- a/main/reference/show_rcode_modal.html
+++ b/main/reference/show_rcode_modal.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Show R code modal — show_rcode_modal • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Show R code modal — show_rcode_modal • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,56 +83,46 @@ Show R
code modal
-
Arguments
-
+
Arguments
-
-- title
-
+- title
(character(1)
)
Title of the modal, displayed in the first comment of the R
code.
-- rcode
-
+- rcode
(character
)
vector with R
code to show inside the modal.
-- session
-
+- session
(ShinySession
) optional
shiny
session object, defaults to shiny::getDefaultReactiveDomain()
.
-
-
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/slices_store.html b/main/reference/slices_store.html
index bda65888d0..cac5540b4b 100644
--- a/main/reference/slices_store.html
+++ b/main/reference/slices_store.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Store and restore teal_slices object — slices_store • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Store and restore teal_slices object — slices_store • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,71 +83,57 @@ Store and restore teal_slices
object
-
Usage
-
+
Usage
slices_store(tss, file)
slices_restore(file)
-
Arguments
-
+
Arguments
-
-- tss
-
+- tss
(teal_slices
) object to be stored.
-- file
-
+- file
(character(1)
) file path where teal_slices
object will be
saved and restored. The file extension should be ".json"
.
-
-
+
-
Value
-
+
Value
slices_store
returns NULL
, invisibly.
slices_restore
returns a teal_slices
object restored from the file.
-
Details
-
-
Date and date time objects are stored in the following formats:
-
-Date
class is converted to the "ISO8601"
standard (YYYY-MM-DD
).
+ Details
+ Date and date time objects are stored in the following formats:
Date
class is converted to the "ISO8601"
standard (YYYY-MM-DD
).
POSIX*t
classes are converted to character by using
format.POSIX*t(usetz = TRUE, tz = "UTC")
(YYYY-MM-DD HH:MM:SS UTC
, where
UTC
is the Coordinated Universal Time
timezone short-code).
-
-This format is assumed during slices_restore
. All POSIX*t
objects in
+
This format is assumed during slices_restore
. All POSIX*t
objects in
selected
or choices
fields of teal_slice
objects are always printed in
UTC
timezone as well.
-
+
-
+
+
+
-
-
diff --git a/main/reference/tdata.html b/main/reference/tdata.html
index 83853c3b31..865a178588 100644
--- a/main/reference/tdata.html
+++ b/main/reference/tdata.html
@@ -1,31 +1,15 @@
-
-
-
-
-
-
-Create a tdata object — tdata • teal
-
-
-
-
-
-Create a tdata object — tdata • teal
-
-
-
-
-
+use this function to downgrade the data argument.">
Skip to contents
@@ -33,7 +17,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -139,8 +95,7 @@ Create a tdata
object
-
Usage
-
+
Usage
new_tdata(...)
tdata2env(...)
@@ -156,37 +111,30 @@ Usage
-
Arguments
-
+
Arguments
-
-- ...
-
+- ...
ignored
-
-
+
-
Value
-
+
Value
nothing
-
+
-
+
+
+
-
-
diff --git a/main/reference/teal-package.html b/main/reference/teal-package.html
index c581aca7ba..30470b5007 100644
--- a/main/reference/teal-package.html
+++ b/main/reference/teal-package.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-teal: Interactive exploration of clinical trials data — teal-package • teal
-
-
-
-
-
-
-
-
-
-
-
+
+teal: Interactive exploration of clinical trials data — teal-package • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -116,8 +72,7 @@
@@ -129,30 +84,21 @@
-
Details
-
+
Details
To learn mode about the package, visit the project website
or read the init()
manual page.
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/teal_data_module.html b/main/reference/teal_data_module.html
index b4c35fdb45..8f4a9f78bd 100644
--- a/main/reference/teal_data_module.html
+++ b/main/reference/teal_data_module.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Data module for teal applications — teal_data_module • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Data module for teal applications — teal_data_module • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,8 +83,7 @@ Data module for teal
applications
-
Usage
-
+
Usage
teal_data_module(ui, server, label = "data module", once = TRUE)
# S4 method for class 'teal_data_module,character'
@@ -139,31 +94,25 @@ Usage
-
Arguments
-
+
Arguments
-
-- ui
-
+- ui
(function(id)
)
shiny
module UI function; must only take id
argument
-- server
-
+- server
(function(id)
)
shiny
module server function; must only take id
argument;
must return reactive expression containing teal_data
object
-- label
-
+- label
(character(1)
) Label of the module.
-- once
-
+- once
(logical(1)
)
If TRUE
, the data module will be shown only once and will disappear after successful data loading.
App user will no longer be able to interact with this module anymore.
@@ -171,43 +120,35 @@
Argumentsobject
-
+- object
(teal_data_module
)
-- code
-
+- code
(character
or language
) code to evaluate. If character
, comments are retained.
-- data
-
+- data
(teal_data_module
) object
-- expr
-
+- expr
(expression
) to evaluate. Must be inline code. See
-- ...
-
+- ...
See Details
.
-
-
+
-
Value
-
+
Value
teal_data_module
returns a list of class teal_data_module
containing two elements, ui
and
server
provided via arguments.
eval_code
returns a teal_data_module
object with a delayed evaluation of code
when the module is run.
within
returns a teal_data_module
object with a delayed evaluation of expr
when the module is run.
-
+
+
+
-
-
diff --git a/main/reference/teal_data_to_filtered_data.html b/main/reference/teal_data_to_filtered_data.html
index eed5d47958..5cd5fdbae5 100644
--- a/main/reference/teal_data_to_filtered_data.html
+++ b/main/reference/teal_data_to_filtered_data.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Create a FilteredData — teal_data_to_filtered_data • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Create a FilteredData — teal_data_to_filtered_data • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -114,8 +70,7 @@
@@ -125,48 +80,39 @@ Create a FilteredData
-
Usage
-
+
Usage
teal_data_to_filtered_data(x, datanames = names(x))
-
Arguments
-
+
Arguments
-
-- x
-
+- x
(teal_data
) object
-- datanames
-
+- datanames
(character
) vector of data set names to include; must be subset of names(x)
-
-
+
-
Value
-
+
Value
A FilteredData
object.
-
+
-
+
+
+
-
-
diff --git a/main/reference/teal_data_utilities.html b/main/reference/teal_data_utilities.html
index 2aeb5047af..2bf1aaa9cf 100644
--- a/main/reference/teal_data_utilities.html
+++ b/main/reference/teal_data_utilities.html
@@ -1,31 +1,15 @@
-
-
-
-
-
-
-teal_data utils — teal_data_utilities • teal
-
-
-
-
-
-teal_data utils — teal_data_utilities • teal
-
-
-
-
-
+">
Skip to contents
@@ -33,7 +17,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,77 +80,62 @@
-
In teal
we need to recreate the teal_data
object due to two operations:
-
+
-
Usage
-
+
Usage
.append_evaluated_code(data, code)
.append_modified_data(data, objects)
-
Arguments
-
+
Arguments
-
-- data
-
+- data
(teal_data
)
-- code
-
+- code
(character
) code to append to the object's code slot.
-- objects
-
+- objects
(list
) objects to append to object's environment.
-
-
+
-
Value
-
+
Value
modified teal_data
-
Details
-
+
Details
Due to above recreation of teal_data
object can't be done simply by using public
teal.code
and teal.data
methods.
-
+
-
+
+
+
-
-
diff --git a/main/reference/teal_modules.html b/main/reference/teal_modules.html
index a77e8d55bc..3dc80d7487 100644
--- a/main/reference/teal_modules.html
+++ b/main/reference/teal_modules.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Create teal_module and teal_modules objects — teal_modules • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Create teal_module and teal_modules objects — teal_modules • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,8 +83,7 @@ Create teal_module
and teal_modules
objects
-
Usage
-
+
Usage
module(
label = "module",
server = function(id, data, ...) moduleServer(id, function(input, output, session)
@@ -166,23 +121,16 @@ Usage
-
Arguments
-
+
Arguments
-
-- label
-
+- label
(character(1)
) Label shown in the navigation item for the module or module group.
For modules()
defaults to "root"
. See Details
.
-- server
-
--
-
(function
) shiny
module with following arguments:
-
-- ui
-
--
-
(function
) shiny
UI module function with following arguments:
-
-- filters
-
+- filters
(character
) Deprecated. Use datanames
instead.
-- datanames
-
--
-
(character
) Names of the datasets relevant to the item.
-There are 2 reserved values that have specific behaviors:
-
-The keyword "all"
includes all datasets available in the data passed to the teal application.
+- datanames
+(character
) Names of the datasets relevant to the item.
+There are 2 reserved values that have specific behaviors:
The keyword "all"
includes all datasets available in the data passed to the teal application.
NULL
hides the sidebar panel completely.
If transformers
are specified, their datanames
are automatically added to this datanames
argument.
-
-
+
-- server_args
-
+- server_args
(named list
) with additional arguments passed on to the server function.
-- ui_args
-
+- ui_args
(named list
) with additional arguments passed on to the UI function.
-- transformers
-
+- transformers
(list
of teal_data_module
) that will be applied to transform the data.
Each transform module UI will appear in the teal
's sidebar panel.
Transformers' datanames
are added to the datanames
. See teal_transform_module()
.
-- ...
-
-
-For modules()
: (teal_module
or teal_modules
) Objects to wrap into a tab.
+- ...
+
-- x
-
+- x
(teal_module
or teal_modules
) Object to format/print.
-- indent
-
+- indent
(integer(1)
) Indention level; each nested element is indented one level more.
-- is_last
-
+- is_last
(logical(1)
) Whether this is the last item in its parent's children list.
Affects the tree branch character used (L- vs |-)
-- parent_prefix
-
+- parent_prefix
(character(1)
) The prefix inherited from parent nodes,
used to maintain the tree structure in nested levels
-- what
-
+- what
(character
) Specifies which metadata to display.
Possible values: "datasets", "properties", "ui_args", "server_args", "transformers"
-- is_root
-
+- is_root
(logical(1)
) Whether this is the root node of the tree. Only used in
format.teal_modules(). Determines whether to show "TEAL ROOT" header
-- modules
-
+- modules
(teal_module
or teal_modules
)
-
-
+
-
Value
-
+
Value
module()
returns an object of class teal_module
.
-
modules()
returns a teal_modules
object which contains following fields:
-
-label
: taken from the label
argument.
+modules()
returns a teal_modules
object which contains following fields:
-
+
-
Restricting datasets used by teal_module
:
-
+
Restricting datasets used by teal_module
:
The datanames
argument controls which datasets are used by the module’s server. These datasets,
passed via server's data
argument, are the only ones shown in the module's tab.
When datanames
is set to "all"
, all datasets in the data object are treated as relevant.
-However, this may include unnecessary datasets, such as:
-
-Proxy variables for column modifications
+However, this may include unnecessary datasets, such as:
-To exclude irrelevant datasets, use the set_datanames()
function to change datanames
from
+
To exclude irrelevant datasets, use the set_datanames()
function to change datanames
from
"all"
to specific names. Trying to modify non-"all"
values with set_datanames()
will result
in a warning. Datasets with names starting with . are ignored globally unless explicitly listed
in datanames
.
-
-datanames
with transformers
-
+
datanames
with transformers
When transformers are specified, their datanames
are added to the module’s datanames
, which
-changes the behavior as follows:
-
+
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/teal_slices.html b/main/reference/teal_slices.html
index 0e17e87f25..04fd35877e 100644
--- a/main/reference/teal_slices.html
+++ b/main/reference/teal_slices.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Filter settings for teal applications — teal_slices • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Filter settings for teal applications — teal_slices • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,8 +80,7 @@ Filter settings for teal
applications
-
Usage
-
+
Usage
teal_slices(
...,
exclude_varnames = NULL,
@@ -144,112 +99,85 @@ Usage
-
Arguments
-
+
Arguments
-
-- ...
-
+- ...
any number of teal_slice
objects.
-- include_varnames, exclude_varnames
-
+- include_varnames, exclude_varnames
(named list
s of character
) where list names
match names of data sets and vector elements match variable names in respective data sets;
specify which variables are allowed to be filtered; see Details
.
-- count_type
-
--
-
+
- count_type
+
This is a new feature. Do kindly share your opinions on
teal.slice
's GitHub repository.
(character(1)
) string specifying how observations are tallied by these filter states.
-Possible options:
-
+
-- allow_add
-
+- allow_add
(logical(1)
) logical flag specifying whether the user will be able to add new filters
-- module_specific
-
--
-
(logical(1)
) optional,
-
-- mapping
-
--
-
+
- mapping
+
This is a new feature. Do kindly share your opinions on
teal
's GitHub repository.
(named list
) specifies which filters will be active in which modules on app start.
Elements should contain character vector of teal_slice
id
s (see teal.slice::teal_slice
).
-Names of the list should correspond to teal_module
label
set in module()
function.
-
+
-- app_id
-
+- app_id
(character(1)
)
For internal use only, do not set manually.
Added by init
so that a teal_slices
can be matched to the app in which it was used.
Used for verifying snapshots uploaded from file. See snapshot
.
-- x
-
+- x
(list
) of lists to convert to teal_slices
-
-
+
-
Value
-
+
Value
A teal_slices
object.
-
Details
-
+
Details
Produces a teal_slices
object.
The teal_slice
components will specify filter states that will be active when the app starts.
Attributes (created with the named arguments) will configure the way the app applies filters.
See argument descriptions for details.
-
Examples
-
+
Examples
filter <- teal_slices(
teal_slice(dataname = "iris", varname = "Species", id = "species"),
teal_slice(dataname = "iris", varname = "Sepal.Length", id = "sepal_length"),
@@ -280,19 +208,17 @@ Examples
-
+
-
+
+
+
-
-
diff --git a/main/reference/teal_transform_module.html b/main/reference/teal_transform_module.html
index 9a67f7b02a..a1666ec94d 100644
--- a/main/reference/teal_transform_module.html
+++ b/main/reference/teal_transform_module.html
@@ -1,25 +1,9 @@
-
-
-
-
-
-
-Data module for teal transformers. — teal_transform_module • teal
-
-
-
-
-
-Data module for teal transformers. — teal_transform_module • teal
-
-
-
-
-
+before passing the data into the module.">
Skip to contents
@@ -27,7 +11,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -130,8 +86,7 @@ Data module for teal
transformers.
-
Usage
-
+
Usage
teal_transform_module(
ui = function(id) NULL,
server = function(id, data) data,
@@ -141,46 +96,36 @@ Usage
-
Arguments
-
+
Arguments
-
-- ui
-
+- ui
(function(id)
)
shiny
module UI function; must only take id
argument
-- server
-
--
-
(function(id, data)
)
+
- server
+(function(id, data)
)
shiny
module server function; that takes id
and data
argument,
where the id
is the module id and data
is the reactive teal_data
input.
The server function must return reactive expression containing teal_data
object.
The server function definition should not use eventReactive
as it may lead to
unexpected behavior.
-See vignettes("data-transform-as-shiny-module")
for more information.
-
+See vignettes("data-transform-as-shiny-module")
for more information.
-- label
-
+- label
(character(1)
) Label of the module.
-- datanames
-
+- datanames
(character
)
Names of the datasets that are relevant for this module to evaluate. If set to character(0)
then module would receive modules()
datanames
.
-
-
+
-
Details
-
+
Details
teal_transform_module
creates a teal_data_module
object to transform data in a teal
application. This transformation happens after the data has passed through the filtering activity
in teal. The transformed data is then sent to the server of the teal_module()
.
@@ -188,8 +133,7 @@
Details
-
Examples
-
+
Examples
my_transformers <- list(
teal_transform_module(
label = "Custom transform for iris",
@@ -218,19 +162,17 @@ Examples
-
+
-
+
+
+
-
-
diff --git a/main/reference/validate_app_title_tag.html b/main/reference/validate_app_title_tag.html
index 4aca443edd..46036b0a9e 100644
--- a/main/reference/validate_app_title_tag.html
+++ b/main/reference/validate_app_title_tag.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Function for validating the title parameter of teal::init — validate_app_title_tag • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Function for validating the title parameter of teal::init — validate_app_title_tag • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -114,8 +70,7 @@
@@ -125,38 +80,31 @@ Function for validating the title parameter of teal::init
-
Usage
-
+
Usage
validate_app_title_tag(shiny_tag)
-
Arguments
-
+
Arguments
-
-- shiny_tag
-
+- shiny_tag
(shiny.tag
) Object to validate for a valid title.
-
-
+
-
+
-
+
+
+
-
-
diff --git a/main/reference/validate_has_data.html b/main/reference/validate_has_data.html
index ee58813dea..6258d73d82 100644
--- a/main/reference/validate_has_data.html
+++ b/main/reference/validate_has_data.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Validate that dataset has a minimum number of observations — validate_has_data • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Validate that dataset has a minimum number of observations — validate_has_data • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,8 +80,7 @@ Validate that dataset has a minimum number of observations
-
Usage
-
+
Usage
validate_has_data(
x,
min_nrow = NULL,
@@ -136,46 +91,36 @@ Usage
-
Arguments
-
+
Arguments
-
-- x
-
+- x
(data.frame
)
-- min_nrow
-
+- min_nrow
(numeric(1)
) Minimum allowed number of rows in x
.
-- complete
-
+- complete
(logical(1)
) Flag specifying whether to check only complete cases. Defaults to FALSE
.
-- allow_inf
-
+- allow_inf
(logical(1)
) Flag specifying whether to allow infinite values. Defaults to TRUE
.
-- msg
-
+- msg
(character(1)
) Additional message to display alongside the default message.
-
-
+
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/validate_has_elements.html b/main/reference/validate_has_elements.html
index c6921f87c0..7b6c65ec5f 100644
--- a/main/reference/validate_has_elements.html
+++ b/main/reference/validate_has_elements.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Validates that vector has length greater than 0 — validate_has_elements • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Validates that vector has length greater than 0 — validate_has_elements • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,37 +80,29 @@ Validates that vector has length greater than 0
-
Usage
-
+
Usage
validate_has_elements(x, msg)
-
Arguments
-
+
Arguments
-
-- x
-
+- x
vector
-- msg
-
+- msg
message to display
-
-
+
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/validate_has_variable.html b/main/reference/validate_has_variable.html
index 5d9d3881b4..55e95148c1 100644
--- a/main/reference/validate_has_variable.html
+++ b/main/reference/validate_has_variable.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Validates that dataset contains specific variable — validate_has_variable • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Validates that dataset contains specific variable — validate_has_variable • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,42 +80,33 @@ Validates that dataset contains specific variable
-
Usage
-
+
Usage
validate_has_variable(data, varname, msg)
-
Arguments
-
+
Arguments
-
-- data
-
+- data
(data.frame
)
-- varname
-
+- varname
(character(1)
) name of variable to check for in data
-- msg
-
+- msg
(character(1)
) message to display if data
does not include varname
-
-
+
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/validate_in.html b/main/reference/validate_in.html
index e4ba59d4b2..ead1853952 100644
--- a/main/reference/validate_in.html
+++ b/main/reference/validate_in.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Validates that vector includes all expected values — validate_in • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Validates that vector includes all expected values — validate_in • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,42 +80,33 @@ Validates that vector includes all expected values
-
Usage
-
+
Usage
validate_in(x, choices, msg)
-
Arguments
-
+
Arguments
-
-- x
-
+- x
Vector of values to test.
-- choices
-
+- choices
Vector to test against.
-- msg
-
+- msg
(character(1)
) Error message to display if some elements of x
are not elements of choices
.
-
-
+
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/validate_inputs.html b/main/reference/validate_inputs.html
index e94b9e7327..f9f349aebd 100644
--- a/main/reference/validate_inputs.html
+++ b/main/reference/validate_inputs.html
@@ -1,23 +1,7 @@
-
-
-
-
-
-
-Send input validation messages to output — validate_inputs • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Send input validation messages to output — validate_inputs • teal
Skip to contents
@@ -25,7 +9,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -127,38 +83,30 @@ Send input validation messages to output
-
Usage
-
+
Usage
validate_inputs(..., header = "Some inputs require attention")
-
Arguments
-
+
Arguments
-
-- ...
-
+- ...
either any number of InputValidator
objects
or an optionally named, possibly nested list
of InputValidator
objects, see Details
-
+
(character(1)
) generic validation message; set to NULL to omit
-
-
+
-
Value
-
+
Value
Returns NULL if the final validation call passes and a shiny.silent.error
if it fails.
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/validate_n_levels.html b/main/reference/validate_n_levels.html
index 4a74b94595..432f18e285 100644
--- a/main/reference/validate_n_levels.html
+++ b/main/reference/validate_n_levels.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Validate that variables has expected number of levels — validate_n_levels • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Validate that variables has expected number of levels — validate_n_levels • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,51 +80,41 @@ Validate that variables has expected number of levels
-
Usage
-
+
Usage
validate_n_levels(x, min_levels = 1, max_levels = 12, var_name)
-
Arguments
-
+
Arguments
-
-- x
-
+- x
variable name. If x
is not a factor, the unique values
are treated as levels.
-- min_levels
-
+- min_levels
cutoff for minimum number of levels of x
-- max_levels
-
+- max_levels
cutoff for maximum number of levels of x
-- var_name
-
+- var_name
name of variable being validated for use in
validation message
-
-
+
-
Details
-
+
Details
If the number of levels of x
is less than min_levels
or greater than max_levels
the validation will fail.
This function is a wrapper for shiny::validate
.
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/validate_no_intersection.html b/main/reference/validate_no_intersection.html
index 3f0d286ca3..5270932f92 100644
--- a/main/reference/validate_no_intersection.html
+++ b/main/reference/validate_no_intersection.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Validates no intersection between two vectors — validate_no_intersection • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Validates no intersection between two vectors — validate_no_intersection • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,42 +80,33 @@ Validates no intersection between two vectors
-
Usage
-
+
Usage
validate_no_intersection(x, y, msg)
-
Arguments
-
+
Arguments
-
-- x
-
+- x
vector
-- y
-
+- y
vector
-- msg
-
+- msg
(character(1)
) message to display if x
and y
intersect
-
-
+
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/reference/validate_one_row_per_id.html b/main/reference/validate_one_row_per_id.html
index f279529f35..80dbaf3cfe 100644
--- a/main/reference/validate_one_row_per_id.html
+++ b/main/reference/validate_one_row_per_id.html
@@ -1,21 +1,5 @@
-
-
-
-
-
-
-Validate that dataset has unique rows for key variables — validate_one_row_per_id • teal
-
-
-
-
-
-
-
-
-
-
-
+
+Validate that dataset has unique rows for key variables — validate_one_row_per_id • teal
Skip to contents
@@ -23,7 +7,7 @@
teal
- 0.15.2.9083
+ 0.15.2.9084
part of
+
@@ -124,37 +80,29 @@ Validate that dataset has unique rows for key variables
-
Usage
-
+
Usage
validate_one_row_per_id(x, key = c("USUBJID", "STUDYID"))
-
Arguments
-
+
Arguments
-
-- x
-
+- x
(data.frame
)
-- key
-
+- key
(character
) Vector of ID variables from x
that identify unique records.
-
-
+
-
Examples
-
+
Examples
+
-
+
+
+
-
-
diff --git a/main/search.json b/main/search.json
index 8de590d52c..eddf5f1ed2 100644
--- a/main/search.json
+++ b/main/search.json
@@ -1 +1 @@
-[{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement [INSERT CONTACT METHOD]. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contribution Guidelines","title":"Contribution Guidelines","text":"🙏 Thank taking time contribute! input deeply valued, whether issue, pull request, even feedback, regardless size, content scope.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"table-of-contents","dir":"","previous_headings":"","what":"Table of contents","title":"Contribution Guidelines","text":"👶 Getting started 📔 Code Conduct 🗃 License 📜 Issues 🚩 Pull requests 💻 Coding guidelines 🏆 Recognition model ❓ Questions","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"getting-started","dir":"","previous_headings":"","what":"Getting started","title":"Contribution Guidelines","text":"Please refer project documentation brief introduction. Please also see articles within project documentation additional information.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contribution Guidelines","text":"Code Conduct governs project. Participants contributors expected follow rules outlined therein.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Contribution Guidelines","text":"contributions covered project’s license.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"Contribution Guidelines","text":"use GitHub track issues, feature requests, bugs. submitting new issue, please check issue already reported. issue already exists, please upvote existing issue 👍. new feature requests, please elaborate context benefit feature users, developers, relevant personas.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"github-flow","dir":"","previous_headings":"Pull requests","what":"GitHub Flow","title":"Contribution Guidelines","text":"repository uses GitHub Flow model collaboration. submit pull request: Create branch Please see branch naming convention . don’t write access repository, please fork . Make changes Make sure code passes checks imposed GitHub Actions well documented well tested unit tests sufficiently covering changes introduced Create pull request (PR) pull request description, please link relevant issue (), provide detailed description change, include assumptions. Address review comments, Post approval Merge PR write access. Otherwise, reviewer merge PR behalf. Pat back Congratulations! 🎉 now official contributor project! grateful contribution.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"branch-naming-convention","dir":"","previous_headings":"Pull requests","what":"Branch naming convention","title":"Contribution Guidelines","text":"Suppose changes related current issue current project; please name branch follows: _. Please use underscore (_) delimiter word separation. example, 420_fix_ui_bug suitable branch name change resolving UI-related bug reported issue number 420 current project. change affects multiple repositories, please name branches follows: __. example, 69_awesomeproject_fix_spelling_error reference issue 69 reported project awesomeproject aims resolve one spelling errors multiple (likely related) repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"monorepo-and-stageddependencies","dir":"","previous_headings":"Pull requests","what":"monorepo and staged.dependencies","title":"Contribution Guidelines","text":"Sometimes might need change upstream dependent package(s) able submit meaningful change. using staged.dependencies functionality simulate monorepo behavior. dependency configuration already specified project’s staged_dependencies.yaml file. need name feature branches appropriately. exception branch naming convention described . Please refer staged.dependencies package documentation details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"coding-guidelines","dir":"","previous_headings":"","what":"Coding guidelines","title":"Contribution Guidelines","text":"repository follows unified processes standards adopted maintainers ensure software development carried consistently within teams cohesively across repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"style-guide","dir":"","previous_headings":"Coding guidelines","what":"Style guide","title":"Contribution Guidelines","text":"repository follows standard tidyverse style guide uses lintr lint checks. Customized lint configurations available repository’s .lintr file.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"dependency-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency management","title":"Contribution Guidelines","text":"Lightweight right weight. repository follows tinyverse recommedations limiting dependencies minimum.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"dependency-version-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency version management","title":"Contribution Guidelines","text":"code compatible (!) historical versions given dependenct package, required specify minimal version DESCRIPTION file. particular: development version requires (imports) development version another package - required put abc (>= 1.2.3.9000).","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"r--package-versions","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"R & package versions","title":"Contribution Guidelines","text":"continuously test packages newest R version along recent dependencies CRAN BioConductor. recommend working environment also set way. can find details R version packages used R CMD check GitHub Action execution log - step prints R sessionInfo(). discover bugs older R versions older set dependencies, please create relevant bug reports.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"pre-commit","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"pre-commit","title":"Contribution Guidelines","text":"highly recommend use pre-commit tool combined R hooks pre-commit execute checks committing pushing changes. Pre-commit hooks already available repository’s .pre-commit-config.yaml file.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"recognition-model","dir":"","previous_headings":"","what":"Recognition model","title":"Contribution Guidelines","text":"mentioned previously, contributions deeply valued appreciated. contribution data available part repository insights, recognize significant contribution hence add contributor package authors list, following rules enforced: Minimum 5% lines code authored* (determined git blame query) top 5 contributors terms number commits lines added lines removed* *Excluding auto-generated code, including limited roxygen comments renv.lock files. package maintainer also reserves right adjust criteria recognize contributions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"questions","dir":"","previous_headings":"","what":"Questions","title":"Contribution Guidelines","text":"questions regarding contribution guidelines, please contact package/repository maintainer.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/SECURITY.html","id":"reporting-security-issues","dir":"","previous_headings":"","what":"Reporting Security Issues","title":"Security Policy","text":"believe found security vulnerability repositories organization, please report us coordinated disclosure. Please report security vulnerabilities public GitHub issues, discussions, pull requests. Instead, please send email vulnerability.management[@]roche.com. Please include much information listed can help us better understand resolve issue: type issue (e.g., buffer overflow, SQL injection, cross-site scripting) Full paths source file(s) related manifestation issue location affected source code (tag/branch/commit direct URL) special configuration required reproduce issue Step--step instructions reproduce issue Proof--concept exploit code (possible) Impact issue, including attacker might exploit issue information help us triage report quickly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/SECURITY.html","id":"data-security-standards-dss","dir":"","previous_headings":"","what":"Data Security Standards (DSS)","title":"Security Policy","text":"Please make sure reporting issues form bug, feature, pull request, sensitive information PII, PHI, PCI completely removed text attachments, including pictures videos.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Adding Support for Reporting to Custom Modules","text":"teal package offers integrated reporting feature utilizing teal.reporter package. comprehensive explanation reporting functionality , please refer documentation therein. article intended module developers aims provide guidance enhancing custom teal module automatic reporting feature. enhancement enables users incorporate snapshots module outputs report can reviewed another module automatically provided teal. Thus app user can interact report. responsibilities module developer include: Adding support reporting module. Specifying outputs constitute snapshot module. entire life cycle objects involved creating report configuring module preview report handled teal.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"custom-module","dir":"Articles","previous_headings":"","what":"Custom module","title":"Adding Support for Reporting to Custom Modules","text":"Let us consider example module, based example module teal: Using teal, can launch example module following:","code":"library(teal) my_module <- function(label = \"example teal module\") { module( label = label, server = function(id, data) { assert_reactive(data) checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"modify-the-declaration-of-the-server-function","dir":"Articles","previous_headings":"Add support for reporting","what":"Modify the declaration of the server function","title":"Adding Support for Reporting to Custom Modules","text":"first step add additional argument server function declaration - reporter. informs teal module requires reporter, included module called. See : modifications, module now ready launched teal: teal adds another tab application, titled Report previewer. However, visible change module operates appears user add content report module. requires inserting UI server elements teal.reporter module module body.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"insert-teal-reporter-module","dir":"Articles","previous_headings":"Add support for reporting","what":"Insert teal.reporter module","title":"Adding Support for Reporting to Custom Modules","text":"UI server logic necessary adding cards my_module_with_reporting report provided teal.reporter::simple_reporter_ui teal.reporter::simple_reporter_srv. updated module now ready launched: new piece UI added, buttons clickable. user can now add card report view Report previewer module preview still empty since instructed module put card.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = function(card) card ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"add-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add content to the card","title":"Adding Support for Reporting to Custom Modules","text":"add content card, utilize public API exposed TealReportCard class. teal.reporter::simple_reporter_srv module accepts card_fun argument determines appearance output custom module. ReportCard derivatives allow sequential addition content according order method calls. explore content, can use $get_content method. details, refer documentation TealReportCard teal.reporter::ReportCard. add simple text card modifying card_fun argument passed teal.reporter::simple_reporter_srv. function must return card object, otherwise errors may occur teal. Now, application user can see text added custom_function Report previewer module.","code":"custom_function <- function(card = teal.reporter::ReportCard$new()) { card$append_text(\"This is content from a custom teal module!\") card } my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = custom_function ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"add-non-text-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add non-text content to the card","title":"Adding Support for Reporting to Custom Modules","text":"teal.reporter supports addition tables, charts, . information, explore API teal.reporter::ReportCard learn supported content types.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"tealreportcard","dir":"Articles","previous_headings":"Add support for reporting","what":"TealReportCard","title":"Adding Support for Reporting to Custom Modules","text":"teal exports TealReportCard class, extends teal.reporter::ReportCard class provides several convenient methods facilitate working teal features like filter panel source code. details, refer documentation TealReportCard. support TealReportCard, function passed teal.reporter::simple_reporter_srv must define default value card, shown : Without definition, API TealReportCard available within function.","code":"custom_function <- function(card = TealReportCard$new()) { # ... some code ... # card }"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"example","dir":"Articles","previous_headings":"","what":"Example","title":"Adding Support for Reporting to Custom Modules","text":"conclusion, demonstrated build standard teal app code reproducibility reporter functionalities. Note server function requires filter_panel_api argument filter panel state can added report. final example, incorporated teal.code snippets. teal.code R library offers utilities storing code associating execution environment. allows ReporterCard store code necessary generate table along table . learn teal.code see vignette qenv teal.code.","code":"library(teal) library(teal.reporter) ## example_reporter_module <- function(label = \"Example\") { module( label = label, server = function(id, data, reporter, filter_panel_api) { with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, \"FilterPanelApi\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) dat <- reactive(data()[[input$dataname]]) observe({ req(dat()) updateSliderInput(session, \"nrow\", max = nrow(dat()), value = floor(nrow(dat()) / 5)) }) table_q <- reactive({ req(input$dataname) req(input$nrow) within( data(), result <- head(dataset, nrows), dataset = as.name(input$dataname), nrows = input$nrow ) }) output$table <- renderTable(table_q()[[\"result\"]]) ### REPORTER card_fun <- function(card = teal.reporter::ReportCard$new(), comment) { card$set_name(\"Table Module\") card$append_text(paste(\"Selected dataset\", input$dataname), \"header2\") card$append_text(\"Selected Filters\", \"header3\") if (with_filter) { card$append_text(filter_panel_api$get_filter_state(), \"verbatim\") } card$append_text(\"Encoding\", \"header3\") card$append_text( yaml::as.yaml( stats::setNames( lapply(c(\"dataname\", \"nrow\"), function(x) input[[x]]), c(\"dataname\", \"nrow\") ) ), \"verbatim\" ) card$append_text(\"Module Table\", \"header3\") card$append_table(table_q()[[\"result\"]]) card$append_text(\"Show R Code\", \"header3\") card$append_text(teal.code::get_code(table_q()), \"verbatim\") if (!comment == \"\") { card$append_text(\"Comment\", \"header3\") card$append_text(comment) } card } teal.reporter::add_card_button_srv( \"addReportCard\", reporter = reporter, card_fun = card_fun ) teal.reporter::download_report_button_srv(\"downloadButton\", reporter = reporter) teal.reporter::reset_report_button_srv(\"resetButton\", reporter) ### }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), verbatimTextOutput(ns(\"dataset\")) ) ) sidebarLayout( sidebarPanel( tags$div( teal.reporter::add_card_button_ui(ns(\"addReportCard\")), teal.reporter::download_report_button_ui(ns(\"downloadButton\")), teal.reporter::reset_report_button_ui(ns(\"resetButton\")) ), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL), sliderInput(ns(\"nrow\"), \"Number of rows\", min = 1, max = 1, value = 1, step = 1) ), mainPanel(tableOutput(ns(\"table\"))) ) } ) } app <- init( data = teal_data(AIR = airquality, IRIS = iris), modules = list( example_reporter_module(label = \"with Reporter\"), my_module(label = \"without Reporter\") ), filter = teal_slices(teal_slice(dataname = \"AIR\", varname = \"Temp\", selected = c(72, 85))), header = \"Example teal app with reporter\" ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/actors.html","id":"teal-app-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal app developer","title":"Actors","text":"primary responsibility teal app developer leverage available building blocks teal framework create functional teal app analyses data. expedite app creation process, developers can take advantage pre-existing teal modules found R packages like teal.modules.general teal.modules.clinical. modules designed focus standardization versatility, making suitable wide range use cases. developing teal app, developer select appropriate teal modules integrate app’s interface ensure seamless usability end-users. learn existing modules, visit teal.gallery, contains several demo applications source code.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[teal App Developer]--utilizes--> B[teal modules] B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style C fill:gold style D fill:pink"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/actors.html","id":"teal-module-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal module developer","title":"Actors","text":"main duty teal module developer construct compatible teal module can utilized within teal framework. Several factors influence scope requirements building teal module. creating reusable teal module, ’s advisable focus making general adaptable feasible maximize possibilities re-used future. However, developers freedom create teal module customized suit specific demands project. Ultimately, one teal modules employed construct teal app. learn creating custom modules follow Tutorial Creating Custom Module.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[Teal App Developer]--utilizes--> B[teal modules] E[Teal Module Developer]--develops--> B B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style E fill:lightgreen style D fill:pink style C fill:gold"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/actors.html","id":"workflow-in-a-clinical-trial-study","dir":"Articles > Blueprint","previous_headings":"","what":"Workflow in a clinical trial study","title":"Actors","text":"clinical trial study setting, unique study teal app developer assigned study team accountable developing tailored teal app respective study. study teal app developer initially leverage existing teal modules R packages created teal module developers. cases need create new modules tailored study, study teal module developer need involved. Upon completion, study team designated teal app tailored specific study.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. %%| fig-width: 7.5 graph LR subgraph Study B A2[Study Teal App Developer]--utilizes--> B2[teal modules] E2[Study Teal Module Developer]-.develops.-> B2 B2--to create--> C2[study teal app] D2[study app user]--uses--> C2 end E3[Teal Module Developer]--develops--> B E3--develops-->B2 subgraph Study A A[Study Teal App Developer]--utilizes--> B[teal modules] E[Study Teal Module Developer]-.develops.-> B B--to create--> C[study teal app] D[study app user]--uses--> C end style A fill:lightblue style A2 fill:lightblue style E fill:limegreen style E2 fill:limegreen style E3 fill:lightgreen style D fill:pink style D2 fill:pink style C fill:gold style C2 fill:gold"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/filter_panel.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Filter Panel","text":"teal.slice package provides teal applications filter panel, powerful tool exploring analyzing data, key component teal framework. One great things filter panel comes built-teal, requiring programming knowledge use. filter panel provides convenient way users subset data, simplifying process exploration comprehension. Moreover, users can activate deactivate filter states interactively, either individually globally, using filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/filter_panel.html","id":"filter-flow","dir":"Articles > Blueprint","previous_headings":"","what":"Filter flow","title":"Filter Panel","text":"filter panel creates subsets data. Subsetting achieved creating filter states, holds logical predicate (filter condition) applied single variables. filter conditions composed single expression, call particular function (e.g. dplyr::filter), expression evaluated create filtered data subset. process entirely interactive. Filter states can created, removed, changed , however, app developer may choose constrain even restrict . filter state created, filter panel generates filter card shiny inputs appropriate type variable, e.g. range selectors numeric columns sets checkboxes drop-menus categorical ones. users interact filter cards, subsetting complete expression updated filtered data recomputed. filtered data passed teal modules downstream analysis. subsetting expression returned along data, ensuring unbroken track record entire analysis. Signature data also stored ensure reproducible results.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. sequenceDiagram autonumber data->teal.slice: processed by teal.slice->>shiny inputs: creates Note over teal.slice,shiny inputs: based on data type shiny inputs->>reactive dataset: updates reactive dataset->>teal modules: processed by"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/in_app_data.html","id":"building-data-in-the-app","dir":"Articles > Blueprint","previous_headings":"","what":"Building data in the App","title":"In-App Data","text":"Typically data passed teal application available app run. However, always true cases data built app started. good example pulling data external repository, like database, uploading file. Additional authentication may required.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/in_app_data.html","id":"teal_data_module","dir":"Articles > Blueprint","previous_headings":"Building data in the App","what":"teal_data_module","title":"In-App Data","text":"Preprocessing actions can performed -app using teal_data_module. Rather passing teal_data object app, one may pass shiny module returns teal_data object (wrapped reactive expression). allows app developer include user actions data creation, fetching, even pre-filtering modification.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/in_app_data.html","id":"further-reading","dir":"Articles > Blueprint","previous_headings":"","what":"Further reading","title":"In-App Data","text":"complete explanation using teal_data_module can found teal vignette","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/input_data.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Input Data","text":"Reproducibility paramount pharmaceutical industry. Accurate consistent results essential ensure high-quality research safety patients. prioritizing reproducibility, researchers can validate methods, confirm findings, contribute advancement field. teal.code package provides qenv class facilitates code reproducibility. Code passed qenv object, evaluated specific environment. qenv also stores code can retrieved request. teal_data class, serves primary data interface teal applications, inherits code tracking behavior qenv.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/input_data.html","id":"preparing-data-for-a-teal-application","dir":"Articles > Blueprint","previous_headings":"","what":"Preparing data for a teal application","title":"Input Data","text":"teal applications run data provided teal_data object. Data objects stored modified within environment teal_data object R code used tracked, allows code evaluated executed teal application, reproduced outside teal application. includes data loading, preprocessing, filtering, transformations, plotting, etc. teal_data object makes easy users reproduce validate results analyses. Learn use teal_data teal.data package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/input_data.html","id":"show-r-code-and-reporter","dir":"Articles > Blueprint","previous_headings":"","what":"Show R Code and Reporter","title":"Input Data","text":"teal.modules.clinical teal.modules.general packages, ’ll find modules include convenient Show R Code button. button clicked, modal window appears, revealing R code responsible generating module’s output. functionality achieved inspecting teal_data object retrieving code . Show R Code button, users can easily copy independently run code reproduce analysis presented teal module. Reporter feature also leverages teal_data object operation. Much like Show R Code mechanism, code displayed Reporter Card extracted teal_data object. learn Reporter feature, please visit teal.reporter documentation. Overall, qenv teal.code child class, teal_data, powerful tools ensuring code reproducibility promoting high-quality research R programming language.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/module_encapsulation.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Module Encapsulation","text":"teal framework leverages shiny module concept enable encapsulation analytical actions teal modules, maintaining seamless communication modules application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/module_encapsulation.html","id":"benefits","dir":"Articles > Blueprint","previous_headings":"","what":"Benefits","title":"Module Encapsulation","text":"implementing modular app technique shiny module creation teal module, several benefits realized: Streamlined maintenance development teal module becomes manageable, can function independently teal framework. separation allows developers maintain module ease. approach successfully applied R packages dedicated teal module development, teal.modules.general teal.modules.clinical. Enhanced focus outputteal module developers can concentrate solely refining parameters encoding, output aspects (data summarization visualization) without need concern intricacies teal framework. developed correctly, module seamlessly integrates teal. Facilitated collaborationteal module development becomes accessible entry point developers interested collaborating. approach encourages user collaboration improvement teal modules, developers gain deeper understanding mechanics teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/product_map.html","id":"why-so-many-packages","dir":"Articles > Blueprint","previous_headings":"","what":"Why so many packages?","title":"Product Map","text":"breaking teal features, modules, calculations dedicated packages, maintenance made significantly manageable.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Bootstrap Themes in teal","text":"offer easy application custom Bootstrap theme teal app. teal uses bslib R package provides tools customizing Bootstrap themes, including shiny apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"usage","dir":"Articles","previous_headings":"","what":"Usage","title":"Bootstrap Themes in teal","text":"teal app developers can specify custom Bootstrap themes setting teal.bs_theme R option, set bslib::bs_theme object. bslib::bs_theme(...) function creates Bootstrap theme object, one specifies (major) Bootstrap version (default one 3, 4, 5). Optionally one can choose bootswatch theme customize app CSS functions like bslib::bs_add_rules. Please read custom themes bslib getting started vignette. teal.bs_theme R option specified top code script. Please install bslib package run code .","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"teal-bs_theme-r-option","dir":"Articles","previous_headings":"Usage","what":"teal.bs_theme R option","title":"Bootstrap Themes in teal","text":"","code":"options(\"teal.bs_theme\" = bslib::bs_theme(\"Custom Options\")) ####################### # teal::init() app code #######################"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"bootstrap-version-and-themes","dir":"Articles","previous_headings":"Usage","what":"Bootstrap version and themes","title":"Bootstrap Themes in teal","text":"best recommended ways explore Bootstrap themes use bslib::run_with_themer(shinyApp(app$ui, app$server)) bslib::bs_theme_preview(), offer interactive explore mode (supported Bootstrap 3). bslib::bs_theme_preview() recommended end user shiny app yet. already shiny app want test different Bootstrap themes (CSS styling) bslib::run_with_themer(shinyApp(app$ui, app$server)) recommended. Available Bootstrap versions checked bslib::versions() Bootstrap themes (bootswatch) bslib::bootswatch_themes(version = \"5\").","code":"# bslib::versions() # bslib::bootswatch_themes(version = \"5\") options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"lux\")) # or options(\"teal.bs_theme\" = bslib::bs_theme_update(bslib::bs_theme(version = \"5\"), bootswatch = \"lux\"))"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"default-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Default Bootstrap theme","title":"Bootstrap Themes in teal","text":"using default bslib theme version (3, 4 5), styling might expected. Please run interactive themer (recommended) apply custom theme explore theme options. many scenarios updating theme might enough e.g. font color specifications updated .","code":"# instead of options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) # try non-default themes options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"THEME NAME\". ...)) # or run the app inside bslib::run_with_themer"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"reset-the-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Reset the Bootstrap theme","title":"Bootstrap Themes in teal","text":"Please use options(\"teal.bs_theme\" = NULL) call return default shiny Bootstrap teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"theme-not-updated","dir":"Articles","previous_headings":"Usage","what":"Theme not updated","title":"Bootstrap Themes in teal","text":"One reason theme updated web browser caches previous one, especially different themes run one another. Please, use Cmd+Shift+R (Mac) Ctrl+F5 (Windows) hard refresh webpage.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"custom-teal-css","dir":"Articles","previous_headings":"Usage","what":"Custom teal CSS","title":"Bootstrap Themes in teal","text":"important HTML tags teal specific id class, can directly styled. bslib::bs_add_rules function used around bslib::bs_theme object apply custom CSS rules. bslib::bs_add_* family functions used specify low-level Bootstrap elements.","code":"library(magrittr) options(\"teal.bs_theme\" = bslib::bs_add_rules( bslib::bs_theme(version = \"5\"), \"Anything understood by sass::as_sass()\" ))"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"bootstrap-null-vs-bootstrap-3","dir":"Articles","previous_headings":"Usage","what":"Bootstrap NULL vs Bootstrap 3","title":"Bootstrap Themes in teal","text":"important note statements options(\"teal.bs_theme\" = NULL) options(\"teal.bs_theme\" = bslib::bs_theme(version = \"3\") equivalent bslib approximation default shiny theme Bootstrap version 3 can introduce discrepancies. One important difference using bslib::bs_theme(version = \"3\", bootswatch = \"THEME NAME\") one can apply custom Bootstrap theme. Another one usage bslib::bs_theme(version = \"3\") requires installation shinyWidgets package minimum version 0.7.4.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"regular-shinyfluidpage","dir":"Articles","previous_headings":"Usage","what":"Regular shiny::fluidPage","title":"Bootstrap Themes in teal","text":"want update theme regular shiny::fluidPage-like app, need teal.bs_theme option. Simply provide bslib::bs_theme directly: shiny::fluidPage(theme = bslib::bs_theme(...), ...).","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"interactive-theming-guide","dir":"Articles","previous_headings":"Usage","what":"Interactive theming guide","title":"Bootstrap Themes in teal","text":"section provide step--step guide customizing teal application theme interactively bslib::run_with_themer(). recommend starting simple case satisfied, verifying full application. end use teal application . example assume want use Bootstrap 5. start, launch app bslib::run_with_themer(app$ui, app$server) instead shiny::shinyApp. gives us following. Note Theme Customizer section right hand side. added bslib customize theme.","code":"options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()), header = \"My first teal application\" ) bslib::run_with_themer(shinyApp(app$ui, app$server))"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"set-overall-app-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Set overall app theme","title":"Bootstrap Themes in teal","text":"Instead starting scratch, want start Bootswatch theme. Let us select Minty theme “Overall theme” drop-. bslib updated CSS styles use new theme, including customizer theme. Additionally, look R console, see helpful guide provides code update theme. teal applications don’t actually use bs_theme_update opt bs_theme instead. However, printed code still helpful.","code":"#### Update your bs_theme() R code with: ##### bs_theme_update(theme, bootswatch = \"minty\")"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"customize-a-bootswatch-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Customize a bootswatch theme","title":"Bootstrap Themes in teal","text":"base theme (Minty) close want let’s make modifications. start, increase base font size. , choose “Fonts” section customizer theme set value “Base font size” input. use 1.25 , means fonts increased factor 1.25. check R console, see bslib printed bs_theme_update(theme, font_scale = 1.25, bootswatch = \"minty\"), now includes font size adjustment. Finally, suppose want borders rounded. customizer theme, can go “Options” uncheck “Rounded corners” box. expected, corners longer rounded. look R console, now see bs_theme_update(theme, font_scale = 1.25,enable-rounded= FALSE, bootswatch = \"minty\").","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"apply-the-customized-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Apply the customized theme","title":"Bootstrap Themes in teal","text":"customization complete, apply changes application. , use option teal.bs_theme like time expand bslib::bs_theme call include changes. Luckily, arguments printed R console running app themer can plugged right . Now application custom theme applied. Please note interactive themer contains commonly applied options. customization options, review bslib documentation.","code":"options( \"teal.bs_theme\" = bslib::bs_theme( version = \"5\", font_scale = 1.25, `enable-rounded` = FALSE, bootswatch = \"minty\" ) ) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"sources","dir":"Articles","previous_headings":"","what":"Sources","title":"Bootstrap Themes in teal","text":"https://rstudio.github.io/bslib/","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Creating Custom Modules","text":"teal framework provides large catalog plug--ready analysis modules can incorporated teal applications. However, also possible create modules using module function, leverages Shiny modules. custom teal module built Shiny module, combining Shiny’s reactive capabilities modularized UI server logic encapsulate functionality. design enables structured reusable approach creating interactive components integrate seamlessly within teal ecosystem. guide, use simple histogram example, demonstrate convert histogram function robust teal module step--step: module allow users dynamically select datasets variables create histograms within teal application. cover best practices, including: Setting dynamic inputs. Structuring server logic. Using teal_data object ensure reactivity reproducibility.","code":"my_plot <- hist( dataset[[vars]], las = 1, main = paste(\"Histogram of\", vars), xlab = vars, col = \"lightblue\", border = \"black\" )"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"understanding-the-inputs-and-requirements","dir":"Articles","previous_headings":"","what":"Understanding the Inputs and Requirements","title":"Creating Custom Modules","text":"developing custom teal module visualizations, first identify primary inputs users interact : Dataset Input (dataset): Allows users select dataset explore. Variable Input (vars): Allows users choose specific numeric variable chosen dataset, ensuring appropriate columns available plotting. inputs dynamically populated based available datasets variables teal_data object, cover later.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-ui","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module UI","title":"Creating Custom Modules","text":"UI function defines controls display area histogram. module, use: selectInput Dataset: Enables users select dataset list available datasets. selectInput Variable: Allows users choose numeric variable chosen dataset, dynamically filtering non-numeric columns. plotOutput Histogram: Displays histogram dataset variable inputs selected. verbatimTextOutput Code: Automatically displays code generated plot based user input. ’s code histogram_module_ui function:","code":"# UI function for the custom histogram module histogram_module_ui <- function(id) { ns <- shiny::NS(id) shiny::tagList( shiny::selectInput(ns(\"dataset\"), \"Select Dataset\", choices = NULL), shiny::selectInput(ns(\"variable\"), \"Select Variable\", choices = NULL), shiny::plotOutput(ns(\"histogram_plot\")), shiny::verbatimTextOutput(ns(\"plot_code\")) # To display the reactive plot code ) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-server","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module Server","title":"Creating Custom Modules","text":"server function main logic teal module handled. histogram module, server function handle user interactions manage reactive teal_data object, allows module dynamically respond user inputs.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"passing-the-data-argument-to-the-server-function","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Passing the data Argument to the Server Function","title":"Creating Custom Modules","text":"begin, ’s essential include data argument server function definition. data argument holds reactive teal_data object, contains datasets filters applied. including data, can ensure: server function receives reactive version teal_data, allowing automatically respond changes. server can access filtered datasets directly. correct function definition server function : need refresher teal_data object, please visit teal.data package documentation.","code":"histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Server logic goes here }) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"understanding-teal_data-as-a-reactive-object-in-server-logic","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Understanding teal_data as a Reactive Object in Server Logic","title":"Creating Custom Modules","text":"used server logic teal module, teal_data object becomes reactive data container. means access contents, need call like function, using parentheses: data(). syntax triggers reactivity, ensuring data within teal_data stays --date filters changes applied elsewhere application. Note: teal_data object behaves reactive data container used within server logic. accessed outside server, reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"using-names-to-access-dataset-names-in-teal_data-object","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Using names() to Access Dataset Names in teal_data object","title":"Creating Custom Modules","text":"teal_data object can contain multiple datasets. retrieve names datasets, use names() function: return character vector dataset names contained teal_data. can use names dynamically populate input controls, like dataset selection drop-.","code":"names(data())"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"accessing-specific-datasets-with-double-brackets","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Accessing Specific Datasets with Double Brackets ([[ ]])","title":"Creating Custom Modules","text":"access individual dataset teal_data, use double brackets ([[ ]]) along dataset name. allows extract specific dataset data frame: , input$dataset represents name dataset selected user. syntax highly flexible dynamically references whichever dataset user chosen. can subset manipulate extracted data frame needed.","code":"data()[[input$dataset]]"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"setting-up-server-logic-using-teal_data-and-dynamic-variable-injection","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Setting Up Server Logic Using teal_data and Dynamic Variable Injection","title":"Creating Custom Modules","text":"updated server function, perform following: Create new_data modified version data() using within(), dynamically injecting input$dataset input$variable. Render Plot: renderPlot() displays plot referencing plot stored updated teal_data object, new_data. ’s code: Let’s review ’ve done far: input_dataset = .name(input$dataset) passes dataset name dynamically input_dataset. input_vars = input$variable passes selected variable name directly input_vars. Inside within(), my_plot uses injected variables dynamically generate histogram plot. output$histogram_plot uses renderPlot() display plot stored new_data referencing result()[[\"my_plot\"]]. output$plot_code render function displays dynamically generated code using teal.code::get_code(result()), allowing users see exact code used generate plot reactively.","code":"# Server function for the custom histogram module with injected variables in within() histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Update dataset choices based on available datasets in teal_data shiny::observe({ shiny::updateSelectInput( session, \"dataset\", choices = names(data()) ) }) # Update variable choices based on selected dataset, only including numeric variables observeEvent(input$dataset, { req(input$dataset) # Ensure dataset is selected numeric_vars <- names(data()[[input$dataset]])[sapply(data()[[input$dataset]], is.numeric)] shiny::updateSelectInput(session, \"variable\", choices = numeric_vars) }) # Create a reactive `teal_data` object with the histogram plot result <- reactive({ req(input$dataset, input$variable) # Ensure both dataset and variable are selected # Create a new teal_data object with the histogram plot new_data <- within( data(), { my_plot <- hist( input_dataset[[input_vars]], las = 1, main = paste(\"Histogram of\", input_vars), xlab = input_vars, col = \"lightblue\", border = \"black\" ) }, input_dataset = as.name(input$dataset), # Replace `input_dataset` with input$dataset input_vars = input$variable # Replace `input_vars` with input$variable ) new_data }) # Render the histogram from the updated teal_data object output$histogram_plot <- shiny::renderPlot({ result()[[\"my_plot\"]] # Access and render the plot stored in `new_data` }) # Reactive expression to get the generated code for the plot output$plot_code <- shiny::renderText({ teal.code::get_code(result()) # Retrieve and display the code for the updated `teal_data` object }) }) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"creating-the-custom-teal-module-function","dir":"Articles","previous_headings":"","what":"Creating the Custom teal Module Function","title":"Creating Custom Modules","text":"teal::module() function allows encapsulate UI server logic teal module, making reusable ready integrate teal application. setting datanames = \"\", give module access datasets specified teal_data object.","code":"# Custom histogram module creation create_histogram_module <- function(label = \"Histogram Module\") { teal::module( label = label, ui = histogram_module_ui, server = histogram_module_server, datanames = \"all\" ) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"integrating-the-custom-teal-module-into-a-teal-app","dir":"Articles","previous_headings":"","what":"Integrating the Custom teal Module into a teal App","title":"Creating Custom Modules","text":"custom teal module set , can now integrated teal app. ’ll use init() teal specify datasets modules used app, run app test newly created module. Congratulations! just created custom teal module used teal app! setup provides fully dynamic, user-controlled teal module allows interactive data exploration code visibility, enhancing usability transparency.","code":"library(teal) # Define datasets in `teal_data` data_obj <- teal_data( iris = iris, mtcars = mtcars ) # Initialize the teal app app <- init( data = data_obj, modules = modules(create_histogram_module()) ) # Run the app shiny::shinyApp(ui = app$ui, server = app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"whats-next","dir":"Articles","previous_headings":"","what":"What’s next?","title":"Creating Custom Modules","text":"Now ’ve mastered essentials building integrating modules teal, ’re ready explore advanced features. teal offers wide range capabilities enhance module’s functionality user experience.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"adding-reporting-to-a-module","dir":"Articles","previous_headings":"What’s next?","what":"Adding reporting to a module","title":"Creating Custom Modules","text":"Enhance custom teal module reporting features! Dive vignette see just simple add powerful reporting capabilities elevate module’s impact.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"using-standard-widgets-in-your-custom-module","dir":"Articles","previous_headings":"What’s next?","what":"Using standard widgets in your custom module","title":"Creating Custom Modules","text":"teal.widgets package provides various widgets can leveraged quickly create standard elements custom teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data as shiny Module","text":"Proper functioning teal application requires presence teal_data object. Typically, teal_data object created global environment passed data argument init. teal_data object contain elements necessary successful execution application’s modules. scenarios, however, application developers may opt postpone data operations application runtime. can done passing special shiny module data argument. teal_data_module function used build module following components: UI function; accepts one argument, id; defines user interface elements data module server function: accepts one argument, id; defines server logic data module, including data creation; must return reactive expression containing teal_data object teal run module application starts resulting teal_data object used throughout teal (analytic) modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"","what":"Creating data in-app","title":"Data as shiny Module","text":"One case postponing data operations datasets dynamic, frequently updated. data created kept global environment. Using teal_data_module enables creating dataset scratch every time user starts application. See ?qenv detailed explanation use within method.","code":"library(teal) data_module <- teal_data_module( ui = function(id) tags$div(), server = function(id) { moduleServer(id, function(input, output, session) { reactive({ data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"modification-of-data-in-app","dir":"Articles","previous_headings":"","what":"Modification of data in-app","title":"Data as shiny Module","text":"Another reason postpone data operations involve application user preprocessing stage. initial, constant form data can created global environment modified app starts. following example illustrates teal_data_module can utilized subset data based user inputs: Note running preprocessing code module opposed global environment increase app loading times. recommended keep constant code global environment move dynamic parts data module.","code":"data <- within(teal_data(), { dataset1 <- iris dataset2 <- mtcars }) data_module <- teal_data_module( ui = function(id) { ns <- NS(id) tags$div( selectInput(ns(\"species\"), \"Select species to keep\", choices = unique(iris$Species), multiple = TRUE ), actionButton(ns(\"submit\"), \"Submit\") ) }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data_modified <- within( data, dataset1 <- subset(dataset1, Species %in% selected), selected = input$species ) data_modified }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"warning","dir":"Articles","previous_headings":"","what":"Data as shiny Module","title":"Data as shiny Module","text":"using teal_data_module modify pre-existing teal_data object, crucial server function data object defined environment, otherwise server function able access data object. means server functions defined packages used.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"extending-existing-teal_data_modules","dir":"Articles","previous_headings":"Modification of data in-app","what":"Extending existing teal_data_modules","title":"Data as shiny Module","text":"server logic teal_data_module can modified used app, using within function. allows teal_data object created teal_data_module processed . previous example, data_module takes predefined teal_data object allows app user select subset. following example modifies data_module new columns added data retrieved.","code":"data_module_2 <- within( data_module, { # Create new column with Ratio of Sepal.Width and Petal.Width dataset1$Ratio.Sepal.Petal.Width <- round(dataset1$Sepal.Width / dataset1$Petal.Width, digits = 2L) # Create new column that converts Miles per Galon to Liter per 100 Km dataset2$lp100km <- round(dataset2$mpg * 0.42514371, digits = 2L) } ) app <- init( data = data_module_2, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data Transformations as shiny Module","text":"teal version 0.16 introduced new argument teal::module called transformers. argument allows pass list teal_data_module objects created using teal_transform_module() function. main benefit teal_transform_module() ability transform data passing module. feature allows extend regular behavior existing modules specifying custom data operations data inside module. teal_transform_module() Shiny module takes ui server arguments. provided, teal execute data transformations specified module loaded whenever data changes. server extend logic behind data manipulations, ui extends filter panel new UI elements orchestrate transformer inputs. vignette presents way manage custom data transformations teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"creating-your-first-custom-data-transformation-module","dir":"Articles","previous_headings":"","what":"Creating your first custom data transformation module","title":"Data Transformations as shiny Module","text":"initialize simple teal app pass iris mtcars input datasets.","code":"library(teal) data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) app <- init( data = data, modules = teal::example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"single-transformer","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Single Transformer","title":"Data Transformations as shiny Module","text":"Let’s create simple teal_transform_module returns first n number rows iris based user input. creating ui numericInput user input number rows displayed. server function take reactive data perform transformation return new reactive data. Note: recommended return reactive() teal_data() server code teal_transform_module robust maintaining reactivity Shiny. planning using eventReactive() server, event include data() (example eventReactive(list(input$, data()), {...})). discussion.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"multiple-transformers","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Multiple Transformers","title":"Data Transformations as shiny Module","text":"Note can add multiple teal transformers including teal_transform_module list. Let’s add another transformation mtcars dataset creates column rownames mtcars. Note module interactive UI elements.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ), teal_transform_module( label = \"Custom transform for mtcars\", ui = function(id) { ns <- NS(id) tags$div( \"Adding rownames column to mtcars\" ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { mtcars$rownames <- rownames(mtcars) rownames(mtcars) <- NULL }) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/filter-panel.html","id":"teal-apps-with-the-filter-panel","dir":"Articles","previous_headings":"","what":"teal apps with the filter panel","title":"Filter Panel","text":"filter panel integral part teal applications included right side. Based selections made filter panel, filter expressions executed passing data teal modules. technical details filter panel extensively described teal.slice documentation. default, init initializes filter panel without active filters allows user add filters column. start teal application predefined filters, one must specify filter argument. following example four filters specified using teal_slice function wrapped together teal_slices.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = example_module(), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Sepal.Length\"), teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\"), teal_slice(dataname = \"CARS\", varname = \"mpg\", selected = c(20, Inf)), teal_slice(dataname = \"CARS\", expr = \"qsec < 20\", title = \"1/4 mile under 20 sec\", id = \"qsec_20\") ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/filter-panel.html","id":"filter-panel-respective-to-teal_module","dir":"Articles","previous_headings":"Extending teal.slice","what":"Filter panel respective to teal_module","title":"Filter Panel","text":"teal_module (see ?module) object contains datanames attribute determines data sets sent module. filter panel display data sets hide rest module active.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = modules( example_module(label = \"all datasets\"), example_module(label = \"IRIS only\", datanames = \"IRIS\"), example_module(label = \"CARS only\", datanames = \"CARS\"), example_module(label = \"no filter panel\", datanames = NULL) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/filter-panel.html","id":"global-and-module-specific-filter-panel","dir":"Articles","previous_headings":"Extending teal.slice","what":"Global and module specific filter panel","title":"Filter Panel","text":"teal contains teal_slices function extends original teal_slices found teal.slice adding two arguments: module_specific mapping. default init initializes app “global” filter panel, modules use filters. Setting module_specific = TRUE switches “module-specific” filter panel, module can different set filters active time. still possible set global filters shared among modules. One possible scenario depicted figure : filter 1 shared modules filter 2 shared module 1 module 3 filter 3 used module 2 filter 4 used module 1 filter 5 filter 6 active modules achieve described setup, one must set module_specific argument TRUE use mapping argument match filters modules. mapping takes named list element names correspond module labels, elements vectors teal_slice ids applied module startup. teal_slices listed element called \"global_filters\" applied modules. detailed explanation filter states, see teal.slice vignette.","code":"library(teal) app <- init( data = teal_data(mtcars = mtcars), modules = modules( example_module(label = \"module 1\"), example_module(label = \"module 2\"), example_module(label = \"module 3\"), example_module(label = \"module 4\") ), filter = teal_slices( # filters created with id teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"filter 1\"), teal_slice(dataname = \"mtcars\", varname = \"cyl\", id = \"filter 2\"), teal_slice(dataname = \"mtcars\", varname = \"disp\", id = \"filter 3\"), teal_slice(dataname = \"mtcars\", varname = \"hp\", id = \"filter 4\"), teal_slice(dataname = \"mtcars\", varname = \"drat\", id = \"filter 5\"), teal_slice(dataname = \"mtcars\", varname = \"wt\", id = \"filter 6\"), # module-specific filtering enabled module_specific = TRUE, # filters mapped to modules mapping = list( \"module 1\" = c(\"filter 2\", \"filter 4\"), \"module 2\" = \"filter 3\", \"module 3\" = \"filter 2\", global_filters = \"filter 1\" ) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Getting Started with teal","text":"teal shiny-based interactive exploration framework analyzing data, particular emphasis CDISC clinical trial data. teal applications allow users : “Pull” data external data sources Dynamically filter data used analyses Generate reproducible code regenerate -screen analyses Create download reports containing results analyses (analysis modules support reporting) addition, teal framework provides application developers : large suite custom-made standard analysis modules included applications logging framework facilitate debugging applications advanced users framework can also create new analysis modules can added teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"your-first-teal-application","dir":"Articles","previous_headings":"","what":"Your first teal application:","title":"Getting Started with teal","text":"simple teal application takes iris mtcars datasets displays contents: Hovering image shows teal application generated code. Every teal application composed following elements, can controlled app developer passing arguments init function: Application Title (browser’s tab title): title application. Application Header Footer (top bottom app): content placed top bottom application. example code: two modules named “Module 1” “Module 2”. Module Content (panel middle): outputs currently active module. example code: filter panel initialized filter Species variable iris dataset.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = modules( example_module(\"Module 1\"), example_module(\"Module 2\") ), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\") ), title = build_app_title(title = \"My first teal app\"), header = h3(\"My first teal application\"), footer = tags$div(a(\"Powered by teal\", href = \"https://insightsengineering.github.io/teal/main/latest-tag/\")) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"creating-your-own-applications","dir":"Articles","previous_headings":"","what":"Creating your own applications","title":"Getting Started with teal","text":"key function use create teal application init, requires two mandatory arguments: data modules. optional arguments init, can used customize application. Please refer documentation init details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"application-data","dir":"Articles","previous_headings":"Creating your own applications","what":"Application data","title":"Getting Started with teal","text":"data argument init function specifies data used application. datasets used teal application must passed teal_data object. also possible specify relationships datasets using join_keys argument case datasets related. See vignette details. data available pulled remote source, init must receive teal_data_module specifies obtain desired datasets put teal_data object. See vignette details. order use CDISC clinical trial data teal application cdisc_data function used instead. Custom SDTM standards can handled teal_data join_keys. details, recommend exploring teal.data package documentation.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"modules","dir":"Articles","previous_headings":"Creating your own applications","what":"Modules","title":"Getting Started with teal","text":"modules argument init consists list teal modules (can wrapped together using function modules). Core teal developers created several universal teal modules can useful teal application. learn create modules, please explore Creating Custom Modules vignette. use predefined modules, see references links modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"defining-filters","dir":"Articles","previous_headings":"Creating your own applications","what":"Defining filters","title":"Getting Started with teal","text":"optional filter argument init allows initialize application predefined filters. details see Filter Panel vignette .","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"reporting","dir":"Articles","previous_headings":"Creating your own applications","what":"Reporting","title":"Getting Started with teal","text":"modules teal application support reporting (see teal.reporter details), users application can add outputs modules report. report can downloaded special Report Previewer module added application additional tab, users can view configure reports downloading . See details vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"reproducible-code","dir":"Articles","previous_headings":"Creating your own applications","what":"Reproducible code","title":"Getting Started with teal","text":"teal hands data reproducible code every module included application. Note teal display code, modules’ responsibility. example, example_module function used shows code main panel together outputs. details see vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"where-to-go-next","dir":"Articles","previous_headings":"","what":"Where to go next","title":"Getting Started with teal","text":"learn teal framework recommend first exploring available analysis modules. example see: general analysis modules clinical trial reporting modules modules analyzing MultiAssayExperiment objects demo teal apps see: gallery sample apps based teal catalog Tables, Listings Graphs catalog Biomarker Analysis Templates Tables Graphs teal framework relies set supporting packages whose documentation provides -depth information. packages interest defining tealapplications : teal.data: defining data teal application. teal.slice: defining data filtering passing teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"data-in-teal-applications","dir":"Articles","previous_headings":"","what":"Data in teal Applications","title":"Including Data in teal Applications","text":"teal framework readily accepts general, non-relational data. Modules defined teal.modules.general package designed work well kind data. Relational data handled just well mechanism passing data applications virtually . includes clinical data conforms ADaM standard. working making framework extendable support data structures can added relative ease. Currently support offered MultiAssayExperiment class. applications use teal_data class data container. teal_data objects passed init build application, modified filter panel (applicable) passed modules. Thus, first step building teal app creating teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"general-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"General data","title":"Including Data in teal Applications","text":"teal_data object created calling teal_data function passing data objects name:value pairs. Note iris cars added datanames property data (see datanames property). sufficient run teal app.","code":"library(teal) # create teal_data data <- teal_data(iris = iris, cars = mtcars) # build app app <- init( data = data, modules = example_module() ) # run app shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"reproducible-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"Reproducible data","title":"Including Data in teal Applications","text":"teal_data object stores data separate environment. Therefore, modifying stored datasets requires processing code evaluated environment. Following logic, one can create empty teal_data object populate evaluating code. can done using eval_code function , conveniently, using within function. key difference eval_code within former accepts code character vector language objects (calls expressions), within accepts inline code. See ?qenv details. Note first example data created passing data objects, code used create data objects unknown therefore process reproduced. Inspecting code app created reveals note preprocessing code absent. necessary code can supplied code argument teal_data function. Keep mind code executed teal_data’s environment, may reproduce environment. object considered unverified (see verified property). reproducibility required, recommend creating empty teal_data object evaluating code.","code":"# create empty object data_empty <- teal_data() # run code in the object data_populated_1 <- eval_code(data_empty, code = \"iris <- iris cars <- mtcars\") # alternative data_populated_2 <- within(data_empty, { iris <- iris cars <- mtcars }) data_with_code <- teal_data( iris = iris, cars = mtcars, code = \"iris <- iris cars <- mtcars\" )"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"code-from-file","dir":"Articles","previous_headings":"Data in teal Applications > Reproducible data","what":"code from file","title":"Including Data in teal Applications","text":"ability pass code character vector eval_code opens door using code stored file.","code":"# not run data_from_file <- teal_data() data_from_file <- eval_code(data, readLines(\"\"))"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"Data in teal Applications","what":"Creating data in-app","title":"Including Data in teal Applications","text":"one departure passing teal_data object init data exist environment app run, e.g. pulled remote source. cases teal_data_module must used. See vignette detailed description.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"clinical-data","dir":"Articles","previous_headings":"","what":"Clinical data","title":"Including Data in teal Applications","text":"Currently teal supports two specialized data formats.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"adam-data","dir":"Articles","previous_headings":"Clinical data","what":"ADaM data","title":"Including Data in teal Applications","text":"ADaM data model, defined CDISC standards, specifies relationships subject-level parent dataset observation-level child datasets. cdisc_data function takes advantage fact automatically set default joining keys (see join_keys property). example , two standard ADaM datasets (ADSL ADTTE) passed cdisc_data.","code":"# create cdisc_data data_cdisc <- cdisc_data(ADSL = teal.data::rADSL, ADTTE = teal.data::rADSL) names(data_cdisc) #> [1] \"ADSL\" \"ADTTE\" join_keys(data_cdisc) #> A join_keys object containing foreign keys between 2 datasets: #> ADSL: [STUDYID, USUBJID] #> <-- ADTTE: [STUDYID, USUBJID] #> ADTTE: [STUDYID, USUBJID, PARAMCD] #> --> ADSL: [STUDYID, USUBJID] app <- init( data = data_cdisc, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"multiassayexperiment-data","dir":"Articles","previous_headings":"Clinical data","what":"MultiAssayExperiment data","title":"Including Data in teal Applications","text":"MultiAssayExperiment package offers data structure representing analyzing multi-omics experiments involve multi-modal, high-dimensionality data, DNA mutations, protein RNA abundance, chromatin occupancy, etc., biological specimens. MultiAssayExperiment class described detail . MultiAssayExperiment objects (MAEs) placed teal_data just like normal objects. Due unique structure MAE, teal requires special considerations building teal modules. Therefore, guarantee modules work properly MAEs. package teal.modules.hermes developed specifically MAE mind reliable. filter panel supports MAEs box.","code":"library(MultiAssayExperiment) utils::data(miniACC) data_mae <- teal_data(MAE = miniACC) app <- init( data = data_mae, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"join_keys","dir":"Articles","previous_headings":"teal_data properties","what":"join_keys","title":"Including Data in teal Applications","text":"Using relational data requires specifying joining keys pair datasets. Primary keys unique row identifiers individual datasets thus specified dataset. Foreign keys describe mapping variables datasets. Joining keys stored join_keys property, can set creating teal_data object, using join_keys argument, using join_keys function. detailed explanation join keys, see teal.data vignette. (back ADaM Data)","code":"ds1 <- data.frame( id = seq(1, 10), group = rep(c(\"A\", \"B\"), each = 5) ) ds2 <- data.frame( group = c(\"A\", \"B\"), condition = c(\"condition1\", \"condition2\") ) keys <- join_keys( join_key(\"DS1\", keys = \"id\"), join_key(\"DS2\", keys = \"group\"), join_key(\"DS1\", \"DS2\", keys = c(\"group\" = \"group\")) ) data_relational1 <- teal_data(DS1 = ds1, DS2 = ds2, join_keys = keys) data_relational2 <- teal_data(DS1 = ds1, DS2 = ds2) join_keys(data_relational2) <- keys"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"verified","dir":"Articles","previous_headings":"teal_data properties","what":"verified","title":"Including Data in teal Applications","text":"teal_data allows tracking code data creation data filtering data analysis whole process can reproduced. verified property designates whether reproducibility confirmed. teal_data objects created empty modified evaluating code within considered verified default. created data objects alone data objects code verified default, can become verified running verify function. detailed explanation verification, see teal.data vignette. (back Reproducible Data)","code":"data_with_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code <- teal_data(iris = iris, cars = mtcars, code = expression(iris <- iris, cars <- mtcars)) data_with_objects_and_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code_ver <- verify(data_with_objects_and_code) data_with_objects_and_code_ver #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L]"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"further-reading","dir":"Articles","previous_headings":"","what":"Further reading","title":"Including Data in teal Applications","text":"complete guide teal_data class, please refer teal.data package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"motivation","dir":"Articles","previous_headings":"","what":"Motivation","title":"Modifying a teal Application With R Options","text":"R packages use options modify runtime behavior. usually specify sensible default values internal function arguments determine responses users actions. example, testthat uses option testthat.progress.max_fails define default number failed expectations testing functions terminate execution. adjustable values can exposed function parameters, confined option. vignette details options available package teal ’s supporting packages teal.logger, teal.widgets, teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"setting-an-option","dir":"Articles","previous_headings":"","what":"Setting an option","title":"Modifying a teal Application With R Options","text":"time interactive session, can change option using: way change options execution specific block code withr package like : line run option, digits, go back value line run. function getOption allows inspect value option: set, value option persists session, returns default value new session. Make sure change options teal-related packages loaded initialize options overwrite custom values.","code":"options(option_to_set = \"value\") withr::with_options(list(digits = 3), print(pi)) ## [1] 3.14 getOption(\"option_to_set\") ## [1] \"value\""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-bs_theme-bslibbs_theme-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.bs_theme (bslib::bs_theme object)","title":"Modifying a teal Application With R Options","text":"option controls bootstrap theme version used teal apps. Achieve better UX customized UI app. Please see vignette Bootstrap themes read functionality. Default: NULL","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-load_nest_code-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.load_nest_code (character)","title":"Modifying a teal Application With R Options","text":"value option appended top code rendered using Show R Code modal button. Default: \"# Add code install/load NEST environment \".","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-threshold_slider_vs_checkboxgroup-numeric","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.threshold_slider_vs_checkboxgroup (numeric)","title":"Modifying a teal Application With R Options","text":"threshold determines variable treated factor filter panel. number unique values variable less threshold variable treated factor instead original class. example, imagine teal.threshold_slider_vs_checkboxgroup equals 2. numeric variable c(1, 1, 1), one unique value, treated factor filter panel (filter panel !). filter panel creates checkbox widget filter values variable, factor variable, instead usual numeric range selector. Default: 5.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-basic_table_args-basic_table_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.basic_table_args (basic_table_args object)","title":"Modifying a teal Application With R Options","text":"specifies list arguments passed every call rtables::basic_table made teal application. can used format rtables without making changes application code. See documentation teal.widgets::basic_table_args information. Default: teal.widgets::basic_table_args().","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-ggplot2_args-ggplot2_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.ggplot2_args (ggplot2_args object)","title":"Modifying a teal Application With R Options","text":"option allows modifying labels themes ggplot2 plots teal application. See documentation teal.widgets::ggplot2_args information. Default: teal.widgets::ggplot2_args().","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-plot_dpi-integer-value-24-or-larger","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.plot_dpi (integer value 24 or larger)","title":"Modifying a teal Application With R Options","text":"option controls dots per inch graphs rendered downloaded using module plot_with_settings teal.widgets package. Default: 72","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-log_layout-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_layout (character)","title":"Modifying a teal Application With R Options","text":"defines layout log message used teal application. teal uses layout format emitted log messages. Read documentation teal.logger::register_logger information. must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"[{level}] {format(time, \\\"%Y-%m-%d %H:%M:%OS4\\\")} pid:{pid} token:[{token}] {ans} {msg}\". Note layout formatted glue package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-log_level-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_level (character)","title":"Modifying a teal Application With R Options","text":"logging level threshold used teal application. teal application emit logs level. See documentation logger::TRACE possible values logging threshold information . must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"INFO\". Note two levels considered less severe \"INFO\": \"DEBUG\" \"TRACE\". order see log messages two levels well, change log level default \"TRACE\", least severe log level.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-show_js_log-logical","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.show_js_log (logical)","title":"Modifying a teal Application With R Options","text":"indicates whether print JavaScript console logs R console. set TRUE, logs printed; otherwise, won’t. Default: FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-lockfile-mode-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.lockfile.mode (character)","title":"Modifying a teal Application With R Options","text":"enables compute renv lockfile shows button \"download lockfile\" footer. Values: \"auto\" - auto detect whether compute lockfile \"enabled\" - compute lockfile show \"download lockfile\" footer \"disabled\" - compute lockfile show \"download lockfile\" footer Default: \"auto\". read lockfile usage creation check ?teal::module_teal_lockfile.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal_logging","dir":"Articles","previous_headings":"Deprecated options","what":"teal_logging","title":"Modifying a teal Application With R Options","text":"Deprecated favor using teal.logger package logging.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal_show_js_log","dir":"Articles","previous_headings":"Deprecated options","what":"teal_show_js_log","title":"Modifying a teal Application With R Options","text":"Deprecated favor teal.show_js_log (see ).","code":""},{"path":"https://insightsengineering.github.io/teal/main/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Dawid Kaledkowski. Author, maintainer. Pawel Rucki. Author. Aleksander Chlebowski. Author. Andre Verissimo. Author. Kartikeya Kirar. Author. Vedha Viyash. Author. Marcin Kosinski. Author. Adrian Waddell. Author. Chendi Liao. Reviewer. Dony Unardi. Reviewer. Nikolas Burkoff. Author. Mahmoud Hallal. Author. Maciej Nasinski. Author. Konrad Pagacz. Author. Junlue Zhao. Author. Tadeusz Lewandowski. Author. F. Hoffmann-La Roche AG. Copyright holder, funder. Maximilian Mordig. Contributor.","code":""},{"path":"https://insightsengineering.github.io/teal/main/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Kaledkowski D, Rucki P, Chlebowski , Verissimo , Kirar K, Viyash V, Kosinski M, Waddell , Burkoff N, Hallal M, Nasinski M, Pagacz K, Zhao J, Lewandowski T (2024). teal: Exploratory Web Apps Analyzing Clinical Trials Data. R package version 0.15.2.9083, https://github.com/insightsengineering/teal/, https://insightsengineering.github.io/teal/main/.","code":"@Manual{, title = {teal: Exploratory Web Apps for Analyzing Clinical Trials Data}, author = {Dawid Kaledkowski and Pawel Rucki and Aleksander Chlebowski and Andre Verissimo and Kartikeya Kirar and Vedha Viyash and Marcin Kosinski and Adrian Waddell and Nikolas Burkoff and Mahmoud Hallal and Maciej Nasinski and Konrad Pagacz and Junlue Zhao and Tadeusz Lewandowski}, year = {2024}, note = {R package version 0.15.2.9083, https://github.com/insightsengineering/teal/}, url = {https://insightsengineering.github.io/teal/main/}, }"},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"teal-interactive-exploratory-data-analysis-with-shiny-web-applications-","dir":"","previous_headings":"","what":"Exploratory Web Apps for Analyzing Clinical Trials Data","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"teal shiny-based interactive exploration framework analyzing data. teal applications require app developers specify: CDISC data, commonly used clinical trial reporting Independent datasets, example data.frame Related datasets, example set data.frames key columns enable data joins MultiAssayExperiment objects R data structures representing analyzing multi-omics experiments teal.modules.general: general modules exploring relational/independent/CDISC data teal.modules.clinical: modules specific CDISC data clinical trial reporting teal.modules.hermes: modules analyzing MultiAssayExperiment objects lot functionality teal framework derives following packages: teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.logger: standardizes logging within teal framework. teal.reporter: allows teal applications generate reports. Dive deeper teal comprehensive video guide. Please click image start learning:","code":""},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Alternatively, might also use development version.","code":"install.packages(\"teal\") # install.packages(\"pak\") pak::pak(\"insightsengineering/teal\")"},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"usage","dir":"","previous_headings":"","what":"Usage","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Please see teal.gallery TLG Catalog see examples teal apps. Please start “Technical Blueprint” article, “Getting Started” article, package vignettes detailed guide.","code":"library(teal) app <- init( data = teal_data(iris = iris), modules = list( module( label = \"iris histogram\", server = function(input, output, session, data) { updateSelectInput(session = session, inputId = \"var\", choices = names(data()[[\"iris\"]])[1:4]) output$hist <- renderPlot({ req(input$var) hist(x = data()[[\"iris\"]][[input$var]]) }) }, ui = function(id) { ns <- NS(id) list( selectInput(inputId = ns(\"var\"), label = \"Column name\", choices = NULL), plotOutput(outputId = ns(\"hist\")) ) } ) ) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"getting-help","dir":"","previous_headings":"","what":"Getting help","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"encounter bug feature request, please file issue. questions, discussions, updates, use teal channel pharmaverse slack workspace.","code":""},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"acknowledgment","dir":"","previous_headings":"","what":"Acknowledgment","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"package result joint efforts many developers stakeholders. like thank everyone contributed far!","code":""},{"path":[]},{"path":[]},{"path":[]},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":null,"dir":"Reference","previous_headings":"","what":"Drive a teal application — TealAppDriver","title":"Drive a teal application — TealAppDriver","text":"Drive teal application Drive teal application","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Drive a teal application — TealAppDriver","text":"Extension shinytest2::AppDriver class methods driving teal application performing interactions shinytest2 tests.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver -> TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver$expect_download() shinytest2::AppDriver$expect_html() shinytest2::AppDriver$expect_js() shinytest2::AppDriver$expect_screenshot() shinytest2::AppDriver$expect_text() shinytest2::AppDriver$expect_unique_names() shinytest2::AppDriver$expect_values() shinytest2::AppDriver$get_chromote_session() shinytest2::AppDriver$get_dir() shinytest2::AppDriver$get_download() shinytest2::AppDriver$get_html() shinytest2::AppDriver$get_js() shinytest2::AppDriver$get_logs() shinytest2::AppDriver$get_screenshot() shinytest2::AppDriver$get_text() shinytest2::AppDriver$get_url() shinytest2::AppDriver$get_value() shinytest2::AppDriver$get_values() shinytest2::AppDriver$get_variant() shinytest2::AppDriver$get_window_size() shinytest2::AppDriver$log_message() shinytest2::AppDriver$run_js() shinytest2::AppDriver$set_inputs() shinytest2::AppDriver$set_window_size() shinytest2::AppDriver$stop() shinytest2::AppDriver$upload_file() shinytest2::AppDriver$view() shinytest2::AppDriver$wait_for_idle() shinytest2::AppDriver$wait_for_js() shinytest2::AppDriver$wait_for_value()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver$new() TealAppDriver$click() TealAppDriver$expect_no_shiny_error() TealAppDriver$expect_no_validation_error() TealAppDriver$expect_validation_error() TealAppDriver$set_input() TealAppDriver$navigate_teal_tab() TealAppDriver$active_ns() TealAppDriver$active_module_ns() TealAppDriver$active_module_element() TealAppDriver$active_module_element_text() TealAppDriver$active_filters_ns() TealAppDriver$active_data_summary_ns() TealAppDriver$active_data_summary_element() TealAppDriver$get_active_module_input() TealAppDriver$get_active_module_output() TealAppDriver$get_active_module_table_output() TealAppDriver$get_active_module_plot_output() TealAppDriver$set_active_module_input() TealAppDriver$get_active_filter_vars() TealAppDriver$get_active_data_summary_table() TealAppDriver$is_visible() TealAppDriver$get_active_data_filters() TealAppDriver$add_filter_var() TealAppDriver$remove_filter_var() TealAppDriver$set_active_filter_selection() TealAppDriver$get_attr() TealAppDriver$get_html_rvest() TealAppDriver$open_url() TealAppDriver$wait_for_active_module_value() TealAppDriver$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"Drive a teal application — TealAppDriver","text":"Initialize TealAppDriver object testing teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$new( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), landing_popup = NULL, timeout = rlang::missing_arg(), load_timeout = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"data, modules, filter, title, header, footer, landing_popup arguments passed init timeout (numeric) Default number milliseconds timeout timeout_ parameter TealAppDriver class. Defaults 20s. See shinytest2::AppDriver new method details change via options environment variables. load_timeout (numeric) long wait app load, ms. includes time start R. Defaults 100s. See shinytest2::AppDriver new method details change via options environment variables ... Additional arguments passed shinytest2::AppDriver$new","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Object class TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-click-","dir":"Reference","previous_headings":"","what":"Method click()","title":"Drive a teal application — TealAppDriver","text":"Append parent shinytest2::AppDriver click method call waif_for_idle() method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$click(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"... arguments passed parent shinytest2::AppDriver click() method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-expect-no-shiny-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_shiny_error()","title":"Drive a teal application — TealAppDriver","text":"Check app shiny errors. checks global shiny errors. Note shiny errors dependent shiny server render captured teal module tab visited shiny trigger server computations tab invisible. , navigate module tab want test calling function. Although, catches errors hidden module tabs already rendered.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_shiny_error()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-expect-no-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_validation_error()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-expect-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_validation_error()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-set-input-","dir":"Reference","previous_headings":"","what":"Method set_input()","title":"Drive a teal application — TealAppDriver","text":"Set input teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-5","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id complete name space. value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-navigate-teal-tab-","dir":"Reference","previous_headings":"","what":"Method navigate_teal_tab()","title":"Drive a teal application — TealAppDriver","text":"Navigate teal tabs teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-6","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$navigate_teal_tab(tabs)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"tabs (character) Labels tabs navigate . order tabs important, start parent level tab. Note: case teal tab group duplicate names, first tab selected, wish select second tab name, use suffix \"_1\". wish select third tab name, use suffix \"_2\" .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-ns-","dir":"Reference","previous_headings":"","what":"Method active_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space different components teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-7","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(list) list active shiny name space teal components.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-module-ns-","dir":"Reference","previous_headings":"","what":"Method active_module_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting module content.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-8","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-4","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-module-element-","dir":"Reference","previous_headings":"","what":"Method active_module_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-9","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element(element)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-4","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-5","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-module-element-text-","dir":"Reference","previous_headings":"","what":"Method active_module_element_text()","title":"Drive a teal application — TealAppDriver","text":"Get text active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-10","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element_text(element)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-5","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) text custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-6","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) text active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-filters-ns-","dir":"Reference","previous_headings":"","what":"Method active_filters_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-11","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_filters_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-7","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-data-summary-ns-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting data-summary panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-12","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-8","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space data-summary component.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-data-summary-element-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-13","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_element(element)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-6","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-9","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-input-","dir":"Reference","previous_headings":"","what":"Method get_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Get input module teal app. function access inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-14","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_input(input_id)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-7","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-10","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-15","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_output(output_id)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-8","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"output_id (character) shiny output id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-11","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny output.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-table-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_table_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::table_with_settings DT::DTOutput teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-16","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_table_output(table_id, which = 1)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-9","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"table_id (character(1)) id table active teal module's name space. (integer) one table, extracted. default look table built using teal.widgets::table_with_settings.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-12","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame table contents.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-plot-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_plot_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::plot_with_settings teal app. function access plots name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-17","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_plot_output(plot_id)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-10","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"plot_id (character(1)) id plot active teal module's name space.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-13","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"src attribute character(1) vector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-set-active-module-input-","dir":"Reference","previous_headings":"","what":"Method set_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Set input module teal app. function set inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-18","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_module_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-11","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value . value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-14","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-filter-vars-","dir":"Reference","previous_headings":"","what":"Method get_active_filter_vars()","title":"Drive a teal application — TealAppDriver","text":"Get active datasets can accessed via filter panel current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-19","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_filter_vars()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-data-summary-table-","dir":"Reference","previous_headings":"","what":"Method get_active_data_summary_table()","title":"Drive a teal application — TealAppDriver","text":"Get active data summary table","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-20","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_summary_table()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-15","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-is-visible-","dir":"Reference","previous_headings":"","what":"Method is_visible()","title":"Drive a teal application — TealAppDriver","text":"Test DOM elements visible page JavaScript call.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-21","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$is_visible( selector, content_visibility_auto = FALSE, opacity_property = FALSE, visibility_property = FALSE )"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-12","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) CSS selector check visibility. CSS id return one element UI well formed. content_visibility_auto, opacity_property, visibility_property (logical(1)) See information https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-16","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Logical vector occurrences selector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-data-filters-","dir":"Reference","previous_headings":"","what":"Method get_active_data_filters()","title":"Drive a teal application — TealAppDriver","text":"Get active filter variables dataset teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-22","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_filters(dataset_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-13","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset get filter variables . NULL, filter variables datasets returned list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-add-filter-var-","dir":"Reference","previous_headings":"","what":"Method add_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Add new variable dataset filtered.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-23","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$add_filter_var(dataset_name, var_name, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-14","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset add filter variable . var_name (character) name variable add filter panel. ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-17","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-remove-filter-var-","dir":"Reference","previous_headings":"","what":"Method remove_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Remove active filter variable dataset active filter variables panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-24","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$remove_filter_var(dataset_name = NULL, var_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-15","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset remove filter variable . NULL, filter variables removed. var_name (character) name variable remove filter panel. NULL, filter variables dataset removed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-18","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-set-active-filter-selection-","dir":"Reference","previous_headings":"","what":"Method set_active_filter_selection()","title":"Drive a teal application — TealAppDriver","text":"Set active filter values variable dataset active filter variable panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-25","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_filter_selection(dataset_name, var_name, input, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-16","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset set filter value . var_name (character) name variable set filter value . input value set filter . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-19","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-attr-","dir":"Reference","previous_headings":"","what":"Method get_attr()","title":"Drive a teal application — TealAppDriver","text":"Extract html attribute (found selector).","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-26","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_attr(selector, attribute)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-17","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) specifying selector used get content specific node. attribute (character(1)) name attribute retrieve node specified selector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-20","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"character vector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-html-rvest-","dir":"Reference","previous_headings":"","what":"Method get_html_rvest()","title":"Drive a teal application — TealAppDriver","text":"Wrapper around get_html passes output directly rvest::read_html.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-27","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_html_rvest(selector)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-18","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) passed get_html.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-21","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"XML document. Wrapper around get_url() method opens app browser.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-28","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$open_url()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-22","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Nothing. Opens underlying teal app browser.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-wait-for-active-module-value-","dir":"Reference","previous_headings":"","what":"Method wait_for_active_module_value()","title":"Drive a teal application — TealAppDriver","text":"Waits specified input, output, export value. function serves wrapper around wait_for_value method, providing flexible interface waiting different types values within active module namespace.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-29","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$wait_for_active_module_value( input = rlang::missing_arg(), output = rlang::missing_arg(), export = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-19","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input, output, export name input, output, export value. one parameters may used. ... Must empty. Allows parameter expansion. Parameter additional value passed wait_for_value.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"Drive a teal application — TealAppDriver","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-30","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-20","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":null,"dir":"Reference","previous_headings":"","what":"TealReportCard — TealReportCard","title":"TealReportCard — TealReportCard","text":"Child class ReportCard used teal specific applications. addition parent methods, supports rendering teal specific elements source code, encodings panel content filter panel content part meta data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard -> TealReportCard","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard$append_content() teal.reporter::ReportCard$append_metadata() teal.reporter::ReportCard$append_plot() teal.reporter::ReportCard$append_rcode() teal.reporter::ReportCard$append_table() teal.reporter::ReportCard$append_text() teal.reporter::ReportCard$from_list() teal.reporter::ReportCard$get_content() teal.reporter::ReportCard$get_metadata() teal.reporter::ReportCard$get_name() teal.reporter::ReportCard$initialize() teal.reporter::ReportCard$reset() teal.reporter::ReportCard$set_name() teal.reporter::ReportCard$to_list()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealReportCard — TealReportCard","text":"TealReportCard$append_src() TealReportCard$append_fs() TealReportCard$append_encodings() TealReportCard$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-append-src-","dir":"Reference","previous_headings":"","what":"Method append_src()","title":"TealReportCard — TealReportCard","text":"Appends source code content meta data TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_src(src, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"src (character(1)) code text. ... rmarkdown R chunk parameter value. eval parameter always set FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"Object class TealReportCard, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-append-fs-","dir":"Reference","previous_headings":"","what":"Method append_fs()","title":"TealReportCard — TealReportCard","text":"Appends filter state list content metadata TealReportCard. filter state list attribute named formatted, appends card otherwise uses default yaml::.yaml format list. filter state list empty, nothing appended content.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_fs(fs)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"fs (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-append-encodings-","dir":"Reference","previous_headings":"","what":"Method append_encodings()","title":"TealReportCard — TealReportCard","text":"Appends encodings list content metadata TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_encodings(encodings)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"encodings (list) list encodings selections teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealReportCard — TealReportCard","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"## ------------------------------------------------ ## Method `TealReportCard$append_src` ## ------------------------------------------------ card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content() #> [1] \"plot(iris)\" ## ------------------------------------------------ ## Method `TealReportCard$append_encodings` ## ------------------------------------------------ card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content() #> [1] \"Selected Options\""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":null,"dir":"Reference","previous_headings":"","what":"TealSlicesBlock — TealSlicesBlock","title":"TealSlicesBlock — TealSlicesBlock","text":"Specialized TealSlicesBlock block managing filter panel content reports.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"super-classes","dir":"Reference","previous_headings":"","what":"Super classes","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock -> teal.reporter::TextBlock -> TealSlicesBlock","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock$get_content() teal.reporter::TextBlock$get_available_styles() teal.reporter::TextBlock$get_style() teal.reporter::TextBlock$set_style()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealSlicesBlock — TealSlicesBlock","text":"TealSlicesBlock$new() TealSlicesBlock$set_content() TealSlicesBlock$from_list() TealSlicesBlock$to_list() TealSlicesBlock$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$new(content = teal_slices(), style = \"verbatim\")"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function. style (character(1)) string specifying style apply.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object content parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"Object class TealSlicesBlock, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-set-content-","dir":"Reference","previous_headings":"","what":"Method set_content()","title":"TealSlicesBlock — TealSlicesBlock","text":"Sets content TealSlicesBlock. Sets content YAML text represents list generated teal_slices. list displays limited number fields teal_slice objects, list sufficient conclude filters applied. selected field teal_slice object range, displayed \"min\"","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$set_content(content)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-from-list-","dir":"Reference","previous_headings":"","what":"Method from_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Create TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$from_list(x)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"x (named list) two fields text style. Use get_available_styles method get possible styles.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\"))"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-to-list-","dir":"Reference","previous_headings":"","what":"Method to_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Convert TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$to_list()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"named list text style.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealSlicesBlock — TealSlicesBlock","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"## ------------------------------------------------ ## Method `TealSlicesBlock$from_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\")) ## ------------------------------------------------ ## Method `TealSlicesBlock$to_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list() #> $text #> [1] \"\" #> #> $style #> [1] \"verbatim\" #>"},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Append a teal_module to children of a teal_modules object — append_module","title":"Append a teal_module to children of a teal_modules object — append_module","text":"Append teal_module children teal_modules object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append a teal_module to children of a teal_modules object — append_module","text":"","code":"append_module(modules, module)"},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append a teal_module to children of a teal_modules object — append_module","text":"modules (teal_modules) module (teal_module) object appended onto children modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Append a teal_module to children of a teal_modules object — append_module","text":"teal_modules object module appended.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":null,"dir":"Reference","previous_headings":"","what":"Compare bookmarks. — bookmarks_identical","title":"Compare bookmarks. — bookmarks_identical","text":"Test two bookmarks store identical state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compare bookmarks. — bookmarks_identical","text":"","code":"bookmarks_identical(book1, book2)"},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compare bookmarks. — bookmarks_identical","text":"book1, book2 bookmark directories stored shiny_bookmarks/; default two recently modified directories","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compare bookmarks. — bookmarks_identical","text":"Invisible NULL bookmarks identical bookmarks test. FALSE inconsistencies detected.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Compare bookmarks. — bookmarks_identical","text":"input environments compared one variable time identical, values bookmarks reported. States datatables stripped time element comparing time stamp always different. contents printed large contents informative. Elements present one bookmark absent also reported. Differences printed messages. values environments compared .equal.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"how-to-use","dir":"Reference","previous_headings":"","what":"How to use","title":"Compare bookmarks. — bookmarks_identical","text":"Open application, change relevant inputs (typically, ), create bookmark. open bookmark immediately create bookmark . restoring bookmarks occurred properly, two bookmarks store state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":null,"dir":"Reference","previous_headings":"","what":"Build app title with favicon — build_app_title","title":"Build app title with favicon — build_app_title","text":"helper function create browser title along logo.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Build app title with favicon — build_app_title","text":"","code":"build_app_title( title = \"teal app\", favicon = \"https://raw.githubusercontent.com/insightsengineering/hex-stickers/main/PNG/nest.png\" )"},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Build app title with favicon — build_app_title","text":"title (character) browser title teal app. favicon (character) path icon title. image/icon path can remote static path accessible shiny, like www/","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Build app title with favicon — build_app_title","text":"shiny.tag containing element adds title logo shiny app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls expression when condition is met — call_once_when","title":"Calls expression when condition is met — call_once_when","text":"Function postpones handlerExpr moment eventExpr (condition) returns TRUE, otherwise nothing happens.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls expression when condition is met — call_once_when","text":"","code":"call_once_when( eventExpr, handlerExpr, event.env = parent.frame(), handler.env = parent.frame(), ... )"},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls expression when condition is met — call_once_when","text":"eventExpr (quoted unquoted) logical expression represents event; can simple reactive value like input$click, call reactive expression like dataset(), even complex expression inside curly braces. handlerExpr expression call whenever eventExpr invalidated. side-effect-producing action (return value ignored). executed within isolate() scope. event.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. eventExpr quosure event.quoted TRUE, event.env ignored. handler.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. handlerExpr quosure handler.quoted TRUE, handler.env ignored. ... additional arguments passed observeEvent exception eventExpr allowed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls expression when condition is met — call_once_when","text":"observer.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in filters — check_filter_datanames","title":"Check datanames in filters — check_filter_datanames","text":"function checks whether datanames filters correspond data, returning character vector error messages TRUE checks pass.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in filters — check_filter_datanames","text":"","code":"check_filter_datanames(filters, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in filters — check_filter_datanames","text":"filters (teal_slices) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in filters — check_filter_datanames","text":"character(1) containing error message TRUE validation passes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in modules — check_modules_datanames","title":"Check datanames in modules — check_modules_datanames","text":"functions check specified datanames modules match data object, returning error messages TRUE successful validation. Two functions return error message different forms: check_modules_datanames returns character(1) basic assertion usage check_modules_datanames_html returns shiny.tag.list display app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in modules — check_modules_datanames","text":"","code":"check_modules_datanames(modules, datanames) check_modules_datanames_html(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in modules — check_modules_datanames","text":"modules (teal_modules) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in modules — check_modules_datanames","text":"TRUE validation passes, otherwise character(1) shiny.tag.list","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":null,"dir":"Reference","previous_headings":"","what":"Check that argument is reactive. — check_reactive","title":"Check that argument is reactive. — check_reactive","text":"Check argument reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check that argument is reactive. — check_reactive","text":"","code":"check_reactive(x, null.ok = FALSE) test_reactive(x, null.ok = FALSE) assert_reactive( x, null.ok = FALSE, .var.name = checkmate::vname(x), add = NULL )"},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check that argument is reactive. — check_reactive","text":"x [] Object check. null.ok [logical(1)] set TRUE, x may also NULL. case type check x performed, additional checks disabled. .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname. add [AssertCollection] Collection store assertion messages. See AssertCollection.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check that argument is reactive. — check_reactive","text":"Depending function prefix: check successful, functions assertClass/assert_class return x invisibly, whereas checkClass/check_class testClass/test_class return TRUE. check successful, assertClass/assert_class throws error message, testClass/test_class returns FALSE, checkClass/check_class return string error message. function expect_class always returns expectation.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":null,"dir":"Reference","previous_headings":"","what":"Application ID — create_app_id","title":"Application ID — create_app_id","text":"Creates App ID used match filter snapshots application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Application ID — create_app_id","text":"","code":"create_app_id(data, modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Application ID — create_app_id","text":"data (teal_data teal_data_module) accepted init modules (teal_modules) object accepted init","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Application ID — create_app_id","text":"single character string.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Application ID — create_app_id","text":"Calculate app ID used stamp filter state snapshots. App ID hash app's data modules. See \"transferring snapshots\" section ?snapshot.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":null,"dir":"Reference","previous_headings":"","what":"Capture error and decorate error message. — decorate_err_msg","title":"Capture error and decorate error message. — decorate_err_msg","text":"Capture error decorate error message.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Capture error and decorate error message. — decorate_err_msg","text":"","code":"decorate_err_msg(x, pre = character(0), post = character(0))"},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Capture error and decorate error message. — decorate_err_msg","text":"x object evaluate pre (character(1)) string prepend error message post (character(1)) string append error message","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Capture error and decorate error message. — decorate_err_msg","text":"x error, otherwise throws error decorated message","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":null,"dir":"Reference","previous_headings":"","what":"Deep copy teal_slices — deep_copy_filter","title":"Deep copy teal_slices — deep_copy_filter","text":"important create new copy teal_slices starting new shiny session. Otherwise, object shared multiple users created global environment shiny session starts.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deep copy teal_slices — deep_copy_filter","text":"","code":"deep_copy_filter(filter)"},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Deep copy teal_slices — deep_copy_filter","text":"filter (teal_slices)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Deep copy teal_slices — deep_copy_filter","text":"teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Adds signature protection to the datanames in the data — .add_signature_to_data","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"Adds signature protection datanames data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"","code":".add_signature_to_data(data)"},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"data (teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"teal_data additional code signature datanames","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":null,"dir":"Reference","previous_headings":"","what":"Get code that tests the integrity of the reproducible data — .get_hashes_code","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"Get code tests integrity reproducible data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"","code":".get_hashes_code(data, datanames = names(data))"},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"data (teal_data) object holding data datanames (character) names datasets","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"character vector code lines.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-smart_rbind.html","id":null,"dir":"Reference","previous_headings":"","what":"Smart rbind — .smart_rbind","title":"Smart rbind — .smart_rbind","text":"Combine data.frame objects different columns","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-smart_rbind.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Smart rbind — .smart_rbind","text":"","code":".smart_rbind(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-smart_rbind.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Smart rbind — .smart_rbind","text":"... (data.frame)","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"An example teal module — example_module","text":"","code":"example_module( label = \"example teal module\", datanames = \"all\", transformers = list() )"},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"An example teal module — example_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"An example teal module — example_module","text":"teal module can included modules argument init().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"An example teal module — example_module","text":"","code":"app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract all transformers from modules. — extract_transformers","title":"Extract all transformers from modules. — extract_transformers","text":"Extract transformers modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract all transformers from modules. — extract_transformers","text":"","code":"extract_transformers(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract all transformers from modules. — extract_transformers","text":"modules teal_modules teal_module","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract all transformers from modules. — extract_transformers","text":"list teal_transform_module nested way input modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":null,"dir":"Reference","previous_headings":"","what":"Get client timezone — get_client_timezone","title":"Get client timezone — get_client_timezone","text":"User timezone browser may different one server. script can run register shiny input contains information timezone browser.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get client timezone — get_client_timezone","text":"","code":"get_client_timezone(ns)"},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get client timezone — get_client_timezone","text":"ns (function) namespace function passed session object shiny server. shiny modules allow proper name spacing registered input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get client timezone — get_client_timezone","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_rcode_libraries.html","id":null,"dir":"Reference","previous_headings":"","what":"Generates library calls from current session info — get_rcode_libraries","title":"Generates library calls from current session info — get_rcode_libraries","text":"Function create multiple library calls current session info ensure reproducible code works.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_rcode_libraries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generates library calls from current session info — get_rcode_libraries","text":"","code":"get_rcode_libraries()"},{"path":"https://insightsengineering.github.io/teal/main/reference/get_rcode_libraries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generates library calls from current session info — get_rcode_libraries","text":"Character vector library() calls.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Get unique labels — get_unique_labels","title":"Get unique labels — get_unique_labels","text":"Get unique labels modules avoid namespace conflicts.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get unique labels — get_unique_labels","text":"","code":"get_unique_labels(labels)"},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get unique labels — get_unique_labels","text":"labels (character) vector labels","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get unique labels — get_unique_labels","text":"(character) vector unique labels","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include CSS files from /inst/css/ package directory to application header — include_css_files","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"","code":"include_css_files(pattern = \"*\")"},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"pattern (character) pattern files included","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"HTML code includes CSS files.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include JS files from /inst/js/ package directory to application header — include_js_files","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"","code":"include_js_files(pattern = NULL, except = NULL)"},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"pattern (character) pattern files included, passed system.file except (character) vector basename filenames excluded","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"HTML code includes JS files.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":null,"dir":"Reference","previous_headings":"","what":"Code to include teal CSS and JavaScript files — include_teal_css_js","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"useful want use JavaScript CSS files used teal application. also useful running standalone modules teal correct styles. Also initializes shinyjs can use .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"","code":"include_teal_css_js()"},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"shiny.tag.list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"Simply add include_teal_css_js() one UI elements.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":null,"dir":"Reference","previous_headings":"","what":"Create the server and UI function for the shiny app — init","title":"Create the server and UI function for the shiny app — init","text":"End-users: important function start teal app composed teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create the server and UI function for the shiny app — init","text":"","code":"init( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), id = character(0), landing_popup = NULL )"},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create the server and UI function for the shiny app — init","text":"data (teal_data teal_data_module) constructing data object, refer teal_data() teal_data_module(). datanames set teal_data object, defaults teal_data environment used. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices(). title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. landing_popup (teal_module_landing) Optionally, landing_popup_module show soon teal app initialized.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create the server and UI function for the shiny app — init","text":"Named list containing server UI functions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create the server and UI function for the shiny app — init","text":"","code":"app <- init( data = within( teal_data(), { new_iris <- transform(iris, id = seq_len(nrow(iris))) new_mtcars <- transform(mtcars, id = seq_len(nrow(mtcars))) } ), modules = modules( module( label = \"data source\", server = function(input, output, session, data) {}, ui = function(id, ...) tags$div(p(\"information about data source\")), datanames = \"all\" ), example_module(label = \"example teal module\"), module( \"Iris Sepal.Length histogram\", server = function(input, output, session, data) { output$hist <- renderPlot( hist(data()[[\"new_iris\"]]$Sepal.Length) ) }, ui = function(id, ...) { ns <- NS(id) plotOutput(ns(\"hist\")) }, datanames = \"new_iris\" ) ), filter = teal_slices( teal_slice(dataname = \"new_iris\", varname = \"Species\"), teal_slice(dataname = \"new_iris\", varname = \"Sepal.Length\"), teal_slice(dataname = \"new_mtcars\", varname = \"cyl\"), exclude_varnames = list(new_iris = c(\"Sepal.Width\", \"Petal.Width\")), module_specific = TRUE, mapping = list( `example teal module` = \"new_iris Species\", `Iris Sepal.Length histogram` = \"new_iris Species\", global_filters = \"new_mtcars cyl\" ) ), title = \"App title\", header = tags$h1(\"Sample App\"), footer = tags$p(\"Sample footer\") ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":null,"dir":"Reference","previous_headings":"","what":"Does the object make use of the arg — is_arg_used","title":"Does the object make use of the arg — is_arg_used","text":"object make use arg","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Does the object make use of the arg — is_arg_used","text":"","code":"is_arg_used(modules, arg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Does the object make use of the arg — is_arg_used","text":"modules (teal_module teal_modules) object arg (character(1)) names arguments checked formals teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Does the object make use of the arg — is_arg_used","text":"logical whether object makes use arg.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Landing popup module — landing_popup_module","title":"Landing popup module — landing_popup_module","text":"Creates landing welcome popup teal applications. module used display popup dialog application starts. dialog blocks access application must closed button application can viewed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Landing popup module — landing_popup_module","text":"","code":"landing_popup_module( label = \"Landing Popup\", title = NULL, content = NULL, buttons = modalButton(\"Accept\") )"},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Landing popup module — landing_popup_module","text":"label (character(1)) Label module. title (character(1)) Text displayed popup title. content (character(1), shiny.tag shiny.tag.list) content popup. Passed ... shiny::modalDialog. See examples. buttons (shiny.tag shiny.tag.list) Typically modalButton actionButton. See examples.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Landing popup module — landing_popup_module","text":"teal_module (extended teal_landing_module class) used teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Landing popup module — landing_popup_module","text":"","code":"app1 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( content = \"A place for the welcome message or a disclaimer statement.\", buttons = modalButton(\"Proceed\") ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app1$ui, app1$server) } app2 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( title = \"Welcome\", content = tags$b( \"A place for the welcome message or a disclaimer statement.\", style = \"color: red;\" ), buttons = tagList( modalButton(\"Proceed\"), actionButton(\"read\", \"Read more\", onclick = \"window.open('http://google.com', '_blank')\" ), actionButton(\"close\", \"Reject\", onclick = \"window.close()\") ) ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app2$ui, app2$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"App state management. — module_bookmark_manager","title":"App state management. — module_bookmark_manager","text":"Capture restore global (app) input state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"App state management. — module_bookmark_manager","text":"","code":"ui_bookmark_panel(id, modules) srv_bookmark_panel(id, modules) get_bookmarking_option() need_bookmarking(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"App state management. — module_bookmark_manager","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"App state management. — module_bookmark_manager","text":"Invisible NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"App state management. — module_bookmark_manager","text":"module introduces bookmarks teal apps: shiny bookmarking mechanism becomes enabled server-side bookmarks can created. bookmark manager presents button bookmark icon placed tab-bar. clicked, button creates bookmark opens modal displays bookmark URL. teal guarantee modules (teal_module objects) bookmarkable. , teal_bookmarkable attribute set TRUE. modules bookmarkable, bookmark manager modal displays warning bookmark button displays flag. order communicate external module bookmarkable, module developer set teal_bookmarkable attribute TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"App state management. — module_bookmark_manager","text":"bookmark URL contains app address /?_state_id_= suffix. directory created server, state application saved. Accessing bookmark URL opens new session app starts previously saved state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"App state management. — module_bookmark_manager","text":"enable bookmarking use either: shiny app using shinyApp(..., enableBookmarking = \"server\") (supported shinytest2) set options(shiny.bookmarkStore = \"server\") running app","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":null,"dir":"Reference","previous_headings":"","what":"Data summary — module_data_summary","title":"Data summary — module_data_summary","text":"Module utils display number rows subjects filtered unfiltered data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data summary — module_data_summary","text":"","code":"ui_data_summary(id) srv_data_summary(id, teal_data) get_filter_overview_wrapper(teal_data) get_filter_overview(current_data, initial_data, dataname, subject_keys) get_filter_overview_array(current_data, initial_data, dataname, subject_keys) get_filter_overview_MultiAssayExperiment(current_data, initial_data, dataname)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data summary — module_data_summary","text":"id (character(1)) shiny module instance id. teal_data (reactive returning teal_data) current_data (object) current object (filtering transforming). initial_data (object) initial object. dataname (character(1)) subject_keys (character) names columns determine single unique subjects","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data summary — module_data_summary","text":"NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data summary — module_data_summary","text":"Handling different data classes: get_filter_overview() pseudo S3 method variants : array (data.frame, DataFrame, array, Matrix SummarizedExperiment): Method variant can applied two-dimensional objects ncol() can used. MultiAssayExperiment: summary contains counts colData experiments. data types module displays data name warning icon details. Module includes also \"Show/Hide unsupported\" button toggle rows summary table containing datasets number observations calculated.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter panel module in teal — module_filter_data","title":"Filter panel module in teal — module_filter_data","text":"Creates filter panel module teal_data object returns teal_data. build way filter panel changes anything happens (e.g. module_init_data) triggering reactive events something changed module visible. Thanks special implementation modules' data recalculated modules currently displayed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter panel module in teal — module_filter_data","text":"","code":"ui_filter_data(id) srv_filter_data(id, datasets, active_datanames, data_rv, is_active) .make_filtered_teal_data(modules, data, datasets = NULL, datanames) .observe_active_filter_changed(datasets, is_active, active_datanames, data_rv) .get_filter_expr(datasets, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter panel module in teal — module_filter_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". active_datanames (reactive returning character) module's data names data_rv (reactive returning teal_data) modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter panel module in teal — module_filter_data","text":"eventReactive containing teal_data containing filtered objects filter code. eventReactive triggers conditions met: tab selected (is_active) filters changed (get_filter_expr different previous)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Manage multiple FilteredData objects — module_filter_manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Oversee filter states across entire application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manage multiple FilteredData objects — module_filter_manager","text":"","code":"ui_filter_manager_panel(id) srv_filter_manager_panel(id, slices_global) ui_filter_manager(id) srv_filter_manager(id, slices_global) srv_module_filter_manager(id, module_fd, slices_global)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Manage multiple FilteredData objects — module_filter_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) containing teal_slices. module_fd (FilteredData) Object containing data filtered single teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Module returns slices_global (reactiveVal) containing teal_slices object mapping.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"slices-global","dir":"Reference","previous_headings":"","what":"Slices global","title":"Manage multiple FilteredData objects — module_filter_manager","text":"key role maintaining module-specific filter states played .slicesGlobal object. reference class holds following fields: all_slices (reactiveVal) - reactive value containing filters registered app. module_slices_api (reactiveValues) - reactive field containing references modules' FilteredData object methods. moment used srv_filter_manager display filter states table combining informations all_slices FilteredData$get_available_teal_slices(). session new filters added all_slices unless module_snapshot_manager used restore previous state. Filters all_slices can activated deactivated module linked (ways) attr(, \"mapping\") : module's filter added removed FilteredData object, information passed SlicesGlobal updates attr(, \"mapping\") accordingly. mapping changes SlicesGlobal, filters set removed module's FilteredData.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"filter-manager","dir":"Reference","previous_headings":"","what":"Filter manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Filter-manager split two parts: ui/srv_filter_manager_panel - Called whole app. module observes changes filters slices_global displays table utilizing information mapping: (TRUE) - filter active module (FALSE) - filter inactive module (NA) - filter available module ui/srv_module_filter_manager - Called teal_module. Handling filter states single module keeping module FilteredData consistent slices_global, local filters always reflected slices_global mapping vice versa.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Module for teal — module_init_data","title":"Data Module for teal — module_init_data","text":"module manages data argument srv_teal. teal framework uses teal_data(), can provided various ways: Directly teal.data::teal_data() object. automatically convert reactive teal_data. reactive object returns teal.data::teal_data() object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Module for teal — module_init_data","text":"","code":"ui_init_data(id) srv_init_data(id, data)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data Module for teal — module_init_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data Module for teal — module_init_data","text":"reactive object returns: Output data. data fails returned error handled (tryCatch()) rest application can respond respectively.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"reactive-teal-data-","dir":"Reference","previous_headings":"","what":"Reactive teal_data:","title":"Data Module for teal — module_init_data","text":"data application can reactively updated, prompting srv_teal() rebuild content accordingly. two methods creating interactive teal_data: Using reactive object provided outside teal application. scenario, reactivity controlled external module, srv_teal responds changes. Using teal_data_module(), embedded within teal application, allowing data resubmitted user needed. Since server teal_data_module() must return reactive teal_data object, methods (1 2) produce reactive behavior within teal application. distinction lies data control: first method involves external control, second method involves control custom module within app. details, see module_teal_data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve labels from teal_modules — module_labels","title":"Retrieve labels from teal_modules — module_labels","text":"Retrieve labels teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve labels from teal_modules — module_labels","text":"","code":"module_labels(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve labels from teal_modules — module_labels","text":"modules (teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve labels from teal_modules — module_labels","text":"list containing labels modules. modules nested, function returns nested list labels.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract/Remove module(s) of specific class — extract_module","title":"Extract/Remove module(s) of specific class — extract_module","text":"Given teal_module teal_modules, return elements structure according class.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract/Remove module(s) of specific class — extract_module","text":"","code":"extract_module(modules, class) drop_module(modules, class)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract/Remove module(s) of specific class — extract_module","text":"modules (teal_modules) class class name teal_module extracted dropped.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract/Remove module(s) of specific class — extract_module","text":"extract_module, teal_module class class teal_modules containing modules class class. drop_module, opposite, teal_modules class class. teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter state snapshot management — module_snapshot_manager","title":"Filter state snapshot management — module_snapshot_manager","text":"Capture restore snapshots global (app) filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter state snapshot management — module_snapshot_manager","text":"","code":"ui_snapshot_manager_panel(id) srv_snapshot_manager_panel(id, slices_global) ui_snapshot_manager(id) srv_snapshot_manager(id, slices_global)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter state snapshot management — module_snapshot_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) contains teal_slices object containing teal_slices existing app, active inactive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter state snapshot management — module_snapshot_manager","text":"list containing snapshot history, element unlisted teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter state snapshot management — module_snapshot_manager","text":"module introduces snapshots: stored descriptions filter state entire application. Snapshots allow user save current filter state application later use session, well save file order share app developer users, turn can upload session. snapshot manager accessed camera icon tabset bar. beginning session presents three icons: camera, upload, circular arrow. Clicking camera captures snapshot, clicking upload adds snapshot file applies filter states therein, clicking arrow resets initial application state. snapshots added, show rows table select button save button.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots basically teal_slices objects, however, since module served separate instance FilteredData objects require shared state, teal_slice reactiveVal teal_slices stored . Therefore, teal_slices reversibly converted list lists representation (attributes maintained). Snapshots stored reactiveVal named list. first snapshot initial state application user can add snapshot whenever see fit. every snapshot except initial one, piece UI generated contains snapshot name, select button restore snapshot, save button save file. initial snapshot restored separate \"reset\" button. saved directly user welcome capture initial state snapshot save .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"snapshot-mechanics","dir":"Reference","previous_headings":"","what":"Snapshot mechanics","title":"Filter state snapshot management — module_snapshot_manager","text":"snapshot captured, user prompted name . Names displayed since used create button ids, hood converted syntactically valid strings. New snapshot names validated valid versions unique. Leading trailing white space trimmed. module can read global state application slices_global mapping_matrix. former provides list existing teal_slices latter says slice active module. name accepted, slices_global converted list lists - snapshot. snapshot contains mapping attribute initial application state (one restored), may reflect current one, mapping_matrix transformed obtain current mapping, .e. list , passed mapping argument teal_slices(), result current mapping. substituted snapshot's mapping attribute snapshot added snapshot list. restore app state, snapshot retrieved storage rebuilt teal_slices object. state FilteredData objects (provided datasets) cleared set anew according mapping attribute snapshot. snapshot set current content slices_global. save snapshot, snapshot retrieved reassembled just like restoring, saved file slices_store(). snapshot uploaded, first added storage just like newly created one, used restore app state much like snapshot taken storage. Upon clicking upload icon user prompted file upload may choose name new snapshot. name defaults name file (extension dropped) normal naming rules apply. Loading file yields teal_slices object, disassembled storage used directly restoring app state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"transferring-snapshots","dir":"Reference","previous_headings":"","what":"Transferring snapshots","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots uploaded disk used application come , .e. application uses data modules. ensure case, init stamps teal_slices app id stored app_id attribute teal_slices object. snapshot restored file, app_id compared current app state match snapshot admitted session.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"bookmarks","dir":"Reference","previous_headings":"","what":"Bookmarks","title":"Filter state snapshot management — module_snapshot_manager","text":"onBookmark callback creates snapshot current filter state. done app session, module session. (snapshot retrieved module_teal order set initial app state restored app.) snapshot, previous snapshot history dumped values.rds file .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Filter state snapshot management — module_snapshot_manager","text":"Aleksander Chlebowski","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":null,"dir":"Reference","previous_headings":"","what":"teal main module — module_teal","title":"teal main module — module_teal","text":"Module create teal app. module can called directly instead init() included custom application. Please note init() adds reporter_previewer_module automatically, case calling ui/srv_teal directly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal main module — module_teal","text":"","code":"ui_teal( id, modules, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal main module — module_teal","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal main module — module_teal","text":"NULL invisibly","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal main module — module_teal","text":"Module responsible creating main shiny app layout initializing necessary components. module establishes reactive connection input data every component app. Reactive change data passed argument, reloads app possibly keeps input settings user can continue one left .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"data-flow-in-teal-application","dir":"Reference","previous_headings":"","what":"data flow in teal application","title":"teal main module — module_teal","text":"module supports multiple data inputs eventually, converted reactive returning teal_data module. reactive teal_data object several actions performed: data loading module_init_data data filtering module_filter_data data transformation module_transform_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"fallback-on-failure","dir":"Reference","previous_headings":"","what":"Fallback on failure","title":"teal main module — module_teal","text":"teal designed way app never crash error introduced custom shiny module provided app developer (e.g. teal_data_module(), teal_transform_module()). module returns failing object, app halt evaluation display warning message. App user always chance fix improper input continue without restarting session.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute and validate teal_data_module — module_teal_data","title":"Execute and validate teal_data_module — module_teal_data","text":"low level module handle teal_data_module execution validation. teal_transform_module() inherits teal_data_module() handled module . srv_teal() accepts various data objects eventually transformed reactive teal_data() standard data class whole teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute and validate teal_data_module — module_teal_data","text":"","code":"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) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute and validate teal_data_module — module_teal_data","text":"id (character(1)) Module id data_module (teal_data_module) modules (teal_modules teal_module) datanames validation purpose validate_shiny_silent_error (logical) TRUE, shiny.silent.error validated is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message. data (reactive teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute and validate teal_data_module — module_teal_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"data-validation","dir":"Reference","previous_headings":"","what":"data validation","title":"Execute and validate teal_data_module — module_teal_data","text":"Executed teal_data_module() validated output validated consistency. Output data invalid : teal_data_module() invalid server return reactive. Immediately crashes app! reactive throws shiny.error - happens module creating teal_data() fails. reactive returns qenv.error - happens teal_data() evaluates failing code. reactive object return teal_data(). teal_data() object lacks datanames specified modules argument. teal (observers srv_teal) always waits render app reactive teal_data returned. error 2-4 occurs, relevant error message displayed app user. issue resolved, app continue run. teal guarantees errors data crash app (except error 1).","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"Generate lockfile application's environment reproducibility","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"","code":"ui_teal_lockfile(id) srv_teal_lockfile(id) .teal_lockfile_process_invoke(lockfile_path) .renv_snapshot(lockfile_path) .is_lockfile_deps_installed() .is_disabled_lockfile_scenario()"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"lockfile_path (character) path lockfile.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"NULL","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"different-ways-of-creating-lockfile","dir":"Reference","previous_headings":"","what":"Different ways of creating lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"teal leverages renv::snapshot(), offers multiple methods lockfile creation. Working directory lockfile: teal, default, create implicit type lockfile uses renv::dependencies() detect R packages current project's working directory. DESCRIPTION-based lockfile: generate lockfile based DESCRIPTION file working directory, set renv::settings$snapshot.type(\"explicit\"). naming convention type follows renv::snapshot(). \"explicit\" type, refer renv::settings$package.dependency.fields() DESCRIPTION fields included lockfile. Custom files-based lockfile: specify custom files basis lockfile, set renv::settings$snapshot.type(\"custom\") configure renv.snapshot.filter option.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"lockfile-usage","dir":"Reference","previous_headings":"","what":"lockfile usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"creating lockfile, can restore application's environment using renv::restore().","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls all modules — module_teal_module","title":"Calls all modules — module_teal_module","text":"UI side teal_modules translated tabsetPanel teal_module tabPanel. , UI server called recursively tab separate module reflect nested structure modules argument.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls all modules — module_teal_module","text":"","code":"ui_teal_module(id, modules, depth = 0L) # Default S3 method ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_modules' ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_module' ui_teal_module(id, modules, depth = 0L) srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # Default S3 method srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_modules' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_module' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls all modules — module_teal_module","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth (integer(1)) number helps determine depth modules nesting. data_rv (reactive returning teal_data) datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". slices_global (reactiveVal returning modules_teal_slices) see module_filter_manager data_load_status (reactive returning character) Determines action dependent data loading status: \"ok\" teal_data returned data loading. \"teal_data_module failed\" teal_data_module() return teal_data. Disables tabs buttons. \"external failed\" reactive passed srv_teal(data) return teal_data. Hides whole tab panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls all modules — module_teal_module","text":"output currently active module. srv_teal_module.teal_module returns reactiveVal containing output called module. srv_teal_module.teal_modules returns output module selected input$active_tab.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":null,"dir":"Reference","previous_headings":"","what":"UI and server modules of teal — module_teal_with_splash","title":"UI and server modules of teal — module_teal_with_splash","text":"Please use module_teal instead.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"UI and server modules of teal — module_teal_with_splash","text":"","code":"ui_teal_with_splash( id, data, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal_with_splash(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"UI and server modules of teal — module_teal_with_splash","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"UI and server modules of teal — module_teal_with_splash","text":"Returns reactive expression containing teal_data object data loaded NULL .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Module to transform reactive teal_data — module_transform_data","title":"Module to transform reactive teal_data — module_transform_data","text":"Module calls multiple module_teal_data sequence reactive teal_data output one module handed following module's input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Module to transform reactive teal_data — module_transform_data","text":"","code":"ui_transform_data(id, transformers = list(), class = \"well\") srv_transform_data( id, data, transformers = list(), modules, is_transformer_failed = reactiveValues() )"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Module to transform reactive teal_data — module_transform_data","text":"id (character(1)) Module id transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). data (reactive teal_data) modules (teal_modules teal_module) datanames validation purpose is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Module to transform reactive teal_data — module_transform_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"Retrieve teal_bookmarkable attribute teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"","code":"modules_bookmarkable(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"modules (teal_modules teal_module) object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"named list structure modules TRUE FALSE values indicating whether module bookmarkable.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":null,"dir":"Reference","previous_headings":"","what":"Get module depth — modules_depth","title":"Get module depth — modules_depth","text":"Depth starts 0, single teal.module depth 0. Nesting increases overall depth 1.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get module depth — modules_depth","text":"","code":"modules_depth(modules, depth = 0L)"},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get module depth — modules_depth","text":"modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth optional integer determining current depth level","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get module depth — modules_depth","text":"Depth level given module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":null,"dir":"Reference","previous_headings":"","what":"Template function for TealReportCard creation and customization — report_card_template","title":"Template function for TealReportCard creation and customization — report_card_template","text":"function generates report card title, optional description, option append filter state list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Template function for TealReportCard creation and customization — report_card_template","text":"","code":"report_card_template( title, label, description = NULL, with_filter, filter_panel_api )"},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Template function for TealReportCard creation and customization — report_card_template","text":"title (character(1)) title card (unless overwritten label) label (character(1)) label provided user adding card description (character(1)) optional, additional description with_filter (logical(1)) flag indicating add filter state filter_panel_api (FilterPanelAPI) object API allows generation filter state report","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Template function for TealReportCard creation and customization — report_card_template","text":"(TealReportCard) populated title, description filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a teal module for previewing a report — reporter_previewer_module","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"function wraps teal.reporter::reporter_previewer_ui() teal.reporter::reporter_previewer_srv() teal_module used teal applications. creating teal application using init() module added application automatically teal_modules support report generation.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"","code":"reporter_previewer_module(label = \"Report previewer\", server_args = list())"},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server_args (named list) Arguments passed teal.reporter::reporter_previewer_srv().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"teal_module (extended teal_module_previewer class) containing teal.reporter previewer functionality.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":null,"dir":"Reference","previous_headings":"","what":"Restore value from bookmark. — restoreValue","title":"Restore value from bookmark. — restoreValue","text":"Get value bookmark return default.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Restore value from bookmark. — restoreValue","text":"","code":"restoreValue(value, default)"},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Restore value from bookmark. — restoreValue","text":"value (character(1)) name value restore default fallback value","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Restore value from bookmark. — restoreValue","text":"application restored server-side bookmark, variable specified value values environment. Otherwise default.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Restore value from bookmark. — restoreValue","text":"Bookmarks can store inputs also arbitrary values. values stored onBookmark callbacks restored onBookmarked callbacks, placed values environment session$restoreContext field. Using teal_data_module makes impossible run callbacks app becomes ready modules execute callbacks registered. cases stored values can still recovered session object directly. Note variable names values environment prefixed module name space names, therefore, using function modules, value must run name space function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Run JS file from /inst/js/ package directory — run_js_files","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"triggered server execute client rather triggered directly client. Unlike include_js_files includes JavaScript functions, run_js actually executes JavaScript functions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"","code":"run_js_files(files)"},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"files (character) vector filenames.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":null,"dir":"Reference","previous_headings":"","what":"Show R code modal — show_rcode_modal","title":"Show R code modal — show_rcode_modal","text":"Use shiny::showModal() function show R code inside.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Show R code modal — show_rcode_modal","text":"","code":"show_rcode_modal(title = NULL, rcode, session = getDefaultReactiveDomain())"},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Show R code modal — show_rcode_modal","text":"title (character(1)) Title modal, displayed first comment R code. rcode (character) vector R code show inside modal. session (ShinySession) optional shiny session object, defaults shiny::getDefaultReactiveDomain().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Show R code modal — show_rcode_modal","text":"shiny::showModal()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":null,"dir":"Reference","previous_headings":"","what":"Store and restore teal_slices object — slices_store","title":"Store and restore teal_slices object — slices_store","text":"Functions write teal_slices object file JSON format, also restore object disk.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Store and restore teal_slices object — slices_store","text":"","code":"slices_store(tss, file) slices_restore(file)"},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Store and restore teal_slices object — slices_store","text":"tss (teal_slices) object stored. file (character(1)) file path teal_slices object saved restored. file extension \".json\".","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Store and restore teal_slices object — slices_store","text":"slices_store returns NULL, invisibly. slices_restore returns teal_slices object restored file.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Store and restore teal_slices object — slices_store","text":"Date date time objects stored following formats: Date class converted \"ISO8601\" standard (YYYY-MM-DD). POSIX*t classes converted character using format.POSIX*t(usetz = TRUE, tz = \"UTC\") (YYYY-MM-DD HH:MM:SS UTC, UTC Coordinated Universal Time timezone short-code). format assumed slices_restore. POSIX*t objects selected choices fields teal_slice objects always printed UTC timezone well.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a tdata object — tdata","title":"Create a tdata object — tdata","text":"Recent changes teal cause modules fail modules expect tdata object passed data argument instead receive teal_data object, additionally wrapped reactive expression server functions. order easily adapt modules without proper refactor, use function downgrade data argument.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a tdata object — tdata","text":"","code":"new_tdata(...) tdata2env(...) get_code_tdata(...) # S3 method for class 'tdata' join_keys(...) get_metadata(...) as_tdata(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a tdata object — tdata","text":"... ignored","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a tdata object — tdata","text":"nothing","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal-package.html","id":null,"dir":"Reference","previous_headings":"","what":"teal: Interactive exploration of clinical trials data — teal-package","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"teal package provides shiny based framework creating interactive data analysis environment.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"learn mode package, visit project website read init() manual page.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/teal-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"Maintainer: Dawid Kaledkowski dawid.kaledkowski@roche.com (ORCID) Authors: Pawel Rucki pawel.rucki@roche.com Aleksander Chlebowski aleksander.chlebowski@contractors.roche.com (ORCID) Andre Verissimo andre.verissimo@roche.com (ORCID) Kartikeya Kirar kartikeya.kirar@businesspartner.roche.com Vedha Viyash vedha.viyash@roche.com Marcin Kosinski marcin.kosinski.mk1@roche.com Adrian Waddell adrian.waddell@gene.com Nikolas Burkoff Mahmoud Hallal Maciej Nasinski Konrad Pagacz Junlue Zhao Tadeusz Lewandowski contributors: Chendi Liao chendi.liao@roche.com [reviewer] Dony Unardi unardid@gene.com [reviewer] F. Hoffmann-La Roche AG [copyright holder, funder] Maximilian Mordig [contributor]","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal applications — teal_data_module","title":"Data module for teal applications — teal_data_module","text":"Create teal_data_module object evaluate code history tracking.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal applications — teal_data_module","text":"","code":"teal_data_module(ui, server, label = \"data module\", once = TRUE) # S4 method for class 'teal_data_module,character' eval_code(object, code) # S3 method for class 'teal_data_module' within(data, expr, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal applications — teal_data_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id)) shiny module server function; must take id argument; must return reactive expression containing teal_data object label (character(1)) Label module. (logical(1)) TRUE, data module shown disappear successful data loading. App user longer able interact module anymore. FALSE, data module can reused multiple times. App user able interact change data output module multiple times. object (teal_data_module) code (character language) code evaluate. character, comments retained. data (teal_data_module) object expr (expression) evaluate. Must inline code. See ... See Details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data module for teal applications — teal_data_module","text":"teal_data_module returns list class teal_data_module containing two elements, ui server provided via arguments. eval_code returns teal_data_module object delayed evaluation code module run. within returns teal_data_module object delayed evaluation expr module run.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal applications — teal_data_module","text":"teal_data_module creates shiny module interactively supply modify data teal application. module allows running code (creation modification) app starts reloads. body server function run app rather global environment. means run every time app starts, use sparingly. Pass module instead teal_data object call init(). Note server function must always return teal_data object wrapped reactive expression. See vignette vignette(\"data--shiny-module\", package = \"teal\") details. eval_code evaluates given code environment teal_data object created teal_data_module. code added @code slot teal_data. within convenience function evaluating inline code inside environment teal_data_module. accepts inline expressions (simple compound) allows injecting values expr ... argument: name:value pairs passed ..., name expr replaced value.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal applications — teal_data_module","text":"","code":"tdm <- teal_data_module( ui = function(id) { ns <- NS(id) actionButton(ns(\"submit\"), label = \"Load data\") }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) eval_code(tdm, \"dataset1 <- subset(dataset1, Species == 'virginica')\") #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE within(tdm, dataset1 <- subset(dataset1, Species == \"virginica\")) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE # use additional parameter for expression value substitution. valid_species <- \"versicolor\" within(tdm, dataset1 <- subset(dataset1, Species %in% species), species = valid_species) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a FilteredData — teal_data_to_filtered_data","title":"Create a FilteredData — teal_data_to_filtered_data","text":"Create FilteredData object teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a FilteredData — teal_data_to_filtered_data","text":"","code":"teal_data_to_filtered_data(x, datanames = names(x))"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a FilteredData — teal_data_to_filtered_data","text":"x (teal_data) object datanames (character) vector data set names include; must subset names(x)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a FilteredData — teal_data_to_filtered_data","text":"FilteredData object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":null,"dir":"Reference","previous_headings":"","what":"teal_data utils — teal_data_utilities","title":"teal_data utils — teal_data_utilities","text":"teal need recreate teal_data object due two operations: need append filter-data code objects evaluated FilteredData want avoid double-evaluation. need subset teal_data datanames used module, shorten obtainable R-code","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal_data utils — teal_data_utilities","text":"","code":".append_evaluated_code(data, code) .append_modified_data(data, objects)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal_data utils — teal_data_utilities","text":"data (teal_data) code (character) code append object's code slot. objects (list) objects append object's environment.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal_data utils — teal_data_utilities","text":"modified teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal_data utils — teal_data_utilities","text":"Due recreation teal_data object done simply using public teal.code teal.data methods.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":null,"dir":"Reference","previous_headings":"","what":"Create teal_module and teal_modules objects — teal_modules","title":"Create teal_module and teal_modules objects — teal_modules","text":"Create nested tab structure embed modules teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"module( label = \"module\", server = function(id, data, ...) moduleServer(id, function(input, output, session) NULL), ui = function(id, ...) tags$p(paste0(\"This module has no UI (id: \", id, \" )\")), filters, datanames = \"all\", server_args = NULL, ui_args = NULL, transformers = list() ) modules(..., label = \"root\") # S3 method for class 'teal_module' format( x, indent = 0, is_last = FALSE, parent_prefix = \"\", what = c(\"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\"), ... ) # S3 method for class 'teal_modules' format(x, indent = 0, is_root = TRUE, is_last = FALSE, parent_prefix = \"\", ...) # S3 method for class 'teal_module' print(x, ...) # S3 method for class 'teal_modules' print(x, ...) set_datanames(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create teal_module and teal_modules objects — teal_modules","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server (function) shiny module following arguments: id - teal set proper shiny namespace module (see shiny::moduleServer()). input, output, session - (optional; recommended) provided, shiny::callModule() used call module. shiny 1.5.0, recommended way use shiny::moduleServer() instead require arguments. data (optional) provided, module called teal_data object (.e. list reactive (filtered) data specified filters argument) value argument. datasets (optional) provided, module called FilteredData object value argument. (See teal.slice::FilteredData). reporter (optional) provided, module called Reporter object value argument. (See teal.reporter::Reporter). filter_panel_api (optional) provided, module called FilterPanelAPI object value argument. (See teal.slice::FilterPanelAPI). ... (optional) provided, server_args elements passed module named argument .... ui (function) shiny UI module function following arguments: id - teal set proper shiny namespace module. ... (optional) provided, ui_args elements passed module named argument .... filters (character) Deprecated. Use datanames instead. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. server_args (named list) additional arguments passed server function. ui_args (named list) additional arguments passed UI function. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). ... modules(): (teal_module teal_modules) Objects wrap tab. format() print(): Arguments passed methods. x (teal_module teal_modules) Object format/print. indent (integer(1)) Indention level; nested element indented one level . is_last (logical(1)) Whether last item parent's children list. Affects tree branch character used (L- vs |-) parent_prefix (character(1)) prefix inherited parent nodes, used maintain tree structure nested levels (character) Specifies metadata display. Possible values: \"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\" is_root (logical(1)) Whether root node tree. used format.teal_modules(). Determines whether show \"TEAL ROOT\" header modules (teal_module teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() returns object class teal_module. modules() returns teal_modules object contains following fields: label: taken label argument. children: list containing objects passed .... List elements named label attribute converted valid shiny id.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() creates instance teal_module can placed teal application. modules() shapes structure application organizing teal_module within navigation panel. wraps teal_module teal_modules objects teal_modules object, results nested structure corresponding nested tabs final application. Note modules() label comes ..., must passed named argument, otherwise captured .... labels \"global_filters\" \"Report previewer\" reserved used mapping argument teal_slices() report previewer module reporter_previewer_module(), respectively.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"restricting-datasets-used-by-teal-module-","dir":"Reference","previous_headings":"","what":"Restricting datasets used by teal_module:","title":"Create teal_module and teal_modules objects — teal_modules","text":"datanames argument controls datasets used module’s server. datasets, passed via server's data argument, ones shown module's tab. datanames set \"\", datasets data object treated relevant. However, may include unnecessary datasets, : Proxy variables column modifications Temporary datasets used create final versions Connection objects exclude irrelevant datasets, use set_datanames() function change datanames \"\" specific names. Trying modify non-\"\" values set_datanames() result warning. Datasets names starting . ignored globally unless explicitly listed datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"datanames-with-transformers","dir":"Reference","previous_headings":"","what":"datanames with transformers","title":"Create teal_module and teal_modules objects — teal_modules","text":"transformers specified, datanames added module’s datanames, changes behavior follows: module(datanames) NULL transformers defined datanames, sidebar appear showing transformers' datasets, instead hidden. module(datanames) set specific values transformer datanames = \"\", module may receive extra datasets unnecessary","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"library(shiny) module_1 <- module( label = \"a module\", server = function(id, data) { moduleServer( id, module = function(input, output, session) { output$data <- renderDataTable(data()[[\"iris\"]]) } ) }, ui = function(id) { ns <- NS(id) tagList(dataTableOutput(ns(\"data\"))) }, datanames = \"all\" ) module_2 <- module( label = \"another module\", server = function(id) { moduleServer( id, module = function(input, output, session) { output$text <- renderText(\"Another Module\") } ) }, ui = function(id) { ns <- NS(id) tagList(textOutput(ns(\"text\"))) }, datanames = NULL ) modules <- modules( label = \"modules\", modules( label = \"nested modules\", module_1 ), module_2 ) app <- init( data = teal_data(iris = iris), modules = modules ) if (interactive()) { shinyApp(app$ui, app$server) } mod <- module( label = \"My Custom Module\", server = function(id, data, ...) {}, ui = function(id, ...) {}, datanames = c(\"ADSL\", \"ADTTE\"), transformers = list(), ui_args = list(a = 1, b = \"b\"), server_args = list(x = 5, y = list(p = 1)) ) cat(format(mod)) #> |- My Custom Module #> | |- Datasets : ADSL, ADTTE #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : a (numeric) #> | | b (character) #> | |- Server Arguments : x (numeric) #> | | y (list) #> | L- Transformers : custom_module <- function( label = \"label\", ui_args = NULL, server_args = NULL, datanames = \"all\", transformers = list(), bk = FALSE) { ans <- module( label, server = function(id, data, ...) {}, ui = function(id, ...) { }, datanames = datanames, transformers = transformers, ui_args = ui_args, server_args = server_args ) attr(ans, \"teal_bookmarkable\") <- bk ans } dummy_transformer <- teal_transform_module( label = \"Dummy Transform\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) plot_transformer <- teal_transform_module( label = \"Plot Settings\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) complete_modules <- modules( custom_module( label = \"Data Overview\", datanames = c(\"ADSL\", \"ADAE\", \"ADVS\"), ui_args = list( view_type = \"table\", page_size = 10, filters = c(\"ARM\", \"SEX\", \"RACE\") ), server_args = list( cache = TRUE, debounce = 1000 ), transformers = list(dummy_transformer), bk = TRUE ), modules( label = \"Nested 1\", custom_module( label = \"Interactive Plots\", datanames = c(\"ADSL\", \"ADVS\"), ui_args = list( plot_type = c(\"scatter\", \"box\", \"line\"), height = 600, width = 800, color_scheme = \"viridis\" ), server_args = list( render_type = \"svg\", cache_plots = TRUE ), transformers = list(dummy_transformer, plot_transformer), bk = TRUE ), modules( label = \"Nested 2\", custom_module( label = \"Summary Statistics\", datanames = \"ADSL\", ui_args = list( stats = c(\"mean\", \"median\", \"sd\", \"range\"), grouping = c(\"ARM\", \"SEX\") ) ), modules( label = \"Labeled nested modules\", custom_module( label = \"Subgroup Analysis\", datanames = c(\"ADSL\", \"ADAE\"), ui_args = list( subgroups = c(\"AGE\", \"SEX\", \"RACE\"), analysis_type = \"stratified\" ), bk = TRUE ) ), modules(custom_module(label = \"Subgroup Analysis in non-labled modules\")) ) ), custom_module(\"Non-nested module\") ) cat(format(complete_modules)) #> TEAL ROOT #> |- Data Overview #> | |- Datasets : ADSL, ADAE, ADVS #> | |- Properties: #> | | |- Bookmarkable : TRUE #> | | L- Reportable : FALSE #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- Datasets : ADSL, ADVS #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- Datasets : ADSL #> | | |- Properties: #> | | | |- Bookmarkable : FALSE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- Datasets : ADSL, ADAE #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- Datasets : all #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- Datasets : all #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : cat(format(complete_modules, what = c(\"ui_args\", \"server_args\", \"transformers\"))) #> TEAL ROOT #> |- Data Overview #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : # change the module's datanames set_datanames(module(datanames = \"all\"), \"a\") #> |- module #> | |- Datasets : a #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : # change modules' datanames set_datanames( modules( module(datanames = \"all\"), module(datanames = \"a\") ), \"b\" ) #> Warning: Not possible to modify datanames of the module module. set_datanames() can only change datanames if it was set to \"all\". #> TEAL ROOT #> |- module #> | |- Datasets : b #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- module #> |- Datasets : a #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers :"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter settings for teal applications — teal_slices","title":"Filter settings for teal applications — teal_slices","text":"Specify initial filter states filtering settings teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter settings for teal applications — teal_slices","text":"","code":"teal_slices( ..., exclude_varnames = NULL, include_varnames = NULL, count_type = NULL, allow_add = TRUE, module_specific = FALSE, mapping, app_id = NULL ) as.teal_slices(x) # S3 method for class 'teal_slices' c(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter settings for teal applications — teal_slices","text":"... number teal_slice objects. include_varnames, exclude_varnames (named lists character) list names match names data sets vector elements match variable names respective data sets; specify variables allowed filtered; see Details. count_type new feature. kindly share opinions teal.slice's GitHub repository. (character(1)) string specifying observations tallied filter states. Possible options: \"none\" (default) counts single FilterState show unfiltered number . \"\" counts single FilterState show number observation filtered unfiltered dataset. Note, issues reported using option MultiAssayExperiment. Please make sure adding new filters fail target platform deploying production. allow_add (logical(1)) logical flag specifying whether user able add new filters module_specific (logical(1)) optional, FALSE (default) one filter panel applied modules. filters shared modules. TRUE filter panel module-specific. Modules can different set filters specified - see mapping argument. mapping new feature. kindly share opinions teal's GitHub repository. (named list) specifies filters active modules app start. Elements contain character vector teal_slice ids (see teal.slice::teal_slice). Names list correspond teal_module label set module() function. ids listed \"global_filters active modules. missing, filters applied modules. empty list, filters available modules start inactive. module_specific FALSE, global_filters active start. app_id (character(1)) internal use , set manually. Added init teal_slices can matched app used. Used verifying snapshots uploaded file. See snapshot. x (list) lists convert teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter settings for teal applications — teal_slices","text":"teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter settings for teal applications — teal_slices","text":"Produces teal_slices object. teal_slice components specify filter states active app starts. Attributes (created named arguments) configure way app applies filters. See argument descriptions details.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Filter settings for teal applications — teal_slices","text":"","code":"filter <- teal_slices( teal_slice(dataname = \"iris\", varname = \"Species\", id = \"species\"), teal_slice(dataname = \"iris\", varname = \"Sepal.Length\", id = \"sepal_length\"), teal_slice( dataname = \"iris\", id = \"long_petals\", title = \"Long petals\", expr = \"Petal.Length > 5\" ), teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"mtcars_mpg\"), mapping = list( module1 = c(\"species\", \"sepal_length\"), module2 = c(\"mtcars_mpg\"), global_filters = \"long_petals\" ) ) app <- init( data = teal_data(iris = iris, mtcars = mtcars), modules = list( module(\"module1\"), module(\"module2\") ), filter = filter ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal transformers. — teal_transform_module","title":"Data module for teal transformers. — teal_transform_module","text":"Create teal_data_module object custom transformation data pre-processing passing data module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"teal_transform_module( ui = function(id) NULL, server = function(id, data) data, label = \"transform module\", datanames = character(0) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal transformers. — teal_transform_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id, data)) shiny module server function; takes id data argument, id module id data reactive teal_data input. server function must return reactive expression containing teal_data object. server function definition use eventReactive may lead unexpected behavior. See vignettes(\"data-transform--shiny-module\") information. label (character(1)) Label module. datanames (character) Names datasets relevant module evaluate. set character(0) module receive modules() datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal transformers. — teal_transform_module","text":"teal_transform_module creates teal_data_module object transform data teal application. transformation happens data passed filtering activity teal. transformed data sent server teal_module(). See vignette vignette(\"data-transform--shiny-module\", package = \"teal\") details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", datanames = \"iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Subset n rows\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_app_title_tag.html","id":null,"dir":"Reference","previous_headings":"","what":"Function for validating the title parameter of teal::init — validate_app_title_tag","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"Checks input title teal::init create valid title favicon tag.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_app_title_tag.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"","code":"validate_app_title_tag(shiny_tag)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_app_title_tag.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"shiny_tag (shiny.tag) Object validate valid title.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"validate_has_data( x, min_nrow = NULL, complete = FALSE, allow_inf = TRUE, msg = NULL )"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"x (data.frame) min_nrow (numeric(1)) Minimum allowed number rows x. complete (logical(1)) Flag specifying whether check complete cases. Defaults FALSE. allow_inf (logical(1)) Flag specifying whether allow infinite values. Defaults TRUE. msg (character(1)) Additional message display alongside default message.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"library(teal) ui <- fluidPage( sliderInput(\"len\", \"Max Length of Sepal\", min = 4.3, max = 7.9, value = 5 ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_df <- iris[iris$Sepal.Length <= input$len, ] validate_has_data( iris_df, min_nrow = 10, complete = FALSE, msg = \"Please adjust Max Length of Sepal\" ) hist(iris_df$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"validate_has_elements(x, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"x vector msg message display","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\"), each = 15) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"arm_summary\") ) server <- function(input, output) { output$arm_summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_has_elements(sample_1, \"No subjects in strata1.\") validate_has_elements(sample_2, \"No subjects in strata2.\") paste0( \"Number of samples in: strata1=\", length(sample_1), \" comparions strata2=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"validate_has_variable(data, varname, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that dataset contains specific variable — validate_has_variable","text":"data (data.frame) varname (character(1)) name variable check data msg (character(1)) message display data include varname","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that dataset contains specific variable — validate_has_variable","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20) ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_has_variable(data, input$var) paste0(\"Selected treatment variables: \", paste(input$var, collapse = \", \")) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector includes all expected values — validate_in","text":"","code":"validate_in(x, choices, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector includes all expected values — validate_in","text":"x Vector values test. choices Vector test . msg (character(1)) Error message display elements x elements choices.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector includes all expected values — validate_in","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector includes all expected values — validate_in","text":"","code":"ui <- fluidPage( selectInput( \"species\", \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\", \"unknown species\"), selected = \"setosa\", multiple = FALSE ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderPrint({ validate_in(input$species, iris$Species, \"Species does not exist.\") nrow(iris[iris$Species == input$species, ]) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":null,"dir":"Reference","previous_headings":"","what":"Send input validation messages to output — validate_inputs","title":"Send input validation messages to output — validate_inputs","text":"Captures messages InputValidator objects collates one message passed validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Send input validation messages to output — validate_inputs","text":"","code":"validate_inputs(..., header = \"Some inputs require attention\")"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Send input validation messages to output — validate_inputs","text":"... either number InputValidator objects optionally named, possibly nested list InputValidator objects, see Details header (character(1)) generic validation message; set NULL omit","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Send input validation messages to output — validate_inputs","text":"Returns NULL final validation call passes shiny.silent.error fails.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Send input validation messages to output — validate_inputs","text":"shiny::validate used withhold rendering output element certain conditions met print validation message place output element. shinyvalidate::InputValidator allows validate input elements display specific messages respective input widgets. validate_inputs provides hybrid solution. Given InputValidator object, messages corresponding inputs fail validation extracted placed one validation message passed validate/need call. way input validator messages repeated output. ... argument accepts number InputValidator objects nested list objects. validators passed directly, messages printed together one (optional) header message specified header. list passed, messages grouped validator. list's names used headers respective message groups. neither nested list elements named, header message taken header.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Send input validation messages to output — validate_inputs","text":"","code":"library(shiny) library(shinyvalidate) ui <- fluidPage( selectInput(\"method\", \"validation method\", c(\"sequential\", \"combined\", \"grouped\")), sidebarLayout( sidebarPanel( selectInput(\"letter\", \"select a letter:\", c(letters[1:3], LETTERS[4:6])), selectInput(\"number\", \"select a number:\", 1:6), tags$br(), selectInput(\"color\", \"select a color:\", c(\"black\", \"indianred2\", \"springgreen2\", \"cornflowerblue\"), multiple = TRUE ), sliderInput(\"size\", \"select point size:\", min = 0.1, max = 4, value = 0.25 ) ), mainPanel(plotOutput(\"plot\")) ) ) server <- function(input, output) { # set up input validation iv <- InputValidator$new() iv$add_rule(\"letter\", sv_in_set(LETTERS, \"choose a capital letter\")) iv$add_rule(\"number\", function(x) { if (as.integer(x) %% 2L == 1L) \"choose an even number\" }) iv$enable() # more input validation iv_par <- InputValidator$new() iv_par$add_rule(\"color\", sv_required(message = \"choose a color\")) iv_par$add_rule(\"color\", function(x) { if (length(x) > 1L) \"choose only one color\" }) iv_par$add_rule( \"size\", sv_between( left = 0.5, right = 3, message_fmt = \"choose a value between {left} and {right}\" ) ) iv_par$enable() output$plot <- renderPlot({ # validate output switch(input[[\"method\"]], \"sequential\" = { validate_inputs(iv) validate_inputs(iv_par, header = \"Set proper graphical parameters\") }, \"combined\" = validate_inputs(iv, iv_par), \"grouped\" = validate_inputs(list( \"Some inputs require attention\" = iv, \"Set proper graphical parameters\" = iv_par )) ) plot(faithful$eruptions ~ faithful$waiting, las = 1, pch = 16, col = input[[\"color\"]], cex = input[[\"size\"]] ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"validate_n_levels(x, min_levels = 1, max_levels = 12, var_name)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that variables has expected number of levels — validate_n_levels","text":"x variable name. x factor, unique values treated levels. min_levels cutoff minimum number levels x max_levels cutoff maximum number levels x var_name name variable validated use validation message","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that variables has expected number of levels — validate_n_levels","text":"number levels x less min_levels greater max_levels validation fail. function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20), three = rep(c(\"a\", \"b\", \"c\"), length.out = 20), four = rep(c(\"a\", \"b\", \"c\", \"d\"), length.out = 20), stringsAsFactors = TRUE ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_n_levels(data[[input$var]], min_levels = 2, max_levels = 15, var_name = input$var) paste0( \"Levels of selected treatment variable: \", paste(levels(data[[input$var]]), collapse = \", \" ) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"validate_no_intersection(x, y, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates no intersection between two vectors — validate_no_intersection","text":"x vector y vector msg (character(1)) message display x y intersect","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates no intersection between two vectors — validate_no_intersection","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\", \"C\"), each = 10) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_no_intersection( sample_1, sample_2, \"subjects within strata1 and strata2 cannot overlap\" ) paste0( \"Number of subject in: reference treatment=\", length(sample_1), \" comparions treatment=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"validate_one_row_per_id(x, key = c(\"USUBJID\", \"STUDYID\"))"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"x (data.frame) key (character) Vector ID variables x identify unique records.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"iris$id <- rep(1:50, times = 3) ui <- fluidPage( selectInput( inputId = \"species\", label = \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\"), selected = \"setosa\", multiple = TRUE ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_f <- iris[iris$Species %in% input$species, ] validate_one_row_per_id(iris_f, key = c(\"id\")) hist(iris_f$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-15-2-9083","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.2.9083","text":"Possible call ui_teal srv_teal directly application delivering data argument reactive returning teal_data object. #669 Introduced teal_transform_module provide way interactively modify data delivered teal_module’s server. #1228 Introduced new argument = FALSE teal_data_module possibly reload data run time. Possibility download lockfile restore app session reproducibility. #479 Introduced function set_datanames() change datanames teal_module. Datasets name starts . ignored module’s datanames set \"\".","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-15-2-9083","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.2.9083","text":"Setting datanames() data passed teal application longer effect. order change teal_module’s datanames one modify module$datanames. landing_popup_module() needs passed landing_popup argument init instead passed module modules argument init. teal longer re-export %>%. Please load library(magrittr) instead use |> base.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancement-0-15-2-9083","dir":"Changelog","previous_headings":"","what":"Enhancement","title":"teal 0.15.2.9083","text":"Enhanced system data validation display error messages. Easier way call javascript events setting $(document).ready(function() { ... }). #1114 Provided progress bar modules loading data filtering teal app startup. Filter mapping display separate icon tab. Environment data passed teal_module’s server consists unfiltered datasets contained .raw_data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0152","dir":"Changelog","previous_headings":"","what":"teal 0.15.2","title":"teal 0.15.2","text":"CRAN release: 2024-03-07","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-15-2","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.2","text":"Fixed bug handling datanames modules crashed module-specific applications filtering child datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0151","dir":"Changelog","previous_headings":"","what":"teal 0.15.1","title":"teal 0.15.1","text":"CRAN release: 2024-02-22","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-15-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.1","text":"Fixed bug stopped module_specific feature teal module specified datanames length 1.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-15-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.1","text":"Updated links vignettes","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0150","dir":"Changelog","previous_headings":"","what":"teal 0.15.0","title":"teal 0.15.0","text":"CRAN release: 2024-02-08","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-15-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.0","text":"Added landing_popup_module function creates module display popup app starts. popup block access app dismissed. Filter state snapshots can now uploaded file. See ?snapshot. Added as_tdata function facilitate migration modules new teal_data class. Added build_app_title function facilitate adding favicons app title.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-15-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.0","text":"data argument init now accepts teal_data teal_data_module. tdata deprecated replaced teal_data. Support tdata passed data argument module(server) removed next release. module(ui) argument longer accepts data datasets arguments. data dependent logic set server function. module(server) argument deprecated datasets argument. teal_modules’ server functions accept data (teal_data) instead. Changed order formal arguments init. filter now comes directly modules, title.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-15-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.0","text":"Enhanced module validation checks won’t throw messages data argument unnecessarily. Added argument teal_slices made modifications init enable tagging teal_slices app id safely upload snapshots disk. FilteredData longer stores pre-processing code specific slots. Code now attached attribute. Adjusted appropriately.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-15-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.0","text":"Removed Report previewer module mapping matrix display filter manager. Specified minimal version package dependencies.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-14-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.14.0","text":"Enabled module specific filter panel. See module_specific teal::teal_slices documentation. Enabled capturing resetting application filter state snapshots. See ?snapshot. Enabled reporter_previewer_module customize default values srv_args. Enabled passing reporter_previewer_module list modules override default one.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-14-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.14.0","text":"Specifying filter argument teal::init requires teal_slices object now. Details documentation teal::init. Soft deprecated filters argument module replaced datanames. Details documentation teal::module","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-14-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.14.0","text":"Removed scda package dependency examples. Updated header tag style enhance element containment.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-13-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.13.0","text":"use datasets argument modules deprecated removed future release. Please use data argument instead. data type tdata; see “Creating custom modules” vignettes function documentation teal::new_tdata details. Due deprecation chunks teal.code, teal framework now uses replacement (qenv) instead. documentation teal updated reflect custom modules written chunks updated use qenv. Due deprecation chunks teal.code, get_rcode, get_rcode_srv, get_rcode_ui removed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-13-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.13.0","text":"Added validate_inputs function transfers input validation messages app output. modules argument init accepts teal_module type object. need wrap single module modules() list(). Updated module_nested_tabs active modules calculated teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-13-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.13.0","text":"Updated examples use scda.2022. Added R session information link footer teal applications. Added data hashing step using rlang instead digest package calculate hash (moved teal.data teal.slice). now explicit hashing check reproducible code output. Removed deprecated functions: root_modules, default_filter, bookmarkableShinyApp, well deprecated logging mechanism, including functions log_app_usage .log. Updated “Teal Bootstrap Themes” vignette provide details customizing teal app bslib::run_with_themer. Removed outdated diagram srv_nested_tabs documentation. Changed default values header footer arguments init empty text.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-12-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.12.0","text":"Added support custom bslib bootstrap themes teal::init apps, please read new teal-bs-themes vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-12-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.12.0","text":"Added option choose variables can filtered filter panel using filterable attributes per-dataset lists filter argument init. Updated teal_module data argument receives list reactive filter data \"code\" \"join_keys\" attributes. Updated teal_module filter_panel_api argument receives FilterPanelAPI object. Updated internals module_teal reflect changes teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-12-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.12.0","text":"Updated teal_module longer receive datasets object ... argument. order use datasets teal_module please specify datasets explicitly. Deprecated merge_expression argument get_rcode_srv function removed get_rcode function. Deprecated session argument get_rcode function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-12-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.12.0","text":"Enhanced burger button disabled filter panel used.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-11-1","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.11.1","text":"Added new function reporter_previewer_module wrap teal.reporter package previewer functionality teal module. Updated teal support modules include reporting. module supports reporting included reporter_previewer_module included. Added default arguments module() server argument now function second argument can ... datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-11-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.1","text":"Deprecated bookmarkableShinyApp. future releases teal framework stop supporting shiny bookmarking (officially supported); may officially supported future. Note filter panel teal.slice retains ability save restore state used standalone shiny app bookmarking.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-11-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.1","text":"Added template pkgdown configuration. Removed unneeded shinytest app tests. Updated package authors. Added package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0110","dir":"Changelog","previous_headings":"","what":"teal 0.11.0","title":"teal 0.11.0","text":"teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.transform: standardizes extracting merging data. teal.logger: standardizes logging within teal framework. teal package contains code create apps (teal::init), create module (teal::module) group modules app (teal::modules). teal depends teal.transform teal.data contain functions teal app creators likely need. package teal imports therefore teal module creators either fully specify functions packages required import custom packages library(teal) load .","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-11-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.11.0","text":"simple new teal module named example_module included package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-11-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.0","text":"teal package split multiple smaller packages, see . Deprecated root_modules function, users use modules directly inside init. Due deprecation root_modules label argument modules must explicitly named. example modules(\"lab\", mod1, mod2) replaced modules(label = \"lab\", mod1, mod2).","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-11-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.0","text":"Minor changes internals teal: main module panel now fixed shiny name root active tab named active_tab Active_tab. MultiAssayExperiment now suggested packages, required. Objects dependent MultiAssayExperiment changed lazy-load now suggested package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-11-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.11.0","text":"Showing R Code longer shows reproducibility warning message reproducibility check passed.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-10-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.10.1","text":"Changed HTML identifiers teal modules - now nested module receives shiny namespace. Deprecated functions related connectors moved separate packages. Removed raw_dataset, raw_dataset_connector, named_dataset, named_dataset_file, named_dataset_connector, relational_dataset, relational_dataset_file, relational_dataset_connector, key, as_cdisc, as_cdisc_relational. Removed rcd_connection rcd_data; scda_dataset_connectors can passed cdisc_data teal_data directly. Replaced rcd_dataset_connector rcd_cdisc_dataset_connector scda_dataset_connector scda_cdisc_dataset_connector respectively. Renamed teal_show_js_log option teal.show_js_log match options naming convention. Removed %is_in% stop_shiny internal utility functions.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"logging-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Logging","title":"teal 0.10.1","text":"Added support logging using logger package. Added new function register_logger, registers logger given namespace. Added trace info levels log messages teal framework. Added pid shiny session token footnote app developers can identify logs apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"other-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Other","title":"teal 0.10.1","text":"Added print methods DatasetConnector, RelationalData, RelationalDataconnector JoinKeys classes added input validation implementation print method already Dataset object. Added public facing constructor functions CDISCDataConnector, RelationalDataConnector, DataConnection classes. Modified data_extract_spec allow filter select parameters NULL, results data_extract_ui acting filter_spec variables possible choices supplied filter argument select_spec multiple parameter set TRUE supplied select argument. Added support full screen module filters argument equal NULL. Added support shiny::moduleServer passed server parameter teal::module. Added teal.threshold_slider_vs_checkboxgroup R option: categorical variable number unique values, filter panel uses drop-select input instead checkbox group. Extended FilteredData API allow managing filter states programmatically UI teal application. Hid buttons remove filters datasets dataset active filters. Updated init accept RelationalData, data.frame, MultiAssayExperiment, Dataset, DatasetConnector, list function returning named list data input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-10-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.1","text":"choices_selected now correctly removes duplicates array passed choices parameter. Fixed call returned FilterState case using MultiAssayExperiment::subsetByColData. Now single condition variable containing NA values !.na(var) & var == . Fixed data loading DatasetConnector dependent Dataset DatasetConnector objects. Fixed restoring bookmarked filter state teal application. Refactored module_nested_tabs fix issue filter panel reacting input change nested module. updateOptionalSelectInput longer sets input NULL logical value passed selected. Fixed setting JoinKeys key name two Dataset object differs. Fixed printing JavaScript console logs R console teal.show_js_log = TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-10-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.1","text":"Soft-deprecate mae_dataset() favor general dataset() constructor. Added vignette describing modifications teal applications users can apply using R options. Added default values label argument select_spec filter_spec. Added validation FilteredDataset::get_data accept logical input . Changed references outdated functions teal.devel documentation. Introduced Teal prefix public R6 classes avoid name collisions packages. Removed dependency utils.nest replaced functionality teal equivalents checkmate package base R. Replaced old shiny server functions DataConnection, RelationalDataConnector, DatasetConnector, RelationalData shiny::moduleServer equivalents. Running teal application via ui_teal_with_splash srv_teal_with_splash now longer recommended doesn’t support new features (e.g. logging, bookmarking). Use init instead. Updated R version requirement >= 4.0. Updated “filter panel collapse” icon remove warnings using shiny version >= 1.7. Removed non-exported, debugging modules. Updated footer tag style less visible.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-10-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.10.0","text":"Allow passing MultiAssayExperiment teal::init using mae_dataset function connectors. Refactored filter panel use MultiAssayExperiment objects. Filters can set subject level (colData MAE object) experiment level (colData rowData assay). Added cdse_dataset_connector create delayed data objects CDSE. Added datasetdb_dataset_connector create delayed data objects DataSetDB. Added ricepass_connection create delayed data objects entimICE via ricepass. Simplified setting initial filter state without need specify “choices” “range” named list element depending variable class. Dataset type determines appearance functionality related filters filters summary. Datasets passed (reference) DDL FilteredData skipping extracting data attributes. Redesigned variable filter labels “Active Filter Variables” panel. Fully testable server functions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-10-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.0","text":"Fixed bug caused calling mutate_dataset multiple times DatasetConnector Dataset object. Fixed bug caused output get_code function reproduce raw data set. Changed filter_spec allow variable selection upon app initialization, first possible value previously selected.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-10-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.10.0","text":"modules parameter teal::init function can also receive list except root_modules function call. Added split merge methods JoinKeys object. Added all_choices() possible argument selected parameter filter_spec, select_spec choices_selected indicating choices selected. append method CodeClass object modified print warning message argument result code added duplicated. Implemented delayed functionality mutate method Dataset DatasetConnector objects. Modified teal_data return CDISCData object whenever arguments type CDISCData object. Updated filters show levels logical variable TRUE/FALSE even one missing original array.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-10-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.0","text":"Updated LICENCE README new package references. Added method get_hash Dataset class returning MD5 hash object stored inside Dataset object. Replaced random.cdisc.data scda examples tests. Implemented functionality store JoinKeys Dataset DatasetConnector classes. Added error_on_lintr: TRUE .lintr pipe operator %>% now exported downstream code packages can use . Removed hyperlinks rice package documentation.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-5","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.5","text":"Added informational stop message using mutate_data RelationalDataConnector. Modified as_cdisc behave similarly cdisc_dataset called Dataset object. Changed displayed format data name column name data_extract_spec UI elements. now compressed . don’t change runtime app. Added ADSAFTTE list recognized ADaM dataset names. Added another example data_extract_spec’s doc string showcasing app users can choose variable used filtering encoding panel. Added CSS styling tool tips teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-9-5","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.5","text":"Fixed edge case error creating filter variable missing values crashed app. Fixed bug crashes app whenever Date datetime column selected filter_spec.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-4","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.4","text":"Released snowflake connection connectors. Changed ordering datasets intuitive (topologically first CDISC datasets according input datasets order). closing teal app (ending user shiny session), DataConnections now try close connections. Added ADHY keys configuration file. Extended filter_spec function: parameter choices longer mandatory (function take possible choices default) vars parameter additionally accepts choices_selected allows change variables filtering using UI elements encoding panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-9-4","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.4","text":"Cleaned imports package. Modified value_choices function handle edge case \"NA\" NA values exist character column choices derived . Fixed issue cloning Callable class.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-9-3","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.3","text":"Support data-standard independent input filtering. includes refactor data dataset structures together refactor FilteredData class. New JoinKeys class (join_keys() constructors join_key() constructor elements) store joining key columns datasets. Refactored basic dataset() constructor, added cdisc_dataset() constructor as_cdisc() conversion function. Soft-deprecate removed class constructors obsolete functions (e.g. keys()). Added get_keys() set_keys() functions extract manipulate datasets primary keys respectively. Unexported filtered_data_new, filtered_data_set filtered_data_set_filters.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-9-3","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.3","text":"Duplicated lines code passed teal::cdisc_dataset teal::RelationalDataset constructors now shown getting code teal::cdisc_data objects teal::RelationalData objects. Added ability press “Enter” key without set focus Submit button delayed data loading. Allow variable_choices use datasets missing labels. Fixed bug ignores input NULL selected argument select_spec function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-3","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.3","text":"Added button remove active filters Filter Panel.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-9-2","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.2","text":"Added python_dataset_connector create delayed data objects python scripts directly python code. NOTE: python_dataset_connector yet ready deployed RSConnect contain numpy pandas, Python libraries used python_dataset_connector. Added support filtering Date Datetime variables Filter Panel. Added buttons date datetime filter widgets reset value original. Added new function check_key_duplicates, creates short summary rows duplicated primary key (row numbers number duplicates)","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-2","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.2","text":"Fixed lack labels character factor variables Filter Panel. variables now displayed module_filter_panel, types numeric, logical, factor, character Date Fixed mutate_data accept whole scope objects vars. Clarified teal::init function documentation state custom CSS loading code htmltools::htmlDependency included header argument rather inside UI arguments modules. Enabled empty select field inside data_extract_spec. Added new argument drop_keys filter_spec decide whether drop keep keys columns single filter columns. Added new optional argument keys variable_choices. keys specifies names variables, new key icon shown next variable drop menus left-hand side encoding panels instead icon appropriate original R variable type. variable_choices now also works RelationalDataset RelationalDatasetConnector objects.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-9-2","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.9.2","text":"Removed include_factors option get_class_colnames RawDataset.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-091","dir":"Changelog","previous_headings":"","what":"teal 0.9.1","title":"teal 0.9.1","text":"Adds method resolve nested lists containing delayed data objects, can used arm_ref_comp objects. Nested tabs module now better alignment filter panel page. Allow width argument optionalSelectInput. Added lifecycle badges exported functions. Added new code_dataset_connector code_cdisc_dataset_connector functions enable creation new delayed data objects given string code. Added new functions csv_dataset_connector csv_cdisc_dataset_connector. Updated set_ui_input method RawDatasetConnector NamedDatasetConnector handle user defined shiny inputs. Include Keep Inf checkbox numerical filter items. Keep NA Keep Inf checkbox doesn’t appear missing infinite values. Replace existing RelationalData class abstract class RelationalDataCollection rename RelationalDataList class RelationalData. data argument teal::init now always RelationalData object. Added fun_cdisc_dataset_connector enable providing custom function returning dataset. Removed code script arguments as_relational wrapper. intended done mutate_dataset functionality. filer argument init added validation step ensure compatibility rest app. Variables inherited ADSL specified ADSL dataset. Fixes issue connection close code present get_code results. Fixes issue occasional incorrect ordering bar charts filter panel. informative error displayed pull_fun DataConnection produces error.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-090","dir":"Changelog","previous_headings":"","what":"teal 0.9.0","title":"teal 0.9.0","text":"cdisc_dataset dataset now return R6 class objects (RelationalDataset). new teal_data function include datasets connectors teal application. cdisc_data function include datasets connectors teal application check argument still used consistency tests performed. get_raw_data can used derive raw data R6 objects e.g. (RelationalDataset). RawDatasetConnector, NamedDatasetConnector RelationalDatasetConnector execute custom function call order get data connection. CodeClass manage reproducibility data relationships datasets. directly exposed public interface. mutate_dataset allows modify dataset connector via code argument R script. mutate_data allows change dataset RelationalData, RelationalDataConnector RelationalDataList. New wrapper functions manipulate RelationalDatasetConnector RelationalDataset get_dataset, load_dataset, as_relational. New wrapper functions manipulate RelationalDataConnector, RelationalData RelationalDataList get_datasets, load_datasets. choices_labeled, filter_spec, select_spec, data_extract_spec, value_choices, variable_choices S3 class applied data.frame also delayed data. can longer modify app$datasets, must instead use argument filter init function. New modules created create module nested teal modules, another one adds right filter pane tab. teal::init function stays unchanged. teal::init function now returns UI function optional id argument. allows embed applications. split view two teal applications side--side one example shown vignette. teal::init turned wrapper function around module_teal_with_splash.R developers want embed teal shiny module directly work functions (ui_teal_with_splash srv_teal_with_splash) instead teal::init. teal::init function now title parameter set title browser window. Missing data NA now explicitly addressed filter panel: NAs excluded default checkbox include added. Statistics data visually depicted terms histograms bar charts overlayed onto shiny input elements. Added buttons remove filters applied dataset. Restored functionality hide filter panel module constructed filters = NULL. Moved helper functions utils.nest removed unused functions set_labels_df get_labels_df. optionalSelectInput now allows grouped choices.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"refactor-of-filtereddata-for-developers-0-9-0","dir":"Changelog","previous_headings":"","what":"Refactor of FilteredData (for developers)","title":"teal 0.9.0","text":"FilteredData now fully reactive. Now filtered data lazy evaluated per need. opens door bookmarking teal apps (bookmarking currently works right filtering panel, make feature sophisticated future release, module must reviewed adapted contains reactiveValues). Datasets materialized connectors provided FilteredData set_datasets_data function located init_datasets.R file. Renamed get_dataset() method get_data(). Renamed get_filter_call() method get_filter_expr(); returns expression rather list. Removed argument isolate get_data() method similar methods. must isolate needed. want temporarily deactivate shiny errors due missing errors, can set options(shiny.suppressMissingContextError = TRUE). general, avoid isolate breaks reactivity. added development module add several filters , e.g. safety filters. evaluated converted proper module made available end-users.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-085","dir":"Changelog","previous_headings":"","what":"teal 0.8.5","title":"teal 0.8.5","text":"UI bug fix hide filter elements used datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-084","dir":"Changelog","previous_headings":"","what":"teal 0.8.4","title":"teal 0.8.4","text":"Progress bar UI creation delayed loading module. Change output keys function keys object. Delayed version choices_selected. Fix error choices_selected selected choices. Fix pickerInput display column name label ’s missing.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-083","dir":"Changelog","previous_headings":"","what":"teal 0.8.3","title":"teal 0.8.3","text":"Enable teal app initialize without data. data loaded within teal app. New classes (DatasetConnector, DataConnector) connect various data sources, including: * connector rice API - rice_data rice_dataset_connector * connector RDS files - rds_data rds_dataset_connector Message appears bottom right shiny app shiny busy update views. Remove labels argument cdisc_data function. Labels now already present data passed cdisc_data function. can achieved using var_relabel function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-082","dir":"Changelog","previous_headings":"","what":"teal 0.8.2","title":"teal 0.8.2","text":"Fixed several BUGS optionalSelectInput improved inputs look. Added get_data_labels function FilteredData class. Improved sep passing within data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-081","dir":"Changelog","previous_headings":"","what":"teal 0.8.1","title":"teal 0.8.1","text":"Refactor choices_labeled fix bug showing column name data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-080","dir":"Changelog","previous_headings":"","what":"teal 0.8.0","title":"teal 0.8.0","text":"Added cdisc_dataset (general dataset) functions properly handle dataset keys merging. Possibility load custom .css .js files. Renamed columns_spec select_spec. Show number observations filter panel. Add labeling functions variable_choices value_choices.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-070","dir":"Changelog","previous_headings":"","what":"teal 0.7.0","title":"teal 0.7.0","text":"Added functions cdisc_data get_code deal preprocessing moving step towards data standard independent teal. Moved teal.utils functions teal: log_app_usage, stop_shiny. Added *_spec functions. Improvements usage PickerInput SelectInput.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-060","dir":"Changelog","previous_headings":"","what":"teal 0.6.0","title":"teal 0.6.0","text":"Removed deprecated functions tab*. Removed data generation functions including generate_sample_data. Incorporate shinyjs package. Added “Copy R code clipboard” button.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-005","dir":"Changelog","previous_headings":"","what":"teal 0.0.5","title":"teal 0.0.5","text":"Added limit data_table scrolling, preventing overlap UI elements. Boolean filtering.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-004","dir":"Changelog","previous_headings":"","what":"teal 0.0.4","title":"teal 0.0.4","text":"Bug fix teal crashes filter variable gets added many decimal places.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-003","dir":"Changelog","previous_headings":"","what":"teal 0.0.3","title":"teal 0.0.3","text":"Note version 0.0.3 backwards compatible. Reading changes studying example app , however, clarify changes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-0-3","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.0.3","text":"tm_scatterplot module. tm_table module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"changes-0-0-3","dir":"Changelog","previous_headings":"","what":"Changes","title":"teal 0.0.3","text":"tabs arguments renamed modules. tab_item function now called module. tab_items function now called modules. tabs function removed. variable_browser_item now called tm_variable_browser. data_table_item now called tm_data_table. datasets argument automatically added server functions specified module. Hence teal_datasets removed server_args element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-002","dir":"Changelog","previous_headings":"","what":"teal 0.0.2","title":"teal 0.0.2","text":"New ‘01_getting_started’ vignette. Datanames FilteredData now case sensitive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-001","dir":"Changelog","previous_headings":"","what":"teal 0.0.1","title":"teal 0.0.1","text":"March 28, 2016 - Initial Release.","code":""}]
+[{"path":[]},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement [INSERT CONTACT METHOD]. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contribution Guidelines","title":"Contribution Guidelines","text":"🙏 Thank taking time contribute! input deeply valued, whether issue, pull request, even feedback, regardless size, content scope.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"table-of-contents","dir":"","previous_headings":"","what":"Table of contents","title":"Contribution Guidelines","text":"👶 Getting started 📔 Code Conduct 🗃 License 📜 Issues 🚩 Pull requests 💻 Coding guidelines 🏆 Recognition model ❓ Questions","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"getting-started","dir":"","previous_headings":"","what":"Getting started","title":"Contribution Guidelines","text":"Please refer project documentation brief introduction. Please also see articles within project documentation additional information.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contribution Guidelines","text":"Code Conduct governs project. Participants contributors expected follow rules outlined therein.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Contribution Guidelines","text":"contributions covered project’s license.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"Contribution Guidelines","text":"use GitHub track issues, feature requests, bugs. submitting new issue, please check issue already reported. issue already exists, please upvote existing issue 👍. new feature requests, please elaborate context benefit feature users, developers, relevant personas.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"github-flow","dir":"","previous_headings":"Pull requests","what":"GitHub Flow","title":"Contribution Guidelines","text":"repository uses GitHub Flow model collaboration. submit pull request: Create branch Please see branch naming convention . don’t write access repository, please fork . Make changes Make sure code passes checks imposed GitHub Actions well documented well tested unit tests sufficiently covering changes introduced Create pull request (PR) pull request description, please link relevant issue (), provide detailed description change, include assumptions. Address review comments, Post approval Merge PR write access. Otherwise, reviewer merge PR behalf. Pat back Congratulations! 🎉 now official contributor project! grateful contribution.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"branch-naming-convention","dir":"","previous_headings":"Pull requests","what":"Branch naming convention","title":"Contribution Guidelines","text":"Suppose changes related current issue current project; please name branch follows: _. Please use underscore (_) delimiter word separation. example, 420_fix_ui_bug suitable branch name change resolving UI-related bug reported issue number 420 current project. change affects multiple repositories, please name branches follows: __. example, 69_awesomeproject_fix_spelling_error reference issue 69 reported project awesomeproject aims resolve one spelling errors multiple (likely related) repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"monorepo-and-stageddependencies","dir":"","previous_headings":"Pull requests","what":"monorepo and staged.dependencies","title":"Contribution Guidelines","text":"Sometimes might need change upstream dependent package(s) able submit meaningful change. using staged.dependencies functionality simulate monorepo behavior. dependency configuration already specified project’s staged_dependencies.yaml file. need name feature branches appropriately. exception branch naming convention described . Please refer staged.dependencies package documentation details.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"coding-guidelines","dir":"","previous_headings":"","what":"Coding guidelines","title":"Contribution Guidelines","text":"repository follows unified processes standards adopted maintainers ensure software development carried consistently within teams cohesively across repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"style-guide","dir":"","previous_headings":"Coding guidelines","what":"Style guide","title":"Contribution Guidelines","text":"repository follows standard tidyverse style guide uses lintr lint checks. Customized lint configurations available repository’s .lintr file.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"dependency-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency management","title":"Contribution Guidelines","text":"Lightweight right weight. repository follows tinyverse recommedations limiting dependencies minimum.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"dependency-version-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency version management","title":"Contribution Guidelines","text":"code compatible (!) historical versions given dependenct package, required specify minimal version DESCRIPTION file. particular: development version requires (imports) development version another package - required put abc (>= 1.2.3.9000).","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"r--package-versions","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"R & package versions","title":"Contribution Guidelines","text":"continuously test packages newest R version along recent dependencies CRAN BioConductor. recommend working environment also set way. can find details R version packages used R CMD check GitHub Action execution log - step prints R sessionInfo(). discover bugs older R versions older set dependencies, please create relevant bug reports.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"pre-commit","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"pre-commit","title":"Contribution Guidelines","text":"highly recommend use pre-commit tool combined R hooks pre-commit execute checks committing pushing changes. Pre-commit hooks already available repository’s .pre-commit-config.yaml file.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"recognition-model","dir":"","previous_headings":"","what":"Recognition model","title":"Contribution Guidelines","text":"mentioned previously, contributions deeply valued appreciated. contribution data available part repository insights, recognize significant contribution hence add contributor package authors list, following rules enforced: Minimum 5% lines code authored* (determined git blame query) top 5 contributors terms number commits lines added lines removed* *Excluding auto-generated code, including limited roxygen comments renv.lock files. package maintainer also reserves right adjust criteria recognize contributions.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"questions","dir":"","previous_headings":"","what":"Questions","title":"Contribution Guidelines","text":"questions regarding contribution guidelines, please contact package/repository maintainer.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/SECURITY.html","id":"reporting-security-issues","dir":"","previous_headings":"","what":"Reporting Security Issues","title":"Security Policy","text":"believe found security vulnerability repositories organization, please report us coordinated disclosure. Please report security vulnerabilities public GitHub issues, discussions, pull requests. Instead, please send email vulnerability.management[@]roche.com. Please include much information listed can help us better understand resolve issue: type issue (e.g., buffer overflow, SQL injection, cross-site scripting) Full paths source file(s) related manifestation issue location affected source code (tag/branch/commit direct URL) special configuration required reproduce issue Step--step instructions reproduce issue Proof--concept exploit code (possible) Impact issue, including attacker might exploit issue information help us triage report quickly.","code":""},{"path":"https://insightsengineering.github.io/teal/SECURITY.html","id":"data-security-standards-dss","dir":"","previous_headings":"","what":"Data Security Standards (DSS)","title":"Security Policy","text":"Please make sure reporting issues form bug, feature, pull request, sensitive information PII, PHI, PCI completely removed text attachments, including pictures videos.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Adding Support for Reporting to Custom Modules","text":"teal package offers integrated reporting feature utilizing teal.reporter package. comprehensive explanation reporting functionality , please refer documentation therein. article intended module developers aims provide guidance enhancing custom teal module automatic reporting feature. enhancement enables users incorporate snapshots module outputs report can reviewed another module automatically provided teal. Thus app user can interact report. responsibilities module developer include: Adding support reporting module. Specifying outputs constitute snapshot module. entire life cycle objects involved creating report configuring module preview report handled teal.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"custom-module","dir":"Articles","previous_headings":"","what":"Custom module","title":"Adding Support for Reporting to Custom Modules","text":"Let us consider example module, based example module teal: Using teal, can launch example module following:","code":"library(teal) my_module <- function(label = \"example teal module\") { module( label = label, server = function(id, data) { assert_reactive(data) checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"modify-the-declaration-of-the-server-function","dir":"Articles","previous_headings":"Add support for reporting","what":"Modify the declaration of the server function","title":"Adding Support for Reporting to Custom Modules","text":"first step add additional argument server function declaration - reporter. informs teal module requires reporter, included module called. See : modifications, module now ready launched teal: teal adds another tab application, titled Report previewer. However, visible change module operates appears user add content report module. requires inserting UI server elements teal.reporter module module body.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"insert-teal-reporter-module","dir":"Articles","previous_headings":"Add support for reporting","what":"Insert teal.reporter module","title":"Adding Support for Reporting to Custom Modules","text":"UI server logic necessary adding cards my_module_with_reporting report provided teal.reporter::simple_reporter_ui teal.reporter::simple_reporter_srv. updated module now ready launched: new piece UI added, buttons clickable. user can now add card report view Report previewer module preview still empty since instructed module put card.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = function(card) card ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"add-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add content to the card","title":"Adding Support for Reporting to Custom Modules","text":"add content card, utilize public API exposed TealReportCard class. teal.reporter::simple_reporter_srv module accepts card_fun argument determines appearance output custom module. ReportCard derivatives allow sequential addition content according order method calls. explore content, can use $get_content method. details, refer documentation TealReportCard teal.reporter::ReportCard. add simple text card modifying card_fun argument passed teal.reporter::simple_reporter_srv. function must return card object, otherwise errors may occur teal. Now, application user can see text added custom_function Report previewer module.","code":"custom_function <- function(card = teal.reporter::ReportCard$new()) { card$append_text(\"This is content from a custom teal module!\") card } my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = custom_function ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"add-non-text-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add non-text content to the card","title":"Adding Support for Reporting to Custom Modules","text":"teal.reporter supports addition tables, charts, . information, explore API teal.reporter::ReportCard learn supported content types.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"tealreportcard","dir":"Articles","previous_headings":"Add support for reporting","what":"TealReportCard","title":"Adding Support for Reporting to Custom Modules","text":"teal exports TealReportCard class, extends teal.reporter::ReportCard class provides several convenient methods facilitate working teal features like filter panel source code. details, refer documentation TealReportCard. support TealReportCard, function passed teal.reporter::simple_reporter_srv must define default value card, shown : Without definition, API TealReportCard available within function.","code":"custom_function <- function(card = TealReportCard$new()) { # ... some code ... # card }"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"example","dir":"Articles","previous_headings":"","what":"Example","title":"Adding Support for Reporting to Custom Modules","text":"conclusion, demonstrated build standard teal app code reproducibility reporter functionalities. Note server function requires filter_panel_api argument filter panel state can added report. final example, incorporated teal.code snippets. teal.code R library offers utilities storing code associating execution environment. allows ReporterCard store code necessary generate table along table . learn teal.code see vignette qenv teal.code.","code":"library(teal) library(teal.reporter) ## example_reporter_module <- function(label = \"Example\") { module( label = label, server = function(id, data, reporter, filter_panel_api) { with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, \"FilterPanelApi\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) dat <- reactive(data()[[input$dataname]]) observe({ req(dat()) updateSliderInput(session, \"nrow\", max = nrow(dat()), value = floor(nrow(dat()) / 5)) }) table_q <- reactive({ req(input$dataname) req(input$nrow) within( data(), result <- head(dataset, nrows), dataset = as.name(input$dataname), nrows = input$nrow ) }) output$table <- renderTable(table_q()[[\"result\"]]) ### REPORTER card_fun <- function(card = teal.reporter::ReportCard$new(), comment) { card$set_name(\"Table Module\") card$append_text(paste(\"Selected dataset\", input$dataname), \"header2\") card$append_text(\"Selected Filters\", \"header3\") if (with_filter) { card$append_text(filter_panel_api$get_filter_state(), \"verbatim\") } card$append_text(\"Encoding\", \"header3\") card$append_text( yaml::as.yaml( stats::setNames( lapply(c(\"dataname\", \"nrow\"), function(x) input[[x]]), c(\"dataname\", \"nrow\") ) ), \"verbatim\" ) card$append_text(\"Module Table\", \"header3\") card$append_table(table_q()[[\"result\"]]) card$append_text(\"Show R Code\", \"header3\") card$append_text(teal.code::get_code(table_q()), \"verbatim\") if (!comment == \"\") { card$append_text(\"Comment\", \"header3\") card$append_text(comment) } card } teal.reporter::add_card_button_srv( \"addReportCard\", reporter = reporter, card_fun = card_fun ) teal.reporter::download_report_button_srv(\"downloadButton\", reporter = reporter) teal.reporter::reset_report_button_srv(\"resetButton\", reporter) ### }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), verbatimTextOutput(ns(\"dataset\")) ) ) sidebarLayout( sidebarPanel( tags$div( teal.reporter::add_card_button_ui(ns(\"addReportCard\")), teal.reporter::download_report_button_ui(ns(\"downloadButton\")), teal.reporter::reset_report_button_ui(ns(\"resetButton\")) ), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL), sliderInput(ns(\"nrow\"), \"Number of rows\", min = 1, max = 1, value = 1, step = 1) ), mainPanel(tableOutput(ns(\"table\"))) ) } ) } app <- init( data = teal_data(AIR = airquality, IRIS = iris), modules = list( example_reporter_module(label = \"with Reporter\"), my_module(label = \"without Reporter\") ), filter = teal_slices(teal_slice(dataname = \"AIR\", varname = \"Temp\", selected = c(72, 85))), header = \"Example teal app with reporter\" ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/actors.html","id":"teal-app-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal app developer","title":"Actors","text":"primary responsibility teal app developer leverage available building blocks teal framework create functional teal app analyses data. expedite app creation process, developers can take advantage pre-existing teal modules found R packages like teal.modules.general teal.modules.clinical. modules designed focus standardization versatility, making suitable wide range use cases. developing teal app, developer select appropriate teal modules integrate app’s interface ensure seamless usability end-users. learn existing modules, visit teal.gallery, contains several demo applications source code.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[teal App Developer]--utilizes--> B[teal modules] B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style C fill:gold style D fill:pink"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/actors.html","id":"teal-module-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal module developer","title":"Actors","text":"main duty teal module developer construct compatible teal module can utilized within teal framework. Several factors influence scope requirements building teal module. creating reusable teal module, ’s advisable focus making general adaptable feasible maximize possibilities re-used future. However, developers freedom create teal module customized suit specific demands project. Ultimately, one teal modules employed construct teal app. learn creating custom modules follow Tutorial Creating Custom Module.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[Teal App Developer]--utilizes--> B[teal modules] E[Teal Module Developer]--develops--> B B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style E fill:lightgreen style D fill:pink style C fill:gold"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/actors.html","id":"workflow-in-a-clinical-trial-study","dir":"Articles > Blueprint","previous_headings":"","what":"Workflow in a clinical trial study","title":"Actors","text":"clinical trial study setting, unique study teal app developer assigned study team accountable developing tailored teal app respective study. study teal app developer initially leverage existing teal modules R packages created teal module developers. cases need create new modules tailored study, study teal module developer need involved. Upon completion, study team designated teal app tailored specific study.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. %%| fig-width: 7.5 graph LR subgraph Study B A2[Study Teal App Developer]--utilizes--> B2[teal modules] E2[Study Teal Module Developer]-.develops.-> B2 B2--to create--> C2[study teal app] D2[study app user]--uses--> C2 end E3[Teal Module Developer]--develops--> B E3--develops-->B2 subgraph Study A A[Study Teal App Developer]--utilizes--> B[teal modules] E[Study Teal Module Developer]-.develops.-> B B--to create--> C[study teal app] D[study app user]--uses--> C end style A fill:lightblue style A2 fill:lightblue style E fill:limegreen style E2 fill:limegreen style E3 fill:lightgreen style D fill:pink style D2 fill:pink style C fill:gold style C2 fill:gold"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/filter_panel.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Filter Panel","text":"teal.slice package provides teal applications filter panel, powerful tool exploring analyzing data, key component teal framework. One great things filter panel comes built-teal, requiring programming knowledge use. filter panel provides convenient way users subset data, simplifying process exploration comprehension. Moreover, users can activate deactivate filter states interactively, either individually globally, using filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/filter_panel.html","id":"filter-flow","dir":"Articles > Blueprint","previous_headings":"","what":"Filter flow","title":"Filter Panel","text":"filter panel creates subsets data. Subsetting achieved creating filter states, holds logical predicate (filter condition) applied single variables. filter conditions composed single expression, call particular function (e.g. dplyr::filter), expression evaluated create filtered data subset. process entirely interactive. Filter states can created, removed, changed , however, app developer may choose constrain even restrict . filter state created, filter panel generates filter card shiny inputs appropriate type variable, e.g. range selectors numeric columns sets checkboxes drop-menus categorical ones. users interact filter cards, subsetting complete expression updated filtered data recomputed. filtered data passed teal modules downstream analysis. subsetting expression returned along data, ensuring unbroken track record entire analysis. Signature data also stored ensure reproducible results.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. sequenceDiagram autonumber data->teal.slice: processed by teal.slice->>shiny inputs: creates Note over teal.slice,shiny inputs: based on data type shiny inputs->>reactive dataset: updates reactive dataset->>teal modules: processed by"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/in_app_data.html","id":"building-data-in-the-app","dir":"Articles > Blueprint","previous_headings":"","what":"Building data in the App","title":"In-App Data","text":"Typically data passed teal application available app run. However, always true cases data built app started. good example pulling data external repository, like database, uploading file. Additional authentication may required.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/in_app_data.html","id":"teal_data_module","dir":"Articles > Blueprint","previous_headings":"Building data in the App","what":"teal_data_module","title":"In-App Data","text":"Preprocessing actions can performed -app using teal_data_module. Rather passing teal_data object app, one may pass shiny module returns teal_data object (wrapped reactive expression). allows app developer include user actions data creation, fetching, even pre-filtering modification.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/in_app_data.html","id":"further-reading","dir":"Articles > Blueprint","previous_headings":"","what":"Further reading","title":"In-App Data","text":"complete explanation using teal_data_module can found teal vignette","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/input_data.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Input Data","text":"Reproducibility paramount pharmaceutical industry. Accurate consistent results essential ensure high-quality research safety patients. prioritizing reproducibility, researchers can validate methods, confirm findings, contribute advancement field. teal.code package provides qenv class facilitates code reproducibility. Code passed qenv object, evaluated specific environment. qenv also stores code can retrieved request. teal_data class, serves primary data interface teal applications, inherits code tracking behavior qenv.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/input_data.html","id":"preparing-data-for-a-teal-application","dir":"Articles > Blueprint","previous_headings":"","what":"Preparing data for a teal application","title":"Input Data","text":"teal applications run data provided teal_data object. Data objects stored modified within environment teal_data object R code used tracked, allows code evaluated executed teal application, reproduced outside teal application. includes data loading, preprocessing, filtering, transformations, plotting, etc. teal_data object makes easy users reproduce validate results analyses. Learn use teal_data teal.data package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/input_data.html","id":"show-r-code-and-reporter","dir":"Articles > Blueprint","previous_headings":"","what":"Show R Code and Reporter","title":"Input Data","text":"teal.modules.clinical teal.modules.general packages, ’ll find modules include convenient Show R Code button. button clicked, modal window appears, revealing R code responsible generating module’s output. functionality achieved inspecting teal_data object retrieving code . Show R Code button, users can easily copy independently run code reproduce analysis presented teal module. Reporter feature also leverages teal_data object operation. Much like Show R Code mechanism, code displayed Reporter Card extracted teal_data object. learn Reporter feature, please visit teal.reporter documentation. Overall, qenv teal.code child class, teal_data, powerful tools ensuring code reproducibility promoting high-quality research R programming language.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/module_encapsulation.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Module Encapsulation","text":"teal framework leverages shiny module concept enable encapsulation analytical actions teal modules, maintaining seamless communication modules application.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/module_encapsulation.html","id":"benefits","dir":"Articles > Blueprint","previous_headings":"","what":"Benefits","title":"Module Encapsulation","text":"implementing modular app technique shiny module creation teal module, several benefits realized: Streamlined maintenance development teal module becomes manageable, can function independently teal framework. separation allows developers maintain module ease. approach successfully applied R packages dedicated teal module development, teal.modules.general teal.modules.clinical. Enhanced focus outputteal module developers can concentrate solely refining parameters encoding, output aspects (data summarization visualization) without need concern intricacies teal framework. developed correctly, module seamlessly integrates teal. Facilitated collaborationteal module development becomes accessible entry point developers interested collaborating. approach encourages user collaboration improvement teal modules, developers gain deeper understanding mechanics teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/product_map.html","id":"why-so-many-packages","dir":"Articles > Blueprint","previous_headings":"","what":"Why so many packages?","title":"Product Map","text":"breaking teal features, modules, calculations dedicated packages, maintenance made significantly manageable.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Bootstrap Themes in teal","text":"offer easy application custom Bootstrap theme teal app. teal uses bslib R package provides tools customizing Bootstrap themes, including shiny apps.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"usage","dir":"Articles","previous_headings":"","what":"Usage","title":"Bootstrap Themes in teal","text":"teal app developers can specify custom Bootstrap themes setting teal.bs_theme R option, set bslib::bs_theme object. bslib::bs_theme(...) function creates Bootstrap theme object, one specifies (major) Bootstrap version (default one 3, 4, 5). Optionally one can choose bootswatch theme customize app CSS functions like bslib::bs_add_rules. Please read custom themes bslib getting started vignette. teal.bs_theme R option specified top code script. Please install bslib package run code .","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"teal-bs_theme-r-option","dir":"Articles","previous_headings":"Usage","what":"teal.bs_theme R option","title":"Bootstrap Themes in teal","text":"","code":"options(\"teal.bs_theme\" = bslib::bs_theme(\"Custom Options\")) ####################### # teal::init() app code #######################"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"bootstrap-version-and-themes","dir":"Articles","previous_headings":"Usage","what":"Bootstrap version and themes","title":"Bootstrap Themes in teal","text":"best recommended ways explore Bootstrap themes use bslib::run_with_themer(shinyApp(app$ui, app$server)) bslib::bs_theme_preview(), offer interactive explore mode (supported Bootstrap 3). bslib::bs_theme_preview() recommended end user shiny app yet. already shiny app want test different Bootstrap themes (CSS styling) bslib::run_with_themer(shinyApp(app$ui, app$server)) recommended. Available Bootstrap versions checked bslib::versions() Bootstrap themes (bootswatch) bslib::bootswatch_themes(version = \"5\").","code":"# bslib::versions() # bslib::bootswatch_themes(version = \"5\") options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"lux\")) # or options(\"teal.bs_theme\" = bslib::bs_theme_update(bslib::bs_theme(version = \"5\"), bootswatch = \"lux\"))"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"default-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Default Bootstrap theme","title":"Bootstrap Themes in teal","text":"using default bslib theme version (3, 4 5), styling might expected. Please run interactive themer (recommended) apply custom theme explore theme options. many scenarios updating theme might enough e.g. font color specifications updated .","code":"# instead of options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) # try non-default themes options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"THEME NAME\". ...)) # or run the app inside bslib::run_with_themer"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"reset-the-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Reset the Bootstrap theme","title":"Bootstrap Themes in teal","text":"Please use options(\"teal.bs_theme\" = NULL) call return default shiny Bootstrap teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"theme-not-updated","dir":"Articles","previous_headings":"Usage","what":"Theme not updated","title":"Bootstrap Themes in teal","text":"One reason theme updated web browser caches previous one, especially different themes run one another. Please, use Cmd+Shift+R (Mac) Ctrl+F5 (Windows) hard refresh webpage.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"custom-teal-css","dir":"Articles","previous_headings":"Usage","what":"Custom teal CSS","title":"Bootstrap Themes in teal","text":"important HTML tags teal specific id class, can directly styled. bslib::bs_add_rules function used around bslib::bs_theme object apply custom CSS rules. bslib::bs_add_* family functions used specify low-level Bootstrap elements.","code":"library(magrittr) options(\"teal.bs_theme\" = bslib::bs_add_rules( bslib::bs_theme(version = \"5\"), \"Anything understood by sass::as_sass()\" ))"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"bootstrap-null-vs-bootstrap-3","dir":"Articles","previous_headings":"Usage","what":"Bootstrap NULL vs Bootstrap 3","title":"Bootstrap Themes in teal","text":"important note statements options(\"teal.bs_theme\" = NULL) options(\"teal.bs_theme\" = bslib::bs_theme(version = \"3\") equivalent bslib approximation default shiny theme Bootstrap version 3 can introduce discrepancies. One important difference using bslib::bs_theme(version = \"3\", bootswatch = \"THEME NAME\") one can apply custom Bootstrap theme. Another one usage bslib::bs_theme(version = \"3\") requires installation shinyWidgets package minimum version 0.7.4.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"regular-shinyfluidpage","dir":"Articles","previous_headings":"Usage","what":"Regular shiny::fluidPage","title":"Bootstrap Themes in teal","text":"want update theme regular shiny::fluidPage-like app, need teal.bs_theme option. Simply provide bslib::bs_theme directly: shiny::fluidPage(theme = bslib::bs_theme(...), ...).","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"interactive-theming-guide","dir":"Articles","previous_headings":"Usage","what":"Interactive theming guide","title":"Bootstrap Themes in teal","text":"section provide step--step guide customizing teal application theme interactively bslib::run_with_themer(). recommend starting simple case satisfied, verifying full application. end use teal application . example assume want use Bootstrap 5. start, launch app bslib::run_with_themer(app$ui, app$server) instead shiny::shinyApp. gives us following. Note Theme Customizer section right hand side. added bslib customize theme.","code":"options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()), header = \"My first teal application\" ) bslib::run_with_themer(shinyApp(app$ui, app$server))"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"set-overall-app-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Set overall app theme","title":"Bootstrap Themes in teal","text":"Instead starting scratch, want start Bootswatch theme. Let us select Minty theme “Overall theme” drop-. bslib updated CSS styles use new theme, including customizer theme. Additionally, look R console, see helpful guide provides code update theme. teal applications don’t actually use bs_theme_update opt bs_theme instead. However, printed code still helpful.","code":"#### Update your bs_theme() R code with: ##### bs_theme_update(theme, bootswatch = \"minty\")"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"customize-a-bootswatch-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Customize a bootswatch theme","title":"Bootstrap Themes in teal","text":"base theme (Minty) close want let’s make modifications. start, increase base font size. , choose “Fonts” section customizer theme set value “Base font size” input. use 1.25 , means fonts increased factor 1.25. check R console, see bslib printed bs_theme_update(theme, font_scale = 1.25, bootswatch = \"minty\"), now includes font size adjustment. Finally, suppose want borders rounded. customizer theme, can go “Options” uncheck “Rounded corners” box. expected, corners longer rounded. look R console, now see bs_theme_update(theme, font_scale = 1.25,enable-rounded= FALSE, bootswatch = \"minty\").","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"apply-the-customized-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Apply the customized theme","title":"Bootstrap Themes in teal","text":"customization complete, apply changes application. , use option teal.bs_theme like time expand bslib::bs_theme call include changes. Luckily, arguments printed R console running app themer can plugged right . Now application custom theme applied. Please note interactive themer contains commonly applied options. customization options, review bslib documentation.","code":"options( \"teal.bs_theme\" = bslib::bs_theme( version = \"5\", font_scale = 1.25, `enable-rounded` = FALSE, bootswatch = \"minty\" ) ) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"sources","dir":"Articles","previous_headings":"","what":"Sources","title":"Bootstrap Themes in teal","text":"https://rstudio.github.io/bslib/","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Creating Custom Modules","text":"teal framework provides large catalog plug--ready analysis modules can incorporated teal applications. However, also possible create modules using module function, leverages Shiny modules. custom teal module built Shiny module, combining Shiny’s reactive capabilities modularized UI server logic encapsulate functionality. design enables structured reusable approach creating interactive components integrate seamlessly within teal ecosystem. guide, use simple histogram example, demonstrate convert histogram function robust teal module step--step: module allow users dynamically select datasets variables create histograms within teal application. cover best practices, including: Setting dynamic inputs. Structuring server logic. Using teal_data object ensure reactivity reproducibility.","code":"my_plot <- hist( dataset[[vars]], las = 1, main = paste(\"Histogram of\", vars), xlab = vars, col = \"lightblue\", border = \"black\" )"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"understanding-the-inputs-and-requirements","dir":"Articles","previous_headings":"","what":"Understanding the Inputs and Requirements","title":"Creating Custom Modules","text":"developing custom teal module visualizations, first identify primary inputs users interact : Dataset Input (dataset): Allows users select dataset explore. Variable Input (vars): Allows users choose specific numeric variable chosen dataset, ensuring appropriate columns available plotting. inputs dynamically populated based available datasets variables teal_data object, cover later.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-ui","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module UI","title":"Creating Custom Modules","text":"UI function defines controls display area histogram. module, use: selectInput Dataset: Enables users select dataset list available datasets. selectInput Variable: Allows users choose numeric variable chosen dataset, dynamically filtering non-numeric columns. plotOutput Histogram: Displays histogram dataset variable inputs selected. verbatimTextOutput Code: Automatically displays code generated plot based user input. ’s code histogram_module_ui function:","code":"# UI function for the custom histogram module histogram_module_ui <- function(id) { ns <- shiny::NS(id) shiny::tagList( shiny::selectInput(ns(\"dataset\"), \"Select Dataset\", choices = NULL), shiny::selectInput(ns(\"variable\"), \"Select Variable\", choices = NULL), shiny::plotOutput(ns(\"histogram_plot\")), shiny::verbatimTextOutput(ns(\"plot_code\")) # To display the reactive plot code ) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-server","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module Server","title":"Creating Custom Modules","text":"server function main logic teal module handled. histogram module, server function handle user interactions manage reactive teal_data object, allows module dynamically respond user inputs.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"passing-the-data-argument-to-the-server-function","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Passing the data Argument to the Server Function","title":"Creating Custom Modules","text":"begin, ’s essential include data argument server function definition. data argument holds reactive teal_data object, contains datasets filters applied. including data, can ensure: server function receives reactive version teal_data, allowing automatically respond changes. server can access filtered datasets directly. correct function definition server function : need refresher teal_data object, please visit teal.data package documentation.","code":"histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Server logic goes here }) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"understanding-teal_data-as-a-reactive-object-in-server-logic","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Understanding teal_data as a Reactive Object in Server Logic","title":"Creating Custom Modules","text":"used server logic teal module, teal_data object becomes reactive data container. means access contents, need call like function, using parentheses: data(). syntax triggers reactivity, ensuring data within teal_data stays --date filters changes applied elsewhere application. Note: teal_data object behaves reactive data container used within server logic. accessed outside server, reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"using-names-to-access-dataset-names-in-teal_data-object","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Using names() to Access Dataset Names in teal_data object","title":"Creating Custom Modules","text":"teal_data object can contain multiple datasets. retrieve names datasets, use names() function: return character vector dataset names contained teal_data. can use names dynamically populate input controls, like dataset selection drop-.","code":"names(data())"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"accessing-specific-datasets-with-double-brackets","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Accessing Specific Datasets with Double Brackets ([[ ]])","title":"Creating Custom Modules","text":"access individual dataset teal_data, use double brackets ([[ ]]) along dataset name. allows extract specific dataset data frame: , input$dataset represents name dataset selected user. syntax highly flexible dynamically references whichever dataset user chosen. can subset manipulate extracted data frame needed.","code":"data()[[input$dataset]]"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"setting-up-server-logic-using-teal_data-and-dynamic-variable-injection","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Setting Up Server Logic Using teal_data and Dynamic Variable Injection","title":"Creating Custom Modules","text":"updated server function, perform following: Create new_data modified version data() using within(), dynamically injecting input$dataset input$variable. Render Plot: renderPlot() displays plot referencing plot stored updated teal_data object, new_data. ’s code: Let’s review ’ve done far: input_dataset = .name(input$dataset) passes dataset name dynamically input_dataset. input_vars = input$variable passes selected variable name directly input_vars. Inside within(), my_plot uses injected variables dynamically generate histogram plot. output$histogram_plot uses renderPlot() display plot stored new_data referencing result()[[\"my_plot\"]]. output$plot_code render function displays dynamically generated code using teal.code::get_code(result()), allowing users see exact code used generate plot reactively.","code":"# Server function for the custom histogram module with injected variables in within() histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Update dataset choices based on available datasets in teal_data shiny::observe({ shiny::updateSelectInput( session, \"dataset\", choices = names(data()) ) }) # Update variable choices based on selected dataset, only including numeric variables observeEvent(input$dataset, { req(input$dataset) # Ensure dataset is selected numeric_vars <- names(data()[[input$dataset]])[sapply(data()[[input$dataset]], is.numeric)] shiny::updateSelectInput(session, \"variable\", choices = numeric_vars) }) # Create a reactive `teal_data` object with the histogram plot result <- reactive({ req(input$dataset, input$variable) # Ensure both dataset and variable are selected # Create a new teal_data object with the histogram plot new_data <- within( data(), { my_plot <- hist( input_dataset[[input_vars]], las = 1, main = paste(\"Histogram of\", input_vars), xlab = input_vars, col = \"lightblue\", border = \"black\" ) }, input_dataset = as.name(input$dataset), # Replace `input_dataset` with input$dataset input_vars = input$variable # Replace `input_vars` with input$variable ) new_data }) # Render the histogram from the updated teal_data object output$histogram_plot <- shiny::renderPlot({ result()[[\"my_plot\"]] # Access and render the plot stored in `new_data` }) # Reactive expression to get the generated code for the plot output$plot_code <- shiny::renderText({ teal.code::get_code(result()) # Retrieve and display the code for the updated `teal_data` object }) }) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"creating-the-custom-teal-module-function","dir":"Articles","previous_headings":"","what":"Creating the Custom teal Module Function","title":"Creating Custom Modules","text":"teal::module() function allows encapsulate UI server logic teal module, making reusable ready integrate teal application. setting datanames = \"\", give module access datasets specified teal_data object.","code":"# Custom histogram module creation create_histogram_module <- function(label = \"Histogram Module\") { teal::module( label = label, ui = histogram_module_ui, server = histogram_module_server, datanames = \"all\" ) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"integrating-the-custom-teal-module-into-a-teal-app","dir":"Articles","previous_headings":"","what":"Integrating the Custom teal Module into a teal App","title":"Creating Custom Modules","text":"custom teal module set , can now integrated teal app. ’ll use init() teal specify datasets modules used app, run app test newly created module. Congratulations! just created custom teal module used teal app! setup provides fully dynamic, user-controlled teal module allows interactive data exploration code visibility, enhancing usability transparency.","code":"library(teal) # Define datasets in `teal_data` data_obj <- teal_data( iris = iris, mtcars = mtcars ) # Initialize the teal app app <- init( data = data_obj, modules = modules(create_histogram_module()) ) # Run the app shiny::shinyApp(ui = app$ui, server = app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"whats-next","dir":"Articles","previous_headings":"","what":"What’s next?","title":"Creating Custom Modules","text":"Now ’ve mastered essentials building integrating modules teal, ’re ready explore advanced features. teal offers wide range capabilities enhance module’s functionality user experience.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"adding-reporting-to-a-module","dir":"Articles","previous_headings":"What’s next?","what":"Adding reporting to a module","title":"Creating Custom Modules","text":"Enhance custom teal module reporting features! Dive vignette see just simple add powerful reporting capabilities elevate module’s impact.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"using-standard-widgets-in-your-custom-module","dir":"Articles","previous_headings":"What’s next?","what":"Using standard widgets in your custom module","title":"Creating Custom Modules","text":"teal.widgets package provides various widgets can leveraged quickly create standard elements custom teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data as shiny Module","text":"Proper functioning teal application requires presence teal_data object. Typically, teal_data object created global environment passed data argument init. teal_data object contain elements necessary successful execution application’s modules. scenarios, however, application developers may opt postpone data operations application runtime. can done passing special shiny module data argument. teal_data_module function used build module following components: UI function; accepts one argument, id; defines user interface elements data module server function: accepts one argument, id; defines server logic data module, including data creation; must return reactive expression containing teal_data object teal run module application starts resulting teal_data object used throughout teal (analytic) modules.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"","what":"Creating data in-app","title":"Data as shiny Module","text":"One case postponing data operations datasets dynamic, frequently updated. data created kept global environment. Using teal_data_module enables creating dataset scratch every time user starts application. See ?qenv detailed explanation use within method.","code":"library(teal) data_module <- teal_data_module( ui = function(id) tags$div(), server = function(id) { moduleServer(id, function(input, output, session) { reactive({ data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"modification-of-data-in-app","dir":"Articles","previous_headings":"","what":"Modification of data in-app","title":"Data as shiny Module","text":"Another reason postpone data operations involve application user preprocessing stage. initial, constant form data can created global environment modified app starts. following example illustrates teal_data_module can utilized subset data based user inputs: Note running preprocessing code module opposed global environment increase app loading times. recommended keep constant code global environment move dynamic parts data module.","code":"data <- within(teal_data(), { dataset1 <- iris dataset2 <- mtcars }) data_module <- teal_data_module( ui = function(id) { ns <- NS(id) tags$div( selectInput(ns(\"species\"), \"Select species to keep\", choices = unique(iris$Species), multiple = TRUE ), actionButton(ns(\"submit\"), \"Submit\") ) }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data_modified <- within( data, dataset1 <- subset(dataset1, Species %in% selected), selected = input$species ) data_modified }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"warning","dir":"Articles","previous_headings":"","what":"Data as shiny Module","title":"Data as shiny Module","text":"using teal_data_module modify pre-existing teal_data object, crucial server function data object defined environment, otherwise server function able access data object. means server functions defined packages used.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"extending-existing-teal_data_modules","dir":"Articles","previous_headings":"Modification of data in-app","what":"Extending existing teal_data_modules","title":"Data as shiny Module","text":"server logic teal_data_module can modified used app, using within function. allows teal_data object created teal_data_module processed . previous example, data_module takes predefined teal_data object allows app user select subset. following example modifies data_module new columns added data retrieved.","code":"data_module_2 <- within( data_module, { # Create new column with Ratio of Sepal.Width and Petal.Width dataset1$Ratio.Sepal.Petal.Width <- round(dataset1$Sepal.Width / dataset1$Petal.Width, digits = 2L) # Create new column that converts Miles per Galon to Liter per 100 Km dataset2$lp100km <- round(dataset2$mpg * 0.42514371, digits = 2L) } ) app <- init( data = data_module_2, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data Transformations as shiny Module","text":"teal version 0.16 introduced new argument teal::module called transformers. argument allows pass list teal_data_module objects created using teal_transform_module() function. main benefit teal_transform_module() ability transform data passing module. feature allows extend regular behavior existing modules specifying custom data operations data inside module. teal_transform_module() Shiny module takes ui server arguments. provided, teal execute data transformations specified module loaded whenever data changes. server extend logic behind data manipulations, ui extends filter panel new UI elements orchestrate transformer inputs. vignette presents way manage custom data transformations teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"creating-your-first-custom-data-transformation-module","dir":"Articles","previous_headings":"","what":"Creating your first custom data transformation module","title":"Data Transformations as shiny Module","text":"initialize simple teal app pass iris mtcars input datasets.","code":"library(teal) data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) app <- init( data = data, modules = teal::example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"single-transformer","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Single Transformer","title":"Data Transformations as shiny Module","text":"Let’s create simple teal_transform_module returns first n number rows iris based user input. creating ui numericInput user input number rows displayed. server function take reactive data perform transformation return new reactive data. Note: recommended return reactive() teal_data() server code teal_transform_module robust maintaining reactivity Shiny. planning using eventReactive() server, event include data() (example eventReactive(list(input$, data()), {...})). discussion.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"multiple-transformers","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Multiple Transformers","title":"Data Transformations as shiny Module","text":"Note can add multiple teal transformers including teal_transform_module list. Let’s add another transformation mtcars dataset creates column rownames mtcars. Note module interactive UI elements.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ), teal_transform_module( label = \"Custom transform for mtcars\", ui = function(id) { ns <- NS(id) tags$div( \"Adding rownames column to mtcars\" ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { mtcars$rownames <- rownames(mtcars) rownames(mtcars) <- NULL }) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/filter-panel.html","id":"teal-apps-with-the-filter-panel","dir":"Articles","previous_headings":"","what":"teal apps with the filter panel","title":"Filter Panel","text":"filter panel integral part teal applications included right side. Based selections made filter panel, filter expressions executed passing data teal modules. technical details filter panel extensively described teal.slice documentation. default, init initializes filter panel without active filters allows user add filters column. start teal application predefined filters, one must specify filter argument. following example four filters specified using teal_slice function wrapped together teal_slices.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = example_module(), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Sepal.Length\"), teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\"), teal_slice(dataname = \"CARS\", varname = \"mpg\", selected = c(20, Inf)), teal_slice(dataname = \"CARS\", expr = \"qsec < 20\", title = \"1/4 mile under 20 sec\", id = \"qsec_20\") ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/filter-panel.html","id":"filter-panel-respective-to-teal_module","dir":"Articles","previous_headings":"Extending teal.slice","what":"Filter panel respective to teal_module","title":"Filter Panel","text":"teal_module (see ?module) object contains datanames attribute determines data sets sent module. filter panel display data sets hide rest module active.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = modules( example_module(label = \"all datasets\"), example_module(label = \"IRIS only\", datanames = \"IRIS\"), example_module(label = \"CARS only\", datanames = \"CARS\"), example_module(label = \"no filter panel\", datanames = NULL) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/filter-panel.html","id":"global-and-module-specific-filter-panel","dir":"Articles","previous_headings":"Extending teal.slice","what":"Global and module specific filter panel","title":"Filter Panel","text":"teal contains teal_slices function extends original teal_slices found teal.slice adding two arguments: module_specific mapping. default init initializes app “global” filter panel, modules use filters. Setting module_specific = TRUE switches “module-specific” filter panel, module can different set filters active time. still possible set global filters shared among modules. One possible scenario depicted figure : filter 1 shared modules filter 2 shared module 1 module 3 filter 3 used module 2 filter 4 used module 1 filter 5 filter 6 active modules achieve described setup, one must set module_specific argument TRUE use mapping argument match filters modules. mapping takes named list element names correspond module labels, elements vectors teal_slice ids applied module startup. teal_slices listed element called \"global_filters\" applied modules. detailed explanation filter states, see teal.slice vignette.","code":"library(teal) app <- init( data = teal_data(mtcars = mtcars), modules = modules( example_module(label = \"module 1\"), example_module(label = \"module 2\"), example_module(label = \"module 3\"), example_module(label = \"module 4\") ), filter = teal_slices( # filters created with id teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"filter 1\"), teal_slice(dataname = \"mtcars\", varname = \"cyl\", id = \"filter 2\"), teal_slice(dataname = \"mtcars\", varname = \"disp\", id = \"filter 3\"), teal_slice(dataname = \"mtcars\", varname = \"hp\", id = \"filter 4\"), teal_slice(dataname = \"mtcars\", varname = \"drat\", id = \"filter 5\"), teal_slice(dataname = \"mtcars\", varname = \"wt\", id = \"filter 6\"), # module-specific filtering enabled module_specific = TRUE, # filters mapped to modules mapping = list( \"module 1\" = c(\"filter 2\", \"filter 4\"), \"module 2\" = \"filter 3\", \"module 3\" = \"filter 2\", global_filters = \"filter 1\" ) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Getting Started with teal","text":"teal shiny-based interactive exploration framework analyzing data, particular emphasis CDISC clinical trial data. teal applications allow users : “Pull” data external data sources Dynamically filter data used analyses Generate reproducible code regenerate -screen analyses Create download reports containing results analyses (analysis modules support reporting) addition, teal framework provides application developers : large suite custom-made standard analysis modules included applications logging framework facilitate debugging applications advanced users framework can also create new analysis modules can added teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"your-first-teal-application","dir":"Articles","previous_headings":"","what":"Your first teal application:","title":"Getting Started with teal","text":"simple teal application takes iris mtcars datasets displays contents: Hovering image shows teal application generated code. Every teal application composed following elements, can controlled app developer passing arguments init function: Application Title (browser’s tab title): title application. Application Header Footer (top bottom app): content placed top bottom application. example code: two modules named “Module 1” “Module 2”. Module Content (panel middle): outputs currently active module. example code: filter panel initialized filter Species variable iris dataset.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = modules( example_module(\"Module 1\"), example_module(\"Module 2\") ), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\") ), title = build_app_title(title = \"My first teal app\"), header = h3(\"My first teal application\"), footer = tags$div(a(\"Powered by teal\", href = \"https://insightsengineering.github.io/teal/latest-tag/\")) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"creating-your-own-applications","dir":"Articles","previous_headings":"","what":"Creating your own applications","title":"Getting Started with teal","text":"key function use create teal application init, requires two mandatory arguments: data modules. optional arguments init, can used customize application. Please refer documentation init details.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"application-data","dir":"Articles","previous_headings":"Creating your own applications","what":"Application data","title":"Getting Started with teal","text":"data argument init function specifies data used application. datasets used teal application must passed teal_data object. also possible specify relationships datasets using join_keys argument case datasets related. See vignette details. data available pulled remote source, init must receive teal_data_module specifies obtain desired datasets put teal_data object. See vignette details. order use CDISC clinical trial data teal application cdisc_data function used instead. Custom SDTM standards can handled teal_data join_keys. details, recommend exploring teal.data package documentation.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"modules","dir":"Articles","previous_headings":"Creating your own applications","what":"Modules","title":"Getting Started with teal","text":"modules argument init consists list teal modules (can wrapped together using function modules). Core teal developers created several universal teal modules can useful teal application. learn create modules, please explore Creating Custom Modules vignette. use predefined modules, see references links modules.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"defining-filters","dir":"Articles","previous_headings":"Creating your own applications","what":"Defining filters","title":"Getting Started with teal","text":"optional filter argument init allows initialize application predefined filters. details see Filter Panel vignette .","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"reporting","dir":"Articles","previous_headings":"Creating your own applications","what":"Reporting","title":"Getting Started with teal","text":"modules teal application support reporting (see teal.reporter details), users application can add outputs modules report. report can downloaded special Report Previewer module added application additional tab, users can view configure reports downloading . See details vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"reproducible-code","dir":"Articles","previous_headings":"Creating your own applications","what":"Reproducible code","title":"Getting Started with teal","text":"teal hands data reproducible code every module included application. Note teal display code, modules’ responsibility. example, example_module function used shows code main panel together outputs. details see vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"where-to-go-next","dir":"Articles","previous_headings":"","what":"Where to go next","title":"Getting Started with teal","text":"learn teal framework recommend first exploring available analysis modules. example see: general analysis modules clinical trial reporting modules modules analyzing MultiAssayExperiment objects demo teal apps see: gallery sample apps based teal catalog Tables, Listings Graphs catalog Biomarker Analysis Templates Tables Graphs teal framework relies set supporting packages whose documentation provides -depth information. packages interest defining tealapplications : teal.data: defining data teal application. teal.slice: defining data filtering passing teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"data-in-teal-applications","dir":"Articles","previous_headings":"","what":"Data in teal Applications","title":"Including Data in teal Applications","text":"teal framework readily accepts general, non-relational data. Modules defined teal.modules.general package designed work well kind data. Relational data handled just well mechanism passing data applications virtually . includes clinical data conforms ADaM standard. working making framework extendable support data structures can added relative ease. Currently support offered MultiAssayExperiment class. applications use teal_data class data container. teal_data objects passed init build application, modified filter panel (applicable) passed modules. Thus, first step building teal app creating teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"general-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"General data","title":"Including Data in teal Applications","text":"teal_data object created calling teal_data function passing data objects name:value pairs. Note iris cars added datanames property data (see datanames property). sufficient run teal app.","code":"library(teal) # create teal_data data <- teal_data(iris = iris, cars = mtcars) # build app app <- init( data = data, modules = example_module() ) # run app shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"reproducible-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"Reproducible data","title":"Including Data in teal Applications","text":"teal_data object stores data separate environment. Therefore, modifying stored datasets requires processing code evaluated environment. Following logic, one can create empty teal_data object populate evaluating code. can done using eval_code function , conveniently, using within function. key difference eval_code within former accepts code character vector language objects (calls expressions), within accepts inline code. See ?qenv details. Note first example data created passing data objects, code used create data objects unknown therefore process reproduced. Inspecting code app created reveals note preprocessing code absent. necessary code can supplied code argument teal_data function. Keep mind code executed teal_data’s environment, may reproduce environment. object considered unverified (see verified property). reproducibility required, recommend creating empty teal_data object evaluating code.","code":"# create empty object data_empty <- teal_data() # run code in the object data_populated_1 <- eval_code(data_empty, code = \"iris <- iris cars <- mtcars\") # alternative data_populated_2 <- within(data_empty, { iris <- iris cars <- mtcars }) data_with_code <- teal_data( iris = iris, cars = mtcars, code = \"iris <- iris cars <- mtcars\" )"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"code-from-file","dir":"Articles","previous_headings":"Data in teal Applications > Reproducible data","what":"code from file","title":"Including Data in teal Applications","text":"ability pass code character vector eval_code opens door using code stored file.","code":"# not run data_from_file <- teal_data() data_from_file <- eval_code(data, readLines(\"\"))"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"Data in teal Applications","what":"Creating data in-app","title":"Including Data in teal Applications","text":"one departure passing teal_data object init data exist environment app run, e.g. pulled remote source. cases teal_data_module must used. See vignette detailed description.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"clinical-data","dir":"Articles","previous_headings":"","what":"Clinical data","title":"Including Data in teal Applications","text":"Currently teal supports two specialized data formats.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"adam-data","dir":"Articles","previous_headings":"Clinical data","what":"ADaM data","title":"Including Data in teal Applications","text":"ADaM data model, defined CDISC standards, specifies relationships subject-level parent dataset observation-level child datasets. cdisc_data function takes advantage fact automatically set default joining keys (see join_keys property). example , two standard ADaM datasets (ADSL ADTTE) passed cdisc_data.","code":"# create cdisc_data data_cdisc <- cdisc_data(ADSL = teal.data::rADSL, ADTTE = teal.data::rADSL) names(data_cdisc) #> [1] \"ADSL\" \"ADTTE\" join_keys(data_cdisc) #> A join_keys object containing foreign keys between 2 datasets: #> ADSL: [STUDYID, USUBJID] #> <-- ADTTE: [STUDYID, USUBJID] #> ADTTE: [STUDYID, USUBJID, PARAMCD] #> --> ADSL: [STUDYID, USUBJID] app <- init( data = data_cdisc, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"multiassayexperiment-data","dir":"Articles","previous_headings":"Clinical data","what":"MultiAssayExperiment data","title":"Including Data in teal Applications","text":"MultiAssayExperiment package offers data structure representing analyzing multi-omics experiments involve multi-modal, high-dimensionality data, DNA mutations, protein RNA abundance, chromatin occupancy, etc., biological specimens. MultiAssayExperiment class described detail . MultiAssayExperiment objects (MAEs) placed teal_data just like normal objects. Due unique structure MAE, teal requires special considerations building teal modules. Therefore, guarantee modules work properly MAEs. package teal.modules.hermes developed specifically MAE mind reliable. filter panel supports MAEs box.","code":"library(MultiAssayExperiment) utils::data(miniACC) data_mae <- teal_data(MAE = miniACC) app <- init( data = data_mae, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"join_keys","dir":"Articles","previous_headings":"teal_data properties","what":"join_keys","title":"Including Data in teal Applications","text":"Using relational data requires specifying joining keys pair datasets. Primary keys unique row identifiers individual datasets thus specified dataset. Foreign keys describe mapping variables datasets. Joining keys stored join_keys property, can set creating teal_data object, using join_keys argument, using join_keys function. detailed explanation join keys, see teal.data vignette. (back ADaM Data)","code":"ds1 <- data.frame( id = seq(1, 10), group = rep(c(\"A\", \"B\"), each = 5) ) ds2 <- data.frame( group = c(\"A\", \"B\"), condition = c(\"condition1\", \"condition2\") ) keys <- join_keys( join_key(\"DS1\", keys = \"id\"), join_key(\"DS2\", keys = \"group\"), join_key(\"DS1\", \"DS2\", keys = c(\"group\" = \"group\")) ) data_relational1 <- teal_data(DS1 = ds1, DS2 = ds2, join_keys = keys) data_relational2 <- teal_data(DS1 = ds1, DS2 = ds2) join_keys(data_relational2) <- keys"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"verified","dir":"Articles","previous_headings":"teal_data properties","what":"verified","title":"Including Data in teal Applications","text":"teal_data allows tracking code data creation data filtering data analysis whole process can reproduced. verified property designates whether reproducibility confirmed. teal_data objects created empty modified evaluating code within considered verified default. created data objects alone data objects code verified default, can become verified running verify function. detailed explanation verification, see teal.data vignette. (back Reproducible Data)","code":"data_with_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code <- teal_data(iris = iris, cars = mtcars, code = expression(iris <- iris, cars <- mtcars)) data_with_objects_and_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code_ver <- verify(data_with_objects_and_code) data_with_objects_and_code_ver #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L]"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"further-reading","dir":"Articles","previous_headings":"","what":"Further reading","title":"Including Data in teal Applications","text":"complete guide teal_data class, please refer teal.data package.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"motivation","dir":"Articles","previous_headings":"","what":"Motivation","title":"Modifying a teal Application With R Options","text":"R packages use options modify runtime behavior. usually specify sensible default values internal function arguments determine responses users actions. example, testthat uses option testthat.progress.max_fails define default number failed expectations testing functions terminate execution. adjustable values can exposed function parameters, confined option. vignette details options available package teal ’s supporting packages teal.logger, teal.widgets, teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"setting-an-option","dir":"Articles","previous_headings":"","what":"Setting an option","title":"Modifying a teal Application With R Options","text":"time interactive session, can change option using: way change options execution specific block code withr package like : line run option, digits, go back value line run. function getOption allows inspect value option: set, value option persists session, returns default value new session. Make sure change options teal-related packages loaded initialize options overwrite custom values.","code":"options(option_to_set = \"value\") withr::with_options(list(digits = 3), print(pi)) ## [1] 3.14 getOption(\"option_to_set\") ## [1] \"value\""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-bs_theme-bslibbs_theme-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.bs_theme (bslib::bs_theme object)","title":"Modifying a teal Application With R Options","text":"option controls bootstrap theme version used teal apps. Achieve better UX customized UI app. Please see vignette Bootstrap themes read functionality. Default: NULL","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-load_nest_code-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.load_nest_code (character)","title":"Modifying a teal Application With R Options","text":"value option appended top code rendered using Show R Code modal button. Default: \"# Add code install/load NEST environment \".","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-threshold_slider_vs_checkboxgroup-numeric","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.threshold_slider_vs_checkboxgroup (numeric)","title":"Modifying a teal Application With R Options","text":"threshold determines variable treated factor filter panel. number unique values variable less threshold variable treated factor instead original class. example, imagine teal.threshold_slider_vs_checkboxgroup equals 2. numeric variable c(1, 1, 1), one unique value, treated factor filter panel (filter panel !). filter panel creates checkbox widget filter values variable, factor variable, instead usual numeric range selector. Default: 5.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-basic_table_args-basic_table_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.basic_table_args (basic_table_args object)","title":"Modifying a teal Application With R Options","text":"specifies list arguments passed every call rtables::basic_table made teal application. can used format rtables without making changes application code. See documentation teal.widgets::basic_table_args information. Default: teal.widgets::basic_table_args().","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-ggplot2_args-ggplot2_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.ggplot2_args (ggplot2_args object)","title":"Modifying a teal Application With R Options","text":"option allows modifying labels themes ggplot2 plots teal application. See documentation teal.widgets::ggplot2_args information. Default: teal.widgets::ggplot2_args().","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-plot_dpi-integer-value-24-or-larger","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.plot_dpi (integer value 24 or larger)","title":"Modifying a teal Application With R Options","text":"option controls dots per inch graphs rendered downloaded using module plot_with_settings teal.widgets package. Default: 72","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-log_layout-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_layout (character)","title":"Modifying a teal Application With R Options","text":"defines layout log message used teal application. teal uses layout format emitted log messages. Read documentation teal.logger::register_logger information. must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"[{level}] {format(time, \\\"%Y-%m-%d %H:%M:%OS4\\\")} pid:{pid} token:[{token}] {ans} {msg}\". Note layout formatted glue package.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-log_level-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_level (character)","title":"Modifying a teal Application With R Options","text":"logging level threshold used teal application. teal application emit logs level. See documentation logger::TRACE possible values logging threshold information . must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"INFO\". Note two levels considered less severe \"INFO\": \"DEBUG\" \"TRACE\". order see log messages two levels well, change log level default \"TRACE\", least severe log level.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-show_js_log-logical","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.show_js_log (logical)","title":"Modifying a teal Application With R Options","text":"indicates whether print JavaScript console logs R console. set TRUE, logs printed; otherwise, won’t. Default: FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-lockfile-mode-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.lockfile.mode (character)","title":"Modifying a teal Application With R Options","text":"enables compute renv lockfile shows button \"download lockfile\" footer. Values: \"auto\" - auto detect whether compute lockfile \"enabled\" - compute lockfile show \"download lockfile\" footer \"disabled\" - compute lockfile show \"download lockfile\" footer Default: \"auto\". read lockfile usage creation check ?teal::module_teal_lockfile.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal_logging","dir":"Articles","previous_headings":"Deprecated options","what":"teal_logging","title":"Modifying a teal Application With R Options","text":"Deprecated favor using teal.logger package logging.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal_show_js_log","dir":"Articles","previous_headings":"Deprecated options","what":"teal_show_js_log","title":"Modifying a teal Application With R Options","text":"Deprecated favor teal.show_js_log (see ).","code":""},{"path":"https://insightsengineering.github.io/teal/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Dawid Kaledkowski. Author, maintainer. Pawel Rucki. Author. Aleksander Chlebowski. Author. Andre Verissimo. Author. Kartikeya Kirar. Author. Vedha Viyash. Author. Marcin Kosinski. Author. Adrian Waddell. Author. Chendi Liao. Reviewer. Dony Unardi. Reviewer. Nikolas Burkoff. Author. Mahmoud Hallal. Author. Maciej Nasinski. Author. Konrad Pagacz. Author. Junlue Zhao. Author. Tadeusz Lewandowski. Author. F. Hoffmann-La Roche AG. Copyright holder, funder. Maximilian Mordig. Contributor.","code":""},{"path":"https://insightsengineering.github.io/teal/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Kaledkowski D, Rucki P, Chlebowski , Verissimo , Kirar K, Viyash V, Kosinski M, Waddell , Burkoff N, Hallal M, Nasinski M, Pagacz K, Zhao J, Lewandowski T (2024). teal: Exploratory Web Apps Analyzing Clinical Trials Data. R package version 0.15.2.9084, https://github.com/insightsengineering/teal/, https://insightsengineering.github.io/teal/.","code":"@Manual{, title = {teal: Exploratory Web Apps for Analyzing Clinical Trials Data}, author = {Dawid Kaledkowski and Pawel Rucki and Aleksander Chlebowski and Andre Verissimo and Kartikeya Kirar and Vedha Viyash and Marcin Kosinski and Adrian Waddell and Nikolas Burkoff and Mahmoud Hallal and Maciej Nasinski and Konrad Pagacz and Junlue Zhao and Tadeusz Lewandowski}, year = {2024}, note = {R package version 0.15.2.9084, https://github.com/insightsengineering/teal/}, url = {https://insightsengineering.github.io/teal/}, }"},{"path":"https://insightsengineering.github.io/teal/index.html","id":"teal-interactive-exploratory-data-analysis-with-shiny-web-applications-","dir":"","previous_headings":"","what":"Exploratory Web Apps for Analyzing Clinical Trials Data","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"teal shiny-based interactive exploration framework analyzing data. teal applications require app developers specify: CDISC data, commonly used clinical trial reporting Independent datasets, example data.frame Related datasets, example set data.frames key columns enable data joins MultiAssayExperiment objects R data structures representing analyzing multi-omics experiments teal.modules.general: general modules exploring relational/independent/CDISC data teal.modules.clinical: modules specific CDISC data clinical trial reporting teal.modules.hermes: modules analyzing MultiAssayExperiment objects lot functionality teal framework derives following packages: teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.logger: standardizes logging within teal framework. teal.reporter: allows teal applications generate reports. Dive deeper teal comprehensive video guide. Please click image start learning:","code":""},{"path":"https://insightsengineering.github.io/teal/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Alternatively, might also use development version.","code":"install.packages(\"teal\") # install.packages(\"pak\") pak::pak(\"insightsengineering/teal\")"},{"path":"https://insightsengineering.github.io/teal/index.html","id":"usage","dir":"","previous_headings":"","what":"Usage","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Please see teal.gallery TLG Catalog see examples teal apps. Please start “Technical Blueprint” article, “Getting Started” article, package vignettes detailed guide.","code":"library(teal) app <- init( data = teal_data(iris = iris), modules = list( module( label = \"iris histogram\", server = function(input, output, session, data) { updateSelectInput(session = session, inputId = \"var\", choices = names(data()[[\"iris\"]])[1:4]) output$hist <- renderPlot({ req(input$var) hist(x = data()[[\"iris\"]][[input$var]]) }) }, ui = function(id) { ns <- NS(id) list( selectInput(inputId = ns(\"var\"), label = \"Column name\", choices = NULL), plotOutput(outputId = ns(\"hist\")) ) } ) ) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/index.html","id":"getting-help","dir":"","previous_headings":"","what":"Getting help","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"encounter bug feature request, please file issue. questions, discussions, updates, use teal channel pharmaverse slack workspace.","code":""},{"path":"https://insightsengineering.github.io/teal/index.html","id":"acknowledgment","dir":"","previous_headings":"","what":"Acknowledgment","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"package result joint efforts many developers stakeholders. like thank everyone contributed far!","code":""},{"path":[]},{"path":[]},{"path":[]},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":null,"dir":"Reference","previous_headings":"","what":"Drive a teal application — TealAppDriver","title":"Drive a teal application — TealAppDriver","text":"Drive teal application Drive teal application","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Drive a teal application — TealAppDriver","text":"Extension shinytest2::AppDriver class methods driving teal application performing interactions shinytest2 tests.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver -> TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver$expect_download() shinytest2::AppDriver$expect_html() shinytest2::AppDriver$expect_js() shinytest2::AppDriver$expect_screenshot() shinytest2::AppDriver$expect_text() shinytest2::AppDriver$expect_unique_names() shinytest2::AppDriver$expect_values() shinytest2::AppDriver$get_chromote_session() shinytest2::AppDriver$get_dir() shinytest2::AppDriver$get_download() shinytest2::AppDriver$get_html() shinytest2::AppDriver$get_js() shinytest2::AppDriver$get_logs() shinytest2::AppDriver$get_screenshot() shinytest2::AppDriver$get_text() shinytest2::AppDriver$get_url() shinytest2::AppDriver$get_value() shinytest2::AppDriver$get_values() shinytest2::AppDriver$get_variant() shinytest2::AppDriver$get_window_size() shinytest2::AppDriver$log_message() shinytest2::AppDriver$run_js() shinytest2::AppDriver$set_inputs() shinytest2::AppDriver$set_window_size() shinytest2::AppDriver$stop() shinytest2::AppDriver$upload_file() shinytest2::AppDriver$view() shinytest2::AppDriver$wait_for_idle() shinytest2::AppDriver$wait_for_js() shinytest2::AppDriver$wait_for_value()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver$new() TealAppDriver$click() TealAppDriver$expect_no_shiny_error() TealAppDriver$expect_no_validation_error() TealAppDriver$expect_validation_error() TealAppDriver$set_input() TealAppDriver$navigate_teal_tab() TealAppDriver$active_ns() TealAppDriver$active_module_ns() TealAppDriver$active_module_element() TealAppDriver$active_module_element_text() TealAppDriver$active_filters_ns() TealAppDriver$active_data_summary_ns() TealAppDriver$active_data_summary_element() TealAppDriver$get_active_module_input() TealAppDriver$get_active_module_output() TealAppDriver$get_active_module_table_output() TealAppDriver$get_active_module_plot_output() TealAppDriver$set_active_module_input() TealAppDriver$get_active_filter_vars() TealAppDriver$get_active_data_summary_table() TealAppDriver$is_visible() TealAppDriver$get_active_data_filters() TealAppDriver$add_filter_var() TealAppDriver$remove_filter_var() TealAppDriver$set_active_filter_selection() TealAppDriver$get_attr() TealAppDriver$get_html_rvest() TealAppDriver$open_url() TealAppDriver$wait_for_active_module_value() TealAppDriver$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"Drive a teal application — TealAppDriver","text":"Initialize TealAppDriver object testing teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$new( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), landing_popup = NULL, timeout = rlang::missing_arg(), load_timeout = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"data, modules, filter, title, header, footer, landing_popup arguments passed init timeout (numeric) Default number milliseconds timeout timeout_ parameter TealAppDriver class. Defaults 20s. See shinytest2::AppDriver new method details change via options environment variables. load_timeout (numeric) long wait app load, ms. includes time start R. Defaults 100s. See shinytest2::AppDriver new method details change via options environment variables ... Additional arguments passed shinytest2::AppDriver$new","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Object class TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-click-","dir":"Reference","previous_headings":"","what":"Method click()","title":"Drive a teal application — TealAppDriver","text":"Append parent shinytest2::AppDriver click method call waif_for_idle() method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$click(...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"... arguments passed parent shinytest2::AppDriver click() method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-expect-no-shiny-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_shiny_error()","title":"Drive a teal application — TealAppDriver","text":"Check app shiny errors. checks global shiny errors. Note shiny errors dependent shiny server render captured teal module tab visited shiny trigger server computations tab invisible. , navigate module tab want test calling function. Although, catches errors hidden module tabs already rendered.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_shiny_error()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-expect-no-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_validation_error()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-expect-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_validation_error()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-set-input-","dir":"Reference","previous_headings":"","what":"Method set_input()","title":"Drive a teal application — TealAppDriver","text":"Set input teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-5","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id complete name space. value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-navigate-teal-tab-","dir":"Reference","previous_headings":"","what":"Method navigate_teal_tab()","title":"Drive a teal application — TealAppDriver","text":"Navigate teal tabs teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-6","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$navigate_teal_tab(tabs)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"tabs (character) Labels tabs navigate . order tabs important, start parent level tab. Note: case teal tab group duplicate names, first tab selected, wish select second tab name, use suffix \"_1\". wish select third tab name, use suffix \"_2\" .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-ns-","dir":"Reference","previous_headings":"","what":"Method active_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space different components teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-7","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(list) list active shiny name space teal components.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-module-ns-","dir":"Reference","previous_headings":"","what":"Method active_module_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting module content.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-8","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-4","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-module-element-","dir":"Reference","previous_headings":"","what":"Method active_module_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-9","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element(element)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-4","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-5","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-module-element-text-","dir":"Reference","previous_headings":"","what":"Method active_module_element_text()","title":"Drive a teal application — TealAppDriver","text":"Get text active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-10","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element_text(element)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-5","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) text custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-6","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) text active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-filters-ns-","dir":"Reference","previous_headings":"","what":"Method active_filters_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-11","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_filters_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-7","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-data-summary-ns-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting data-summary panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-12","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-8","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space data-summary component.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-data-summary-element-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-13","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_element(element)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-6","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-9","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-input-","dir":"Reference","previous_headings":"","what":"Method get_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Get input module teal app. function access inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-14","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_input(input_id)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-7","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-10","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny input.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-15","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_output(output_id)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-8","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"output_id (character) shiny output id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-11","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny output.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-table-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_table_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::table_with_settings DT::DTOutput teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-16","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_table_output(table_id, which = 1)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-9","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"table_id (character(1)) id table active teal module's name space. (integer) one table, extracted. default look table built using teal.widgets::table_with_settings.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-12","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame table contents.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-plot-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_plot_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::plot_with_settings teal app. function access plots name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-17","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_plot_output(plot_id)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-10","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"plot_id (character(1)) id plot active teal module's name space.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-13","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"src attribute character(1) vector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-set-active-module-input-","dir":"Reference","previous_headings":"","what":"Method set_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Set input module teal app. function set inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-18","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_module_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-11","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value . value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-14","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-filter-vars-","dir":"Reference","previous_headings":"","what":"Method get_active_filter_vars()","title":"Drive a teal application — TealAppDriver","text":"Get active datasets can accessed via filter panel current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-19","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_filter_vars()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-data-summary-table-","dir":"Reference","previous_headings":"","what":"Method get_active_data_summary_table()","title":"Drive a teal application — TealAppDriver","text":"Get active data summary table","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-20","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_summary_table()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-15","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-is-visible-","dir":"Reference","previous_headings":"","what":"Method is_visible()","title":"Drive a teal application — TealAppDriver","text":"Test DOM elements visible page JavaScript call.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-21","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$is_visible( selector, content_visibility_auto = FALSE, opacity_property = FALSE, visibility_property = FALSE )"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-12","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) CSS selector check visibility. CSS id return one element UI well formed. content_visibility_auto, opacity_property, visibility_property (logical(1)) See information https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-16","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Logical vector occurrences selector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-data-filters-","dir":"Reference","previous_headings":"","what":"Method get_active_data_filters()","title":"Drive a teal application — TealAppDriver","text":"Get active filter variables dataset teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-22","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_filters(dataset_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-13","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset get filter variables . NULL, filter variables datasets returned list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-add-filter-var-","dir":"Reference","previous_headings":"","what":"Method add_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Add new variable dataset filtered.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-23","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$add_filter_var(dataset_name, var_name, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-14","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset add filter variable . var_name (character) name variable add filter panel. ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-17","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-remove-filter-var-","dir":"Reference","previous_headings":"","what":"Method remove_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Remove active filter variable dataset active filter variables panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-24","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$remove_filter_var(dataset_name = NULL, var_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-15","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset remove filter variable . NULL, filter variables removed. var_name (character) name variable remove filter panel. NULL, filter variables dataset removed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-18","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-set-active-filter-selection-","dir":"Reference","previous_headings":"","what":"Method set_active_filter_selection()","title":"Drive a teal application — TealAppDriver","text":"Set active filter values variable dataset active filter variable panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-25","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_filter_selection(dataset_name, var_name, input, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-16","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset set filter value . var_name (character) name variable set filter value . input value set filter . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-19","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-attr-","dir":"Reference","previous_headings":"","what":"Method get_attr()","title":"Drive a teal application — TealAppDriver","text":"Extract html attribute (found selector).","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-26","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_attr(selector, attribute)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-17","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) specifying selector used get content specific node. attribute (character(1)) name attribute retrieve node specified selector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-20","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"character vector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-html-rvest-","dir":"Reference","previous_headings":"","what":"Method get_html_rvest()","title":"Drive a teal application — TealAppDriver","text":"Wrapper around get_html passes output directly rvest::read_html.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-27","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_html_rvest(selector)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-18","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) passed get_html.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-21","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"XML document. Wrapper around get_url() method opens app browser.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-28","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$open_url()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-22","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Nothing. Opens underlying teal app browser.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-wait-for-active-module-value-","dir":"Reference","previous_headings":"","what":"Method wait_for_active_module_value()","title":"Drive a teal application — TealAppDriver","text":"Waits specified input, output, export value. function serves wrapper around wait_for_value method, providing flexible interface waiting different types values within active module namespace.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-29","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$wait_for_active_module_value( input = rlang::missing_arg(), output = rlang::missing_arg(), export = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-19","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input, output, export name input, output, export value. one parameters may used. ... Must empty. Allows parameter expansion. Parameter additional value passed wait_for_value.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"Drive a teal application — TealAppDriver","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-30","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-20","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":null,"dir":"Reference","previous_headings":"","what":"TealReportCard — TealReportCard","title":"TealReportCard — TealReportCard","text":"Child class ReportCard used teal specific applications. addition parent methods, supports rendering teal specific elements source code, encodings panel content filter panel content part meta data.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard -> TealReportCard","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard$append_content() teal.reporter::ReportCard$append_metadata() teal.reporter::ReportCard$append_plot() teal.reporter::ReportCard$append_rcode() teal.reporter::ReportCard$append_table() teal.reporter::ReportCard$append_text() teal.reporter::ReportCard$from_list() teal.reporter::ReportCard$get_content() teal.reporter::ReportCard$get_metadata() teal.reporter::ReportCard$get_name() teal.reporter::ReportCard$initialize() teal.reporter::ReportCard$reset() teal.reporter::ReportCard$set_name() teal.reporter::ReportCard$to_list()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealReportCard — TealReportCard","text":"TealReportCard$append_src() TealReportCard$append_fs() TealReportCard$append_encodings() TealReportCard$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-append-src-","dir":"Reference","previous_headings":"","what":"Method append_src()","title":"TealReportCard — TealReportCard","text":"Appends source code content meta data TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_src(src, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"src (character(1)) code text. ... rmarkdown R chunk parameter value. eval parameter always set FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"Object class TealReportCard, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-append-fs-","dir":"Reference","previous_headings":"","what":"Method append_fs()","title":"TealReportCard — TealReportCard","text":"Appends filter state list content metadata TealReportCard. filter state list attribute named formatted, appends card otherwise uses default yaml::.yaml format list. filter state list empty, nothing appended content.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_fs(fs)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"fs (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-append-encodings-","dir":"Reference","previous_headings":"","what":"Method append_encodings()","title":"TealReportCard — TealReportCard","text":"Appends encodings list content metadata TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_encodings(encodings)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"encodings (list) list encodings selections teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealReportCard — TealReportCard","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"## ------------------------------------------------ ## Method `TealReportCard$append_src` ## ------------------------------------------------ card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content() #> [1] \"plot(iris)\" ## ------------------------------------------------ ## Method `TealReportCard$append_encodings` ## ------------------------------------------------ card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content() #> [1] \"Selected Options\""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":null,"dir":"Reference","previous_headings":"","what":"TealSlicesBlock — TealSlicesBlock","title":"TealSlicesBlock — TealSlicesBlock","text":"Specialized TealSlicesBlock block managing filter panel content reports.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"super-classes","dir":"Reference","previous_headings":"","what":"Super classes","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock -> teal.reporter::TextBlock -> TealSlicesBlock","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock$get_content() teal.reporter::TextBlock$get_available_styles() teal.reporter::TextBlock$get_style() teal.reporter::TextBlock$set_style()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealSlicesBlock — TealSlicesBlock","text":"TealSlicesBlock$new() TealSlicesBlock$set_content() TealSlicesBlock$from_list() TealSlicesBlock$to_list() TealSlicesBlock$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$new(content = teal_slices(), style = \"verbatim\")"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function. style (character(1)) string specifying style apply.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object content parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"Object class TealSlicesBlock, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-set-content-","dir":"Reference","previous_headings":"","what":"Method set_content()","title":"TealSlicesBlock — TealSlicesBlock","text":"Sets content TealSlicesBlock. Sets content YAML text represents list generated teal_slices. list displays limited number fields teal_slice objects, list sufficient conclude filters applied. selected field teal_slice object range, displayed \"min\"","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$set_content(content)"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-from-list-","dir":"Reference","previous_headings":"","what":"Method from_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Create TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$from_list(x)"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"x (named list) two fields text style. Use get_available_styles method get possible styles.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\"))"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-to-list-","dir":"Reference","previous_headings":"","what":"Method to_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Convert TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$to_list()"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"named list text style.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list()"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealSlicesBlock — TealSlicesBlock","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"## ------------------------------------------------ ## Method `TealSlicesBlock$from_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\")) ## ------------------------------------------------ ## Method `TealSlicesBlock$to_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list() #> $text #> [1] \"\" #> #> $style #> [1] \"verbatim\" #>"},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Append a teal_module to children of a teal_modules object — append_module","title":"Append a teal_module to children of a teal_modules object — append_module","text":"Append teal_module children teal_modules object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append a teal_module to children of a teal_modules object — append_module","text":"","code":"append_module(modules, module)"},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append a teal_module to children of a teal_modules object — append_module","text":"modules (teal_modules) module (teal_module) object appended onto children modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Append a teal_module to children of a teal_modules object — append_module","text":"teal_modules object module appended.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":null,"dir":"Reference","previous_headings":"","what":"Compare bookmarks. — bookmarks_identical","title":"Compare bookmarks. — bookmarks_identical","text":"Test two bookmarks store identical state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compare bookmarks. — bookmarks_identical","text":"","code":"bookmarks_identical(book1, book2)"},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compare bookmarks. — bookmarks_identical","text":"book1, book2 bookmark directories stored shiny_bookmarks/; default two recently modified directories","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compare bookmarks. — bookmarks_identical","text":"Invisible NULL bookmarks identical bookmarks test. FALSE inconsistencies detected.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Compare bookmarks. — bookmarks_identical","text":"input environments compared one variable time identical, values bookmarks reported. States datatables stripped time element comparing time stamp always different. contents printed large contents informative. Elements present one bookmark absent also reported. Differences printed messages. values environments compared .equal.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"how-to-use","dir":"Reference","previous_headings":"","what":"How to use","title":"Compare bookmarks. — bookmarks_identical","text":"Open application, change relevant inputs (typically, ), create bookmark. open bookmark immediately create bookmark . restoring bookmarks occurred properly, two bookmarks store state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":null,"dir":"Reference","previous_headings":"","what":"Build app title with favicon — build_app_title","title":"Build app title with favicon — build_app_title","text":"helper function create browser title along logo.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Build app title with favicon — build_app_title","text":"","code":"build_app_title( title = \"teal app\", favicon = \"https://raw.githubusercontent.com/insightsengineering/hex-stickers/main/PNG/nest.png\" )"},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Build app title with favicon — build_app_title","text":"title (character) browser title teal app. favicon (character) path icon title. image/icon path can remote static path accessible shiny, like www/","code":""},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Build app title with favicon — build_app_title","text":"shiny.tag containing element adds title logo shiny app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls expression when condition is met — call_once_when","title":"Calls expression when condition is met — call_once_when","text":"Function postpones handlerExpr moment eventExpr (condition) returns TRUE, otherwise nothing happens.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls expression when condition is met — call_once_when","text":"","code":"call_once_when( eventExpr, handlerExpr, event.env = parent.frame(), handler.env = parent.frame(), ... )"},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls expression when condition is met — call_once_when","text":"eventExpr (quoted unquoted) logical expression represents event; can simple reactive value like input$click, call reactive expression like dataset(), even complex expression inside curly braces. handlerExpr expression call whenever eventExpr invalidated. side-effect-producing action (return value ignored). executed within isolate() scope. event.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. eventExpr quosure event.quoted TRUE, event.env ignored. handler.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. handlerExpr quosure handler.quoted TRUE, handler.env ignored. ... additional arguments passed observeEvent exception eventExpr allowed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls expression when condition is met — call_once_when","text":"observer.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in filters — check_filter_datanames","title":"Check datanames in filters — check_filter_datanames","text":"function checks whether datanames filters correspond data, returning character vector error messages TRUE checks pass.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in filters — check_filter_datanames","text":"","code":"check_filter_datanames(filters, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in filters — check_filter_datanames","text":"filters (teal_slices) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in filters — check_filter_datanames","text":"character(1) containing error message TRUE validation passes.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in modules — check_modules_datanames","title":"Check datanames in modules — check_modules_datanames","text":"functions check specified datanames modules match data object, returning error messages TRUE successful validation. Two functions return error message different forms: check_modules_datanames returns character(1) basic assertion usage check_modules_datanames_html returns shiny.tag.list display app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in modules — check_modules_datanames","text":"","code":"check_modules_datanames(modules, datanames) check_modules_datanames_html(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in modules — check_modules_datanames","text":"modules (teal_modules) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in modules — check_modules_datanames","text":"TRUE validation passes, otherwise character(1) shiny.tag.list","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":null,"dir":"Reference","previous_headings":"","what":"Check that argument is reactive. — check_reactive","title":"Check that argument is reactive. — check_reactive","text":"Check argument reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check that argument is reactive. — check_reactive","text":"","code":"check_reactive(x, null.ok = FALSE) test_reactive(x, null.ok = FALSE) assert_reactive( x, null.ok = FALSE, .var.name = checkmate::vname(x), add = NULL )"},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check that argument is reactive. — check_reactive","text":"x [] Object check. null.ok [logical(1)] set TRUE, x may also NULL. case type check x performed, additional checks disabled. .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname. add [AssertCollection] Collection store assertion messages. See AssertCollection.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check that argument is reactive. — check_reactive","text":"Depending function prefix: check successful, functions assertClass/assert_class return x invisibly, whereas checkClass/check_class testClass/test_class return TRUE. check successful, assertClass/assert_class throws error message, testClass/test_class returns FALSE, checkClass/check_class return string error message. function expect_class always returns expectation.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":null,"dir":"Reference","previous_headings":"","what":"Application ID — create_app_id","title":"Application ID — create_app_id","text":"Creates App ID used match filter snapshots application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Application ID — create_app_id","text":"","code":"create_app_id(data, modules)"},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Application ID — create_app_id","text":"data (teal_data teal_data_module) accepted init modules (teal_modules) object accepted init","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Application ID — create_app_id","text":"single character string.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Application ID — create_app_id","text":"Calculate app ID used stamp filter state snapshots. App ID hash app's data modules. See \"transferring snapshots\" section ?snapshot.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":null,"dir":"Reference","previous_headings":"","what":"Capture error and decorate error message. — decorate_err_msg","title":"Capture error and decorate error message. — decorate_err_msg","text":"Capture error decorate error message.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Capture error and decorate error message. — decorate_err_msg","text":"","code":"decorate_err_msg(x, pre = character(0), post = character(0))"},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Capture error and decorate error message. — decorate_err_msg","text":"x object evaluate pre (character(1)) string prepend error message post (character(1)) string append error message","code":""},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Capture error and decorate error message. — decorate_err_msg","text":"x error, otherwise throws error decorated message","code":""},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":null,"dir":"Reference","previous_headings":"","what":"Deep copy teal_slices — deep_copy_filter","title":"Deep copy teal_slices — deep_copy_filter","text":"important create new copy teal_slices starting new shiny session. Otherwise, object shared multiple users created global environment shiny session starts.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deep copy teal_slices — deep_copy_filter","text":"","code":"deep_copy_filter(filter)"},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Deep copy teal_slices — deep_copy_filter","text":"filter (teal_slices)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Deep copy teal_slices — deep_copy_filter","text":"teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Adds signature protection to the datanames in the data — .add_signature_to_data","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"Adds signature protection datanames data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"","code":".add_signature_to_data(data)"},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"data (teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"teal_data additional code signature datanames","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":null,"dir":"Reference","previous_headings":"","what":"Get code that tests the integrity of the reproducible data — .get_hashes_code","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"Get code tests integrity reproducible data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"","code":".get_hashes_code(data, datanames = names(data))"},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"data (teal_data) object holding data datanames (character) names datasets","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"character vector code lines.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-smart_rbind.html","id":null,"dir":"Reference","previous_headings":"","what":"Smart rbind — .smart_rbind","title":"Smart rbind — .smart_rbind","text":"Combine data.frame objects different columns","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-smart_rbind.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Smart rbind — .smart_rbind","text":"","code":".smart_rbind(...)"},{"path":"https://insightsengineering.github.io/teal/reference/dot-smart_rbind.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Smart rbind — .smart_rbind","text":"... (data.frame)","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"An example teal module — example_module","text":"","code":"example_module( label = \"example teal module\", datanames = \"all\", transformers = list() )"},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"An example teal module — example_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"An example teal module — example_module","text":"teal module can included modules argument init().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"An example teal module — example_module","text":"","code":"app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract all transformers from modules. — extract_transformers","title":"Extract all transformers from modules. — extract_transformers","text":"Extract transformers modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract all transformers from modules. — extract_transformers","text":"","code":"extract_transformers(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract all transformers from modules. — extract_transformers","text":"modules teal_modules teal_module","code":""},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract all transformers from modules. — extract_transformers","text":"list teal_transform_module nested way input modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":null,"dir":"Reference","previous_headings":"","what":"Get client timezone — get_client_timezone","title":"Get client timezone — get_client_timezone","text":"User timezone browser may different one server. script can run register shiny input contains information timezone browser.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get client timezone — get_client_timezone","text":"","code":"get_client_timezone(ns)"},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get client timezone — get_client_timezone","text":"ns (function) namespace function passed session object shiny server. shiny modules allow proper name spacing registered input.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get client timezone — get_client_timezone","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_rcode_libraries.html","id":null,"dir":"Reference","previous_headings":"","what":"Generates library calls from current session info — get_rcode_libraries","title":"Generates library calls from current session info — get_rcode_libraries","text":"Function create multiple library calls current session info ensure reproducible code works.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_rcode_libraries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generates library calls from current session info — get_rcode_libraries","text":"","code":"get_rcode_libraries()"},{"path":"https://insightsengineering.github.io/teal/reference/get_rcode_libraries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generates library calls from current session info — get_rcode_libraries","text":"Character vector library() calls.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Get unique labels — get_unique_labels","title":"Get unique labels — get_unique_labels","text":"Get unique labels modules avoid namespace conflicts.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get unique labels — get_unique_labels","text":"","code":"get_unique_labels(labels)"},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get unique labels — get_unique_labels","text":"labels (character) vector labels","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get unique labels — get_unique_labels","text":"(character) vector unique labels","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include CSS files from /inst/css/ package directory to application header — include_css_files","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"","code":"include_css_files(pattern = \"*\")"},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"pattern (character) pattern files included","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"HTML code includes CSS files.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include JS files from /inst/js/ package directory to application header — include_js_files","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"","code":"include_js_files(pattern = NULL, except = NULL)"},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"pattern (character) pattern files included, passed system.file except (character) vector basename filenames excluded","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"HTML code includes JS files.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":null,"dir":"Reference","previous_headings":"","what":"Code to include teal CSS and JavaScript files — include_teal_css_js","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"useful want use JavaScript CSS files used teal application. also useful running standalone modules teal correct styles. Also initializes shinyjs can use .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"","code":"include_teal_css_js()"},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"shiny.tag.list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"Simply add include_teal_css_js() one UI elements.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":null,"dir":"Reference","previous_headings":"","what":"Create the server and UI function for the shiny app — init","title":"Create the server and UI function for the shiny app — init","text":"End-users: important function start teal app composed teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create the server and UI function for the shiny app — init","text":"","code":"init( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), id = character(0), landing_popup = NULL )"},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create the server and UI function for the shiny app — init","text":"data (teal_data teal_data_module) constructing data object, refer teal_data() teal_data_module(). datanames set teal_data object, defaults teal_data environment used. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices(). title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. landing_popup (teal_module_landing) Optionally, landing_popup_module show soon teal app initialized.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create the server and UI function for the shiny app — init","text":"Named list containing server UI functions.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create the server and UI function for the shiny app — init","text":"","code":"app <- init( data = within( teal_data(), { new_iris <- transform(iris, id = seq_len(nrow(iris))) new_mtcars <- transform(mtcars, id = seq_len(nrow(mtcars))) } ), modules = modules( module( label = \"data source\", server = function(input, output, session, data) {}, ui = function(id, ...) tags$div(p(\"information about data source\")), datanames = \"all\" ), example_module(label = \"example teal module\"), module( \"Iris Sepal.Length histogram\", server = function(input, output, session, data) { output$hist <- renderPlot( hist(data()[[\"new_iris\"]]$Sepal.Length) ) }, ui = function(id, ...) { ns <- NS(id) plotOutput(ns(\"hist\")) }, datanames = \"new_iris\" ) ), filter = teal_slices( teal_slice(dataname = \"new_iris\", varname = \"Species\"), teal_slice(dataname = \"new_iris\", varname = \"Sepal.Length\"), teal_slice(dataname = \"new_mtcars\", varname = \"cyl\"), exclude_varnames = list(new_iris = c(\"Sepal.Width\", \"Petal.Width\")), module_specific = TRUE, mapping = list( `example teal module` = \"new_iris Species\", `Iris Sepal.Length histogram` = \"new_iris Species\", global_filters = \"new_mtcars cyl\" ) ), title = \"App title\", header = tags$h1(\"Sample App\"), footer = tags$p(\"Sample footer\") ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":null,"dir":"Reference","previous_headings":"","what":"Does the object make use of the arg — is_arg_used","title":"Does the object make use of the arg — is_arg_used","text":"object make use arg","code":""},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Does the object make use of the arg — is_arg_used","text":"","code":"is_arg_used(modules, arg)"},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Does the object make use of the arg — is_arg_used","text":"modules (teal_module teal_modules) object arg (character(1)) names arguments checked formals teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Does the object make use of the arg — is_arg_used","text":"logical whether object makes use arg.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Landing popup module — landing_popup_module","title":"Landing popup module — landing_popup_module","text":"Creates landing welcome popup teal applications. module used display popup dialog application starts. dialog blocks access application must closed button application can viewed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Landing popup module — landing_popup_module","text":"","code":"landing_popup_module( label = \"Landing Popup\", title = NULL, content = NULL, buttons = modalButton(\"Accept\") )"},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Landing popup module — landing_popup_module","text":"label (character(1)) Label module. title (character(1)) Text displayed popup title. content (character(1), shiny.tag shiny.tag.list) content popup. Passed ... shiny::modalDialog. See examples. buttons (shiny.tag shiny.tag.list) Typically modalButton actionButton. See examples.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Landing popup module — landing_popup_module","text":"teal_module (extended teal_landing_module class) used teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Landing popup module — landing_popup_module","text":"","code":"app1 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( content = \"A place for the welcome message or a disclaimer statement.\", buttons = modalButton(\"Proceed\") ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app1$ui, app1$server) } app2 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( title = \"Welcome\", content = tags$b( \"A place for the welcome message or a disclaimer statement.\", style = \"color: red;\" ), buttons = tagList( modalButton(\"Proceed\"), actionButton(\"read\", \"Read more\", onclick = \"window.open('http://google.com', '_blank')\" ), actionButton(\"close\", \"Reject\", onclick = \"window.close()\") ) ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app2$ui, app2$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"App state management. — module_bookmark_manager","title":"App state management. — module_bookmark_manager","text":"Capture restore global (app) input state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"App state management. — module_bookmark_manager","text":"","code":"ui_bookmark_panel(id, modules) srv_bookmark_panel(id, modules) get_bookmarking_option() need_bookmarking(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"App state management. — module_bookmark_manager","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"App state management. — module_bookmark_manager","text":"Invisible NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"App state management. — module_bookmark_manager","text":"module introduces bookmarks teal apps: shiny bookmarking mechanism becomes enabled server-side bookmarks can created. bookmark manager presents button bookmark icon placed tab-bar. clicked, button creates bookmark opens modal displays bookmark URL. teal guarantee modules (teal_module objects) bookmarkable. , teal_bookmarkable attribute set TRUE. modules bookmarkable, bookmark manager modal displays warning bookmark button displays flag. order communicate external module bookmarkable, module developer set teal_bookmarkable attribute TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"App state management. — module_bookmark_manager","text":"bookmark URL contains app address /?_state_id_= suffix. directory created server, state application saved. Accessing bookmark URL opens new session app starts previously saved state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"App state management. — module_bookmark_manager","text":"enable bookmarking use either: shiny app using shinyApp(..., enableBookmarking = \"server\") (supported shinytest2) set options(shiny.bookmarkStore = \"server\") running app","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":null,"dir":"Reference","previous_headings":"","what":"Data summary — module_data_summary","title":"Data summary — module_data_summary","text":"Module utils display number rows subjects filtered unfiltered data.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data summary — module_data_summary","text":"","code":"ui_data_summary(id) srv_data_summary(id, teal_data) get_filter_overview_wrapper(teal_data) get_filter_overview(current_data, initial_data, dataname, subject_keys) get_filter_overview_array(current_data, initial_data, dataname, subject_keys) get_filter_overview_MultiAssayExperiment(current_data, initial_data, dataname)"},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data summary — module_data_summary","text":"id (character(1)) shiny module instance id. teal_data (reactive returning teal_data) current_data (object) current object (filtering transforming). initial_data (object) initial object. dataname (character(1)) subject_keys (character) names columns determine single unique subjects","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data summary — module_data_summary","text":"NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data summary — module_data_summary","text":"Handling different data classes: get_filter_overview() pseudo S3 method variants : array (data.frame, DataFrame, array, Matrix SummarizedExperiment): Method variant can applied two-dimensional objects ncol() can used. MultiAssayExperiment: summary contains counts colData experiments. data types module displays data name warning icon details. Module includes also \"Show/Hide unsupported\" button toggle rows summary table containing datasets number observations calculated.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter panel module in teal — module_filter_data","title":"Filter panel module in teal — module_filter_data","text":"Creates filter panel module teal_data object returns teal_data. build way filter panel changes anything happens (e.g. module_init_data) triggering reactive events something changed module visible. Thanks special implementation modules' data recalculated modules currently displayed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter panel module in teal — module_filter_data","text":"","code":"ui_filter_data(id) srv_filter_data(id, datasets, active_datanames, data_rv, is_active) .make_filtered_teal_data(modules, data, datasets = NULL, datanames) .observe_active_filter_changed(datasets, is_active, active_datanames, data_rv) .get_filter_expr(datasets, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter panel module in teal — module_filter_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". active_datanames (reactive returning character) module's data names data_rv (reactive returning teal_data) modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter panel module in teal — module_filter_data","text":"eventReactive containing teal_data containing filtered objects filter code. eventReactive triggers conditions met: tab selected (is_active) filters changed (get_filter_expr different previous)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Manage multiple FilteredData objects — module_filter_manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Oversee filter states across entire application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manage multiple FilteredData objects — module_filter_manager","text":"","code":"ui_filter_manager_panel(id) srv_filter_manager_panel(id, slices_global) ui_filter_manager(id) srv_filter_manager(id, slices_global) srv_module_filter_manager(id, module_fd, slices_global)"},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Manage multiple FilteredData objects — module_filter_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) containing teal_slices. module_fd (FilteredData) Object containing data filtered single teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Module returns slices_global (reactiveVal) containing teal_slices object mapping.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"slices-global","dir":"Reference","previous_headings":"","what":"Slices global","title":"Manage multiple FilteredData objects — module_filter_manager","text":"key role maintaining module-specific filter states played .slicesGlobal object. reference class holds following fields: all_slices (reactiveVal) - reactive value containing filters registered app. module_slices_api (reactiveValues) - reactive field containing references modules' FilteredData object methods. moment used srv_filter_manager display filter states table combining informations all_slices FilteredData$get_available_teal_slices(). session new filters added all_slices unless module_snapshot_manager used restore previous state. Filters all_slices can activated deactivated module linked (ways) attr(, \"mapping\") : module's filter added removed FilteredData object, information passed SlicesGlobal updates attr(, \"mapping\") accordingly. mapping changes SlicesGlobal, filters set removed module's FilteredData.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"filter-manager","dir":"Reference","previous_headings":"","what":"Filter manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Filter-manager split two parts: ui/srv_filter_manager_panel - Called whole app. module observes changes filters slices_global displays table utilizing information mapping: (TRUE) - filter active module (FALSE) - filter inactive module (NA) - filter available module ui/srv_module_filter_manager - Called teal_module. Handling filter states single module keeping module FilteredData consistent slices_global, local filters always reflected slices_global mapping vice versa.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Module for teal — module_init_data","title":"Data Module for teal — module_init_data","text":"module manages data argument srv_teal. teal framework uses teal_data(), can provided various ways: Directly teal.data::teal_data() object. automatically convert reactive teal_data. reactive object returns teal.data::teal_data() object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Module for teal — module_init_data","text":"","code":"ui_init_data(id) srv_init_data(id, data)"},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data Module for teal — module_init_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data Module for teal — module_init_data","text":"reactive object returns: Output data. data fails returned error handled (tryCatch()) rest application can respond respectively.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"reactive-teal-data-","dir":"Reference","previous_headings":"","what":"Reactive teal_data:","title":"Data Module for teal — module_init_data","text":"data application can reactively updated, prompting srv_teal() rebuild content accordingly. two methods creating interactive teal_data: Using reactive object provided outside teal application. scenario, reactivity controlled external module, srv_teal responds changes. Using teal_data_module(), embedded within teal application, allowing data resubmitted user needed. Since server teal_data_module() must return reactive teal_data object, methods (1 2) produce reactive behavior within teal application. distinction lies data control: first method involves external control, second method involves control custom module within app. details, see module_teal_data.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve labels from teal_modules — module_labels","title":"Retrieve labels from teal_modules — module_labels","text":"Retrieve labels teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve labels from teal_modules — module_labels","text":"","code":"module_labels(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve labels from teal_modules — module_labels","text":"modules (teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve labels from teal_modules — module_labels","text":"list containing labels modules. modules nested, function returns nested list labels.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract/Remove module(s) of specific class — extract_module","title":"Extract/Remove module(s) of specific class — extract_module","text":"Given teal_module teal_modules, return elements structure according class.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract/Remove module(s) of specific class — extract_module","text":"","code":"extract_module(modules, class) drop_module(modules, class)"},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract/Remove module(s) of specific class — extract_module","text":"modules (teal_modules) class class name teal_module extracted dropped.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract/Remove module(s) of specific class — extract_module","text":"extract_module, teal_module class class teal_modules containing modules class class. drop_module, opposite, teal_modules class class. teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter state snapshot management — module_snapshot_manager","title":"Filter state snapshot management — module_snapshot_manager","text":"Capture restore snapshots global (app) filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter state snapshot management — module_snapshot_manager","text":"","code":"ui_snapshot_manager_panel(id) srv_snapshot_manager_panel(id, slices_global) ui_snapshot_manager(id) srv_snapshot_manager(id, slices_global)"},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter state snapshot management — module_snapshot_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) contains teal_slices object containing teal_slices existing app, active inactive.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter state snapshot management — module_snapshot_manager","text":"list containing snapshot history, element unlisted teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter state snapshot management — module_snapshot_manager","text":"module introduces snapshots: stored descriptions filter state entire application. Snapshots allow user save current filter state application later use session, well save file order share app developer users, turn can upload session. snapshot manager accessed camera icon tabset bar. beginning session presents three icons: camera, upload, circular arrow. Clicking camera captures snapshot, clicking upload adds snapshot file applies filter states therein, clicking arrow resets initial application state. snapshots added, show rows table select button save button.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots basically teal_slices objects, however, since module served separate instance FilteredData objects require shared state, teal_slice reactiveVal teal_slices stored . Therefore, teal_slices reversibly converted list lists representation (attributes maintained). Snapshots stored reactiveVal named list. first snapshot initial state application user can add snapshot whenever see fit. every snapshot except initial one, piece UI generated contains snapshot name, select button restore snapshot, save button save file. initial snapshot restored separate \"reset\" button. saved directly user welcome capture initial state snapshot save .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"snapshot-mechanics","dir":"Reference","previous_headings":"","what":"Snapshot mechanics","title":"Filter state snapshot management — module_snapshot_manager","text":"snapshot captured, user prompted name . Names displayed since used create button ids, hood converted syntactically valid strings. New snapshot names validated valid versions unique. Leading trailing white space trimmed. module can read global state application slices_global mapping_matrix. former provides list existing teal_slices latter says slice active module. name accepted, slices_global converted list lists - snapshot. snapshot contains mapping attribute initial application state (one restored), may reflect current one, mapping_matrix transformed obtain current mapping, .e. list , passed mapping argument teal_slices(), result current mapping. substituted snapshot's mapping attribute snapshot added snapshot list. restore app state, snapshot retrieved storage rebuilt teal_slices object. state FilteredData objects (provided datasets) cleared set anew according mapping attribute snapshot. snapshot set current content slices_global. save snapshot, snapshot retrieved reassembled just like restoring, saved file slices_store(). snapshot uploaded, first added storage just like newly created one, used restore app state much like snapshot taken storage. Upon clicking upload icon user prompted file upload may choose name new snapshot. name defaults name file (extension dropped) normal naming rules apply. Loading file yields teal_slices object, disassembled storage used directly restoring app state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"transferring-snapshots","dir":"Reference","previous_headings":"","what":"Transferring snapshots","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots uploaded disk used application come , .e. application uses data modules. ensure case, init stamps teal_slices app id stored app_id attribute teal_slices object. snapshot restored file, app_id compared current app state match snapshot admitted session.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"bookmarks","dir":"Reference","previous_headings":"","what":"Bookmarks","title":"Filter state snapshot management — module_snapshot_manager","text":"onBookmark callback creates snapshot current filter state. done app session, module session. (snapshot retrieved module_teal order set initial app state restored app.) snapshot, previous snapshot history dumped values.rds file .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Filter state snapshot management — module_snapshot_manager","text":"Aleksander Chlebowski","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":null,"dir":"Reference","previous_headings":"","what":"teal main module — module_teal","title":"teal main module — module_teal","text":"Module create teal app. module can called directly instead init() included custom application. Please note init() adds reporter_previewer_module automatically, case calling ui/srv_teal directly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal main module — module_teal","text":"","code":"ui_teal( id, modules, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal main module — module_teal","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal main module — module_teal","text":"NULL invisibly","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal main module — module_teal","text":"Module responsible creating main shiny app layout initializing necessary components. module establishes reactive connection input data every component app. Reactive change data passed argument, reloads app possibly keeps input settings user can continue one left .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"data-flow-in-teal-application","dir":"Reference","previous_headings":"","what":"data flow in teal application","title":"teal main module — module_teal","text":"module supports multiple data inputs eventually, converted reactive returning teal_data module. reactive teal_data object several actions performed: data loading module_init_data data filtering module_filter_data data transformation module_transform_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"fallback-on-failure","dir":"Reference","previous_headings":"","what":"Fallback on failure","title":"teal main module — module_teal","text":"teal designed way app never crash error introduced custom shiny module provided app developer (e.g. teal_data_module(), teal_transform_module()). module returns failing object, app halt evaluation display warning message. App user always chance fix improper input continue without restarting session.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute and validate teal_data_module — module_teal_data","title":"Execute and validate teal_data_module — module_teal_data","text":"low level module handle teal_data_module execution validation. teal_transform_module() inherits teal_data_module() handled module . srv_teal() accepts various data objects eventually transformed reactive teal_data() standard data class whole teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute and validate teal_data_module — module_teal_data","text":"","code":"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) )"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute and validate teal_data_module — module_teal_data","text":"id (character(1)) Module id data_module (teal_data_module) modules (teal_modules teal_module) datanames validation purpose validate_shiny_silent_error (logical) TRUE, shiny.silent.error validated is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message. data (reactive teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute and validate teal_data_module — module_teal_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"data-validation","dir":"Reference","previous_headings":"","what":"data validation","title":"Execute and validate teal_data_module — module_teal_data","text":"Executed teal_data_module() validated output validated consistency. Output data invalid : teal_data_module() invalid server return reactive. Immediately crashes app! reactive throws shiny.error - happens module creating teal_data() fails. reactive returns qenv.error - happens teal_data() evaluates failing code. reactive object return teal_data(). teal_data() object lacks datanames specified modules argument. teal (observers srv_teal) always waits render app reactive teal_data returned. error 2-4 occurs, relevant error message displayed app user. issue resolved, app continue run. teal guarantees errors data crash app (except error 1).","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"Generate lockfile application's environment reproducibility","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"","code":"ui_teal_lockfile(id) srv_teal_lockfile(id) .teal_lockfile_process_invoke(lockfile_path) .renv_snapshot(lockfile_path) .is_lockfile_deps_installed() .is_disabled_lockfile_scenario()"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"lockfile_path (character) path lockfile.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"NULL","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"different-ways-of-creating-lockfile","dir":"Reference","previous_headings":"","what":"Different ways of creating lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"teal leverages renv::snapshot(), offers multiple methods lockfile creation. Working directory lockfile: teal, default, create implicit type lockfile uses renv::dependencies() detect R packages current project's working directory. DESCRIPTION-based lockfile: generate lockfile based DESCRIPTION file working directory, set renv::settings$snapshot.type(\"explicit\"). naming convention type follows renv::snapshot(). \"explicit\" type, refer renv::settings$package.dependency.fields() DESCRIPTION fields included lockfile. Custom files-based lockfile: specify custom files basis lockfile, set renv::settings$snapshot.type(\"custom\") configure renv.snapshot.filter option.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"lockfile-usage","dir":"Reference","previous_headings":"","what":"lockfile usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"creating lockfile, can restore application's environment using renv::restore().","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls all modules — module_teal_module","title":"Calls all modules — module_teal_module","text":"UI side teal_modules translated tabsetPanel teal_module tabPanel. , UI server called recursively tab separate module reflect nested structure modules argument.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls all modules — module_teal_module","text":"","code":"ui_teal_module(id, modules, depth = 0L) # Default S3 method ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_modules' ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_module' ui_teal_module(id, modules, depth = 0L) srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # Default S3 method srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_modules' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_module' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) )"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls all modules — module_teal_module","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth (integer(1)) number helps determine depth modules nesting. data_rv (reactive returning teal_data) datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". slices_global (reactiveVal returning modules_teal_slices) see module_filter_manager data_load_status (reactive returning character) Determines action dependent data loading status: \"ok\" teal_data returned data loading. \"teal_data_module failed\" teal_data_module() return teal_data. Disables tabs buttons. \"external failed\" reactive passed srv_teal(data) return teal_data. Hides whole tab panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls all modules — module_teal_module","text":"output currently active module. srv_teal_module.teal_module returns reactiveVal containing output called module. srv_teal_module.teal_modules returns output module selected input$active_tab.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":null,"dir":"Reference","previous_headings":"","what":"UI and server modules of teal — module_teal_with_splash","title":"UI and server modules of teal — module_teal_with_splash","text":"Please use module_teal instead.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"UI and server modules of teal — module_teal_with_splash","text":"","code":"ui_teal_with_splash( id, data, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal_with_splash(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"UI and server modules of teal — module_teal_with_splash","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"UI and server modules of teal — module_teal_with_splash","text":"Returns reactive expression containing teal_data object data loaded NULL .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Module to transform reactive teal_data — module_transform_data","title":"Module to transform reactive teal_data — module_transform_data","text":"Module calls multiple module_teal_data sequence reactive teal_data output one module handed following module's input.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Module to transform reactive teal_data — module_transform_data","text":"","code":"ui_transform_data(id, transformers = list(), class = \"well\") srv_transform_data( id, data, transformers = list(), modules, is_transformer_failed = reactiveValues() )"},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Module to transform reactive teal_data — module_transform_data","text":"id (character(1)) Module id transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). data (reactive teal_data) modules (teal_modules teal_module) datanames validation purpose is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Module to transform reactive teal_data — module_transform_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"Retrieve teal_bookmarkable attribute teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"","code":"modules_bookmarkable(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"modules (teal_modules teal_module) object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"named list structure modules TRUE FALSE values indicating whether module bookmarkable.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":null,"dir":"Reference","previous_headings":"","what":"Get module depth — modules_depth","title":"Get module depth — modules_depth","text":"Depth starts 0, single teal.module depth 0. Nesting increases overall depth 1.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get module depth — modules_depth","text":"","code":"modules_depth(modules, depth = 0L)"},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get module depth — modules_depth","text":"modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth optional integer determining current depth level","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get module depth — modules_depth","text":"Depth level given module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":null,"dir":"Reference","previous_headings":"","what":"Template function for TealReportCard creation and customization — report_card_template","title":"Template function for TealReportCard creation and customization — report_card_template","text":"function generates report card title, optional description, option append filter state list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Template function for TealReportCard creation and customization — report_card_template","text":"","code":"report_card_template( title, label, description = NULL, with_filter, filter_panel_api )"},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Template function for TealReportCard creation and customization — report_card_template","text":"title (character(1)) title card (unless overwritten label) label (character(1)) label provided user adding card description (character(1)) optional, additional description with_filter (logical(1)) flag indicating add filter state filter_panel_api (FilterPanelAPI) object API allows generation filter state report","code":""},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Template function for TealReportCard creation and customization — report_card_template","text":"(TealReportCard) populated title, description filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a teal module for previewing a report — reporter_previewer_module","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"function wraps teal.reporter::reporter_previewer_ui() teal.reporter::reporter_previewer_srv() teal_module used teal applications. creating teal application using init() module added application automatically teal_modules support report generation.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"","code":"reporter_previewer_module(label = \"Report previewer\", server_args = list())"},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server_args (named list) Arguments passed teal.reporter::reporter_previewer_srv().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"teal_module (extended teal_module_previewer class) containing teal.reporter previewer functionality.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":null,"dir":"Reference","previous_headings":"","what":"Restore value from bookmark. — restoreValue","title":"Restore value from bookmark. — restoreValue","text":"Get value bookmark return default.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Restore value from bookmark. — restoreValue","text":"","code":"restoreValue(value, default)"},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Restore value from bookmark. — restoreValue","text":"value (character(1)) name value restore default fallback value","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Restore value from bookmark. — restoreValue","text":"application restored server-side bookmark, variable specified value values environment. Otherwise default.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Restore value from bookmark. — restoreValue","text":"Bookmarks can store inputs also arbitrary values. values stored onBookmark callbacks restored onBookmarked callbacks, placed values environment session$restoreContext field. Using teal_data_module makes impossible run callbacks app becomes ready modules execute callbacks registered. cases stored values can still recovered session object directly. Note variable names values environment prefixed module name space names, therefore, using function modules, value must run name space function.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Run JS file from /inst/js/ package directory — run_js_files","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"triggered server execute client rather triggered directly client. Unlike include_js_files includes JavaScript functions, run_js actually executes JavaScript functions.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"","code":"run_js_files(files)"},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"files (character) vector filenames.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":null,"dir":"Reference","previous_headings":"","what":"Show R code modal — show_rcode_modal","title":"Show R code modal — show_rcode_modal","text":"Use shiny::showModal() function show R code inside.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Show R code modal — show_rcode_modal","text":"","code":"show_rcode_modal(title = NULL, rcode, session = getDefaultReactiveDomain())"},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Show R code modal — show_rcode_modal","text":"title (character(1)) Title modal, displayed first comment R code. rcode (character) vector R code show inside modal. session (ShinySession) optional shiny session object, defaults shiny::getDefaultReactiveDomain().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Show R code modal — show_rcode_modal","text":"shiny::showModal()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":null,"dir":"Reference","previous_headings":"","what":"Store and restore teal_slices object — slices_store","title":"Store and restore teal_slices object — slices_store","text":"Functions write teal_slices object file JSON format, also restore object disk.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Store and restore teal_slices object — slices_store","text":"","code":"slices_store(tss, file) slices_restore(file)"},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Store and restore teal_slices object — slices_store","text":"tss (teal_slices) object stored. file (character(1)) file path teal_slices object saved restored. file extension \".json\".","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Store and restore teal_slices object — slices_store","text":"slices_store returns NULL, invisibly. slices_restore returns teal_slices object restored file.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Store and restore teal_slices object — slices_store","text":"Date date time objects stored following formats: Date class converted \"ISO8601\" standard (YYYY-MM-DD). POSIX*t classes converted character using format.POSIX*t(usetz = TRUE, tz = \"UTC\") (YYYY-MM-DD HH:MM:SS UTC, UTC Coordinated Universal Time timezone short-code). format assumed slices_restore. POSIX*t objects selected choices fields teal_slice objects always printed UTC timezone well.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a tdata object — tdata","title":"Create a tdata object — tdata","text":"Recent changes teal cause modules fail modules expect tdata object passed data argument instead receive teal_data object, additionally wrapped reactive expression server functions. order easily adapt modules without proper refactor, use function downgrade data argument.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a tdata object — tdata","text":"","code":"new_tdata(...) tdata2env(...) get_code_tdata(...) # S3 method for class 'tdata' join_keys(...) get_metadata(...) as_tdata(...)"},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a tdata object — tdata","text":"... ignored","code":""},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a tdata object — tdata","text":"nothing","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal-package.html","id":null,"dir":"Reference","previous_headings":"","what":"teal: Interactive exploration of clinical trials data — teal-package","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"teal package provides shiny based framework creating interactive data analysis environment.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"learn mode package, visit project website read init() manual page.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/teal-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"Maintainer: Dawid Kaledkowski dawid.kaledkowski@roche.com (ORCID) Authors: Pawel Rucki pawel.rucki@roche.com Aleksander Chlebowski aleksander.chlebowski@contractors.roche.com (ORCID) Andre Verissimo andre.verissimo@roche.com (ORCID) Kartikeya Kirar kartikeya.kirar@businesspartner.roche.com Vedha Viyash vedha.viyash@roche.com Marcin Kosinski marcin.kosinski.mk1@roche.com Adrian Waddell adrian.waddell@gene.com Nikolas Burkoff Mahmoud Hallal Maciej Nasinski Konrad Pagacz Junlue Zhao Tadeusz Lewandowski contributors: Chendi Liao chendi.liao@roche.com [reviewer] Dony Unardi unardid@gene.com [reviewer] F. Hoffmann-La Roche AG [copyright holder, funder] Maximilian Mordig [contributor]","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal applications — teal_data_module","title":"Data module for teal applications — teal_data_module","text":"Create teal_data_module object evaluate code history tracking.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal applications — teal_data_module","text":"","code":"teal_data_module(ui, server, label = \"data module\", once = TRUE) # S4 method for class 'teal_data_module,character' eval_code(object, code) # S3 method for class 'teal_data_module' within(data, expr, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal applications — teal_data_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id)) shiny module server function; must take id argument; must return reactive expression containing teal_data object label (character(1)) Label module. (logical(1)) TRUE, data module shown disappear successful data loading. App user longer able interact module anymore. FALSE, data module can reused multiple times. App user able interact change data output module multiple times. object (teal_data_module) code (character language) code evaluate. character, comments retained. data (teal_data_module) object expr (expression) evaluate. Must inline code. See ... See Details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data module for teal applications — teal_data_module","text":"teal_data_module returns list class teal_data_module containing two elements, ui server provided via arguments. eval_code returns teal_data_module object delayed evaluation code module run. within returns teal_data_module object delayed evaluation expr module run.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal applications — teal_data_module","text":"teal_data_module creates shiny module interactively supply modify data teal application. module allows running code (creation modification) app starts reloads. body server function run app rather global environment. means run every time app starts, use sparingly. Pass module instead teal_data object call init(). Note server function must always return teal_data object wrapped reactive expression. See vignette vignette(\"data--shiny-module\", package = \"teal\") details. eval_code evaluates given code environment teal_data object created teal_data_module. code added @code slot teal_data. within convenience function evaluating inline code inside environment teal_data_module. accepts inline expressions (simple compound) allows injecting values expr ... argument: name:value pairs passed ..., name expr replaced value.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal applications — teal_data_module","text":"","code":"tdm <- teal_data_module( ui = function(id) { ns <- NS(id) actionButton(ns(\"submit\"), label = \"Load data\") }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) eval_code(tdm, \"dataset1 <- subset(dataset1, Species == 'virginica')\") #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE within(tdm, dataset1 <- subset(dataset1, Species == \"virginica\")) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE # use additional parameter for expression value substitution. valid_species <- \"versicolor\" within(tdm, dataset1 <- subset(dataset1, Species %in% species), species = valid_species) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a FilteredData — teal_data_to_filtered_data","title":"Create a FilteredData — teal_data_to_filtered_data","text":"Create FilteredData object teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a FilteredData — teal_data_to_filtered_data","text":"","code":"teal_data_to_filtered_data(x, datanames = names(x))"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a FilteredData — teal_data_to_filtered_data","text":"x (teal_data) object datanames (character) vector data set names include; must subset names(x)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a FilteredData — teal_data_to_filtered_data","text":"FilteredData object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":null,"dir":"Reference","previous_headings":"","what":"teal_data utils — teal_data_utilities","title":"teal_data utils — teal_data_utilities","text":"teal need recreate teal_data object due two operations: need append filter-data code objects evaluated FilteredData want avoid double-evaluation. need subset teal_data datanames used module, shorten obtainable R-code","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal_data utils — teal_data_utilities","text":"","code":".append_evaluated_code(data, code) .append_modified_data(data, objects)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal_data utils — teal_data_utilities","text":"data (teal_data) code (character) code append object's code slot. objects (list) objects append object's environment.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal_data utils — teal_data_utilities","text":"modified teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal_data utils — teal_data_utilities","text":"Due recreation teal_data object done simply using public teal.code teal.data methods.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":null,"dir":"Reference","previous_headings":"","what":"Create teal_module and teal_modules objects — teal_modules","title":"Create teal_module and teal_modules objects — teal_modules","text":"Create nested tab structure embed modules teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"module( label = \"module\", server = function(id, data, ...) moduleServer(id, function(input, output, session) NULL), ui = function(id, ...) tags$p(paste0(\"This module has no UI (id: \", id, \" )\")), filters, datanames = \"all\", server_args = NULL, ui_args = NULL, transformers = list() ) modules(..., label = \"root\") # S3 method for class 'teal_module' format( x, indent = 0, is_last = FALSE, parent_prefix = \"\", what = c(\"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\"), ... ) # S3 method for class 'teal_modules' format(x, indent = 0, is_root = TRUE, is_last = FALSE, parent_prefix = \"\", ...) # S3 method for class 'teal_module' print(x, ...) # S3 method for class 'teal_modules' print(x, ...) set_datanames(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create teal_module and teal_modules objects — teal_modules","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server (function) shiny module following arguments: id - teal set proper shiny namespace module (see shiny::moduleServer()). input, output, session - (optional; recommended) provided, shiny::callModule() used call module. shiny 1.5.0, recommended way use shiny::moduleServer() instead require arguments. data (optional) provided, module called teal_data object (.e. list reactive (filtered) data specified filters argument) value argument. datasets (optional) provided, module called FilteredData object value argument. (See teal.slice::FilteredData). reporter (optional) provided, module called Reporter object value argument. (See teal.reporter::Reporter). filter_panel_api (optional) provided, module called FilterPanelAPI object value argument. (See teal.slice::FilterPanelAPI). ... (optional) provided, server_args elements passed module named argument .... ui (function) shiny UI module function following arguments: id - teal set proper shiny namespace module. ... (optional) provided, ui_args elements passed module named argument .... filters (character) Deprecated. Use datanames instead. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. server_args (named list) additional arguments passed server function. ui_args (named list) additional arguments passed UI function. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). ... modules(): (teal_module teal_modules) Objects wrap tab. format() print(): Arguments passed methods. x (teal_module teal_modules) Object format/print. indent (integer(1)) Indention level; nested element indented one level . is_last (logical(1)) Whether last item parent's children list. Affects tree branch character used (L- vs |-) parent_prefix (character(1)) prefix inherited parent nodes, used maintain tree structure nested levels (character) Specifies metadata display. Possible values: \"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\" is_root (logical(1)) Whether root node tree. used format.teal_modules(). Determines whether show \"TEAL ROOT\" header modules (teal_module teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() returns object class teal_module. modules() returns teal_modules object contains following fields: label: taken label argument. children: list containing objects passed .... List elements named label attribute converted valid shiny id.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() creates instance teal_module can placed teal application. modules() shapes structure application organizing teal_module within navigation panel. wraps teal_module teal_modules objects teal_modules object, results nested structure corresponding nested tabs final application. Note modules() label comes ..., must passed named argument, otherwise captured .... labels \"global_filters\" \"Report previewer\" reserved used mapping argument teal_slices() report previewer module reporter_previewer_module(), respectively.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"restricting-datasets-used-by-teal-module-","dir":"Reference","previous_headings":"","what":"Restricting datasets used by teal_module:","title":"Create teal_module and teal_modules objects — teal_modules","text":"datanames argument controls datasets used module’s server. datasets, passed via server's data argument, ones shown module's tab. datanames set \"\", datasets data object treated relevant. However, may include unnecessary datasets, : Proxy variables column modifications Temporary datasets used create final versions Connection objects exclude irrelevant datasets, use set_datanames() function change datanames \"\" specific names. Trying modify non-\"\" values set_datanames() result warning. Datasets names starting . ignored globally unless explicitly listed datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"datanames-with-transformers","dir":"Reference","previous_headings":"","what":"datanames with transformers","title":"Create teal_module and teal_modules objects — teal_modules","text":"transformers specified, datanames added module’s datanames, changes behavior follows: module(datanames) NULL transformers defined datanames, sidebar appear showing transformers' datasets, instead hidden. module(datanames) set specific values transformer datanames = \"\", module may receive extra datasets unnecessary","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"library(shiny) module_1 <- module( label = \"a module\", server = function(id, data) { moduleServer( id, module = function(input, output, session) { output$data <- renderDataTable(data()[[\"iris\"]]) } ) }, ui = function(id) { ns <- NS(id) tagList(dataTableOutput(ns(\"data\"))) }, datanames = \"all\" ) module_2 <- module( label = \"another module\", server = function(id) { moduleServer( id, module = function(input, output, session) { output$text <- renderText(\"Another Module\") } ) }, ui = function(id) { ns <- NS(id) tagList(textOutput(ns(\"text\"))) }, datanames = NULL ) modules <- modules( label = \"modules\", modules( label = \"nested modules\", module_1 ), module_2 ) app <- init( data = teal_data(iris = iris), modules = modules ) if (interactive()) { shinyApp(app$ui, app$server) } mod <- module( label = \"My Custom Module\", server = function(id, data, ...) {}, ui = function(id, ...) {}, datanames = c(\"ADSL\", \"ADTTE\"), transformers = list(), ui_args = list(a = 1, b = \"b\"), server_args = list(x = 5, y = list(p = 1)) ) cat(format(mod)) #> |- My Custom Module #> | |- Datasets : ADSL, ADTTE #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : a (numeric) #> | | b (character) #> | |- Server Arguments : x (numeric) #> | | y (list) #> | L- Transformers : custom_module <- function( label = \"label\", ui_args = NULL, server_args = NULL, datanames = \"all\", transformers = list(), bk = FALSE) { ans <- module( label, server = function(id, data, ...) {}, ui = function(id, ...) { }, datanames = datanames, transformers = transformers, ui_args = ui_args, server_args = server_args ) attr(ans, \"teal_bookmarkable\") <- bk ans } dummy_transformer <- teal_transform_module( label = \"Dummy Transform\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) plot_transformer <- teal_transform_module( label = \"Plot Settings\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) complete_modules <- modules( custom_module( label = \"Data Overview\", datanames = c(\"ADSL\", \"ADAE\", \"ADVS\"), ui_args = list( view_type = \"table\", page_size = 10, filters = c(\"ARM\", \"SEX\", \"RACE\") ), server_args = list( cache = TRUE, debounce = 1000 ), transformers = list(dummy_transformer), bk = TRUE ), modules( label = \"Nested 1\", custom_module( label = \"Interactive Plots\", datanames = c(\"ADSL\", \"ADVS\"), ui_args = list( plot_type = c(\"scatter\", \"box\", \"line\"), height = 600, width = 800, color_scheme = \"viridis\" ), server_args = list( render_type = \"svg\", cache_plots = TRUE ), transformers = list(dummy_transformer, plot_transformer), bk = TRUE ), modules( label = \"Nested 2\", custom_module( label = \"Summary Statistics\", datanames = \"ADSL\", ui_args = list( stats = c(\"mean\", \"median\", \"sd\", \"range\"), grouping = c(\"ARM\", \"SEX\") ) ), modules( label = \"Labeled nested modules\", custom_module( label = \"Subgroup Analysis\", datanames = c(\"ADSL\", \"ADAE\"), ui_args = list( subgroups = c(\"AGE\", \"SEX\", \"RACE\"), analysis_type = \"stratified\" ), bk = TRUE ) ), modules(custom_module(label = \"Subgroup Analysis in non-labled modules\")) ) ), custom_module(\"Non-nested module\") ) cat(format(complete_modules)) #> TEAL ROOT #> |- Data Overview #> | |- Datasets : ADSL, ADAE, ADVS #> | |- Properties: #> | | |- Bookmarkable : TRUE #> | | L- Reportable : FALSE #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- Datasets : ADSL, ADVS #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- Datasets : ADSL #> | | |- Properties: #> | | | |- Bookmarkable : FALSE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- Datasets : ADSL, ADAE #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- Datasets : all #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- Datasets : all #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : cat(format(complete_modules, what = c(\"ui_args\", \"server_args\", \"transformers\"))) #> TEAL ROOT #> |- Data Overview #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : # change the module's datanames set_datanames(module(datanames = \"all\"), \"a\") #> |- module #> | |- Datasets : a #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : # change modules' datanames set_datanames( modules( module(datanames = \"all\"), module(datanames = \"a\") ), \"b\" ) #> Warning: Not possible to modify datanames of the module module. set_datanames() can only change datanames if it was set to \"all\". #> TEAL ROOT #> |- module #> | |- Datasets : b #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- module #> |- Datasets : a #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers :"},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter settings for teal applications — teal_slices","title":"Filter settings for teal applications — teal_slices","text":"Specify initial filter states filtering settings teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter settings for teal applications — teal_slices","text":"","code":"teal_slices( ..., exclude_varnames = NULL, include_varnames = NULL, count_type = NULL, allow_add = TRUE, module_specific = FALSE, mapping, app_id = NULL ) as.teal_slices(x) # S3 method for class 'teal_slices' c(...)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter settings for teal applications — teal_slices","text":"... number teal_slice objects. include_varnames, exclude_varnames (named lists character) list names match names data sets vector elements match variable names respective data sets; specify variables allowed filtered; see Details. count_type new feature. kindly share opinions teal.slice's GitHub repository. (character(1)) string specifying observations tallied filter states. Possible options: \"none\" (default) counts single FilterState show unfiltered number . \"\" counts single FilterState show number observation filtered unfiltered dataset. Note, issues reported using option MultiAssayExperiment. Please make sure adding new filters fail target platform deploying production. allow_add (logical(1)) logical flag specifying whether user able add new filters module_specific (logical(1)) optional, FALSE (default) one filter panel applied modules. filters shared modules. TRUE filter panel module-specific. Modules can different set filters specified - see mapping argument. mapping new feature. kindly share opinions teal's GitHub repository. (named list) specifies filters active modules app start. Elements contain character vector teal_slice ids (see teal.slice::teal_slice). Names list correspond teal_module label set module() function. ids listed \"global_filters active modules. missing, filters applied modules. empty list, filters available modules start inactive. module_specific FALSE, global_filters active start. app_id (character(1)) internal use , set manually. Added init teal_slices can matched app used. Used verifying snapshots uploaded file. See snapshot. x (list) lists convert teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter settings for teal applications — teal_slices","text":"teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter settings for teal applications — teal_slices","text":"Produces teal_slices object. teal_slice components specify filter states active app starts. Attributes (created named arguments) configure way app applies filters. See argument descriptions details.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Filter settings for teal applications — teal_slices","text":"","code":"filter <- teal_slices( teal_slice(dataname = \"iris\", varname = \"Species\", id = \"species\"), teal_slice(dataname = \"iris\", varname = \"Sepal.Length\", id = \"sepal_length\"), teal_slice( dataname = \"iris\", id = \"long_petals\", title = \"Long petals\", expr = \"Petal.Length > 5\" ), teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"mtcars_mpg\"), mapping = list( module1 = c(\"species\", \"sepal_length\"), module2 = c(\"mtcars_mpg\"), global_filters = \"long_petals\" ) ) app <- init( data = teal_data(iris = iris, mtcars = mtcars), modules = list( module(\"module1\"), module(\"module2\") ), filter = filter ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal transformers. — teal_transform_module","title":"Data module for teal transformers. — teal_transform_module","text":"Create teal_data_module object custom transformation data pre-processing passing data module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"teal_transform_module( ui = function(id) NULL, server = function(id, data) data, label = \"transform module\", datanames = character(0) )"},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal transformers. — teal_transform_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id, data)) shiny module server function; takes id data argument, id module id data reactive teal_data input. server function must return reactive expression containing teal_data object. server function definition use eventReactive may lead unexpected behavior. See vignettes(\"data-transform--shiny-module\") information. label (character(1)) Label module. datanames (character) Names datasets relevant module evaluate. set character(0) module receive modules() datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal transformers. — teal_transform_module","text":"teal_transform_module creates teal_data_module object transform data teal application. transformation happens data passed filtering activity teal. transformed data sent server teal_module(). See vignette vignette(\"data-transform--shiny-module\", package = \"teal\") details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", datanames = \"iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Subset n rows\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) )"},{"path":"https://insightsengineering.github.io/teal/reference/validate_app_title_tag.html","id":null,"dir":"Reference","previous_headings":"","what":"Function for validating the title parameter of teal::init — validate_app_title_tag","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"Checks input title teal::init create valid title favicon tag.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_app_title_tag.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"","code":"validate_app_title_tag(shiny_tag)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_app_title_tag.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"shiny_tag (shiny.tag) Object validate valid title.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"validate_has_data( x, min_nrow = NULL, complete = FALSE, allow_inf = TRUE, msg = NULL )"},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"x (data.frame) min_nrow (numeric(1)) Minimum allowed number rows x. complete (logical(1)) Flag specifying whether check complete cases. Defaults FALSE. allow_inf (logical(1)) Flag specifying whether allow infinite values. Defaults TRUE. msg (character(1)) Additional message display alongside default message.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"library(teal) ui <- fluidPage( sliderInput(\"len\", \"Max Length of Sepal\", min = 4.3, max = 7.9, value = 5 ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_df <- iris[iris$Sepal.Length <= input$len, ] validate_has_data( iris_df, min_nrow = 10, complete = FALSE, msg = \"Please adjust Max Length of Sepal\" ) hist(iris_df$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"validate_has_elements(x, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"x vector msg message display","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\"), each = 15) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"arm_summary\") ) server <- function(input, output) { output$arm_summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_has_elements(sample_1, \"No subjects in strata1.\") validate_has_elements(sample_2, \"No subjects in strata2.\") paste0( \"Number of samples in: strata1=\", length(sample_1), \" comparions strata2=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"validate_has_variable(data, varname, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that dataset contains specific variable — validate_has_variable","text":"data (data.frame) varname (character(1)) name variable check data msg (character(1)) message display data include varname","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that dataset contains specific variable — validate_has_variable","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20) ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_has_variable(data, input$var) paste0(\"Selected treatment variables: \", paste(input$var, collapse = \", \")) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector includes all expected values — validate_in","text":"","code":"validate_in(x, choices, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector includes all expected values — validate_in","text":"x Vector values test. choices Vector test . msg (character(1)) Error message display elements x elements choices.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector includes all expected values — validate_in","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector includes all expected values — validate_in","text":"","code":"ui <- fluidPage( selectInput( \"species\", \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\", \"unknown species\"), selected = \"setosa\", multiple = FALSE ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderPrint({ validate_in(input$species, iris$Species, \"Species does not exist.\") nrow(iris[iris$Species == input$species, ]) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":null,"dir":"Reference","previous_headings":"","what":"Send input validation messages to output — validate_inputs","title":"Send input validation messages to output — validate_inputs","text":"Captures messages InputValidator objects collates one message passed validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Send input validation messages to output — validate_inputs","text":"","code":"validate_inputs(..., header = \"Some inputs require attention\")"},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Send input validation messages to output — validate_inputs","text":"... either number InputValidator objects optionally named, possibly nested list InputValidator objects, see Details header (character(1)) generic validation message; set NULL omit","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Send input validation messages to output — validate_inputs","text":"Returns NULL final validation call passes shiny.silent.error fails.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Send input validation messages to output — validate_inputs","text":"shiny::validate used withhold rendering output element certain conditions met print validation message place output element. shinyvalidate::InputValidator allows validate input elements display specific messages respective input widgets. validate_inputs provides hybrid solution. Given InputValidator object, messages corresponding inputs fail validation extracted placed one validation message passed validate/need call. way input validator messages repeated output. ... argument accepts number InputValidator objects nested list objects. validators passed directly, messages printed together one (optional) header message specified header. list passed, messages grouped validator. list's names used headers respective message groups. neither nested list elements named, header message taken header.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Send input validation messages to output — validate_inputs","text":"","code":"library(shiny) library(shinyvalidate) ui <- fluidPage( selectInput(\"method\", \"validation method\", c(\"sequential\", \"combined\", \"grouped\")), sidebarLayout( sidebarPanel( selectInput(\"letter\", \"select a letter:\", c(letters[1:3], LETTERS[4:6])), selectInput(\"number\", \"select a number:\", 1:6), tags$br(), selectInput(\"color\", \"select a color:\", c(\"black\", \"indianred2\", \"springgreen2\", \"cornflowerblue\"), multiple = TRUE ), sliderInput(\"size\", \"select point size:\", min = 0.1, max = 4, value = 0.25 ) ), mainPanel(plotOutput(\"plot\")) ) ) server <- function(input, output) { # set up input validation iv <- InputValidator$new() iv$add_rule(\"letter\", sv_in_set(LETTERS, \"choose a capital letter\")) iv$add_rule(\"number\", function(x) { if (as.integer(x) %% 2L == 1L) \"choose an even number\" }) iv$enable() # more input validation iv_par <- InputValidator$new() iv_par$add_rule(\"color\", sv_required(message = \"choose a color\")) iv_par$add_rule(\"color\", function(x) { if (length(x) > 1L) \"choose only one color\" }) iv_par$add_rule( \"size\", sv_between( left = 0.5, right = 3, message_fmt = \"choose a value between {left} and {right}\" ) ) iv_par$enable() output$plot <- renderPlot({ # validate output switch(input[[\"method\"]], \"sequential\" = { validate_inputs(iv) validate_inputs(iv_par, header = \"Set proper graphical parameters\") }, \"combined\" = validate_inputs(iv, iv_par), \"grouped\" = validate_inputs(list( \"Some inputs require attention\" = iv, \"Set proper graphical parameters\" = iv_par )) ) plot(faithful$eruptions ~ faithful$waiting, las = 1, pch = 16, col = input[[\"color\"]], cex = input[[\"size\"]] ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"validate_n_levels(x, min_levels = 1, max_levels = 12, var_name)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that variables has expected number of levels — validate_n_levels","text":"x variable name. x factor, unique values treated levels. min_levels cutoff minimum number levels x max_levels cutoff maximum number levels x var_name name variable validated use validation message","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that variables has expected number of levels — validate_n_levels","text":"number levels x less min_levels greater max_levels validation fail. function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20), three = rep(c(\"a\", \"b\", \"c\"), length.out = 20), four = rep(c(\"a\", \"b\", \"c\", \"d\"), length.out = 20), stringsAsFactors = TRUE ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_n_levels(data[[input$var]], min_levels = 2, max_levels = 15, var_name = input$var) paste0( \"Levels of selected treatment variable: \", paste(levels(data[[input$var]]), collapse = \", \" ) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"validate_no_intersection(x, y, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates no intersection between two vectors — validate_no_intersection","text":"x vector y vector msg (character(1)) message display x y intersect","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates no intersection between two vectors — validate_no_intersection","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\", \"C\"), each = 10) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_no_intersection( sample_1, sample_2, \"subjects within strata1 and strata2 cannot overlap\" ) paste0( \"Number of subject in: reference treatment=\", length(sample_1), \" comparions treatment=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"validate_one_row_per_id(x, key = c(\"USUBJID\", \"STUDYID\"))"},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"x (data.frame) key (character) Vector ID variables x identify unique records.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"iris$id <- rep(1:50, times = 3) ui <- fluidPage( selectInput( inputId = \"species\", label = \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\"), selected = \"setosa\", multiple = TRUE ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_f <- iris[iris$Species %in% input$species, ] validate_one_row_per_id(iris_f, key = c(\"id\")) hist(iris_f$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-15-2-9084","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.2.9084","text":"Possible call ui_teal srv_teal directly application delivering data argument reactive returning teal_data object. #669 Introduced teal_transform_module provide way interactively modify data delivered teal_module’s server. #1228 Introduced new argument = FALSE teal_data_module possibly reload data run time. Possibility download lockfile restore app session reproducibility. #479 Introduced function set_datanames() change datanames teal_module. Datasets name starts . ignored module’s datanames set \"\".","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-15-2-9084","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.2.9084","text":"Setting datanames() data passed teal application longer effect. order change teal_module’s datanames one modify module$datanames. landing_popup_module() needs passed landing_popup argument init instead passed module modules argument init. teal longer re-export %>%. Please load library(magrittr) instead use |> base.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancement-0-15-2-9084","dir":"Changelog","previous_headings":"","what":"Enhancement","title":"teal 0.15.2.9084","text":"Enhanced system data validation display error messages. Easier way call javascript events setting $(document).ready(function() { ... }). #1114 Provided progress bar modules loading data filtering teal app startup. Filter mapping display separate icon tab. Environment data passed teal_module’s server consists unfiltered datasets contained .raw_data.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0152","dir":"Changelog","previous_headings":"","what":"teal 0.15.2","title":"teal 0.15.2","text":"CRAN release: 2024-03-07","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-15-2","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.2","text":"Fixed bug handling datanames modules crashed module-specific applications filtering child datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0151","dir":"Changelog","previous_headings":"","what":"teal 0.15.1","title":"teal 0.15.1","text":"CRAN release: 2024-02-22","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-15-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.1","text":"Fixed bug stopped module_specific feature teal module specified datanames length 1.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-15-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.1","text":"Updated links vignettes","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0150","dir":"Changelog","previous_headings":"","what":"teal 0.15.0","title":"teal 0.15.0","text":"CRAN release: 2024-02-08","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-15-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.0","text":"Added landing_popup_module function creates module display popup app starts. popup block access app dismissed. Filter state snapshots can now uploaded file. See ?snapshot. Added as_tdata function facilitate migration modules new teal_data class. Added build_app_title function facilitate adding favicons app title.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-15-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.0","text":"data argument init now accepts teal_data teal_data_module. tdata deprecated replaced teal_data. Support tdata passed data argument module(server) removed next release. module(ui) argument longer accepts data datasets arguments. data dependent logic set server function. module(server) argument deprecated datasets argument. teal_modules’ server functions accept data (teal_data) instead. Changed order formal arguments init. filter now comes directly modules, title.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-15-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.0","text":"Enhanced module validation checks won’t throw messages data argument unnecessarily. Added argument teal_slices made modifications init enable tagging teal_slices app id safely upload snapshots disk. FilteredData longer stores pre-processing code specific slots. Code now attached attribute. Adjusted appropriately.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-15-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.0","text":"Removed Report previewer module mapping matrix display filter manager. Specified minimal version package dependencies.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-14-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.14.0","text":"Enabled module specific filter panel. See module_specific teal::teal_slices documentation. Enabled capturing resetting application filter state snapshots. See ?snapshot. Enabled reporter_previewer_module customize default values srv_args. Enabled passing reporter_previewer_module list modules override default one.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-14-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.14.0","text":"Specifying filter argument teal::init requires teal_slices object now. Details documentation teal::init. Soft deprecated filters argument module replaced datanames. Details documentation teal::module","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-14-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.14.0","text":"Removed scda package dependency examples. Updated header tag style enhance element containment.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-13-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.13.0","text":"use datasets argument modules deprecated removed future release. Please use data argument instead. data type tdata; see “Creating custom modules” vignettes function documentation teal::new_tdata details. Due deprecation chunks teal.code, teal framework now uses replacement (qenv) instead. documentation teal updated reflect custom modules written chunks updated use qenv. Due deprecation chunks teal.code, get_rcode, get_rcode_srv, get_rcode_ui removed.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-13-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.13.0","text":"Added validate_inputs function transfers input validation messages app output. modules argument init accepts teal_module type object. need wrap single module modules() list(). Updated module_nested_tabs active modules calculated teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-13-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.13.0","text":"Updated examples use scda.2022. Added R session information link footer teal applications. Added data hashing step using rlang instead digest package calculate hash (moved teal.data teal.slice). now explicit hashing check reproducible code output. Removed deprecated functions: root_modules, default_filter, bookmarkableShinyApp, well deprecated logging mechanism, including functions log_app_usage .log. Updated “Teal Bootstrap Themes” vignette provide details customizing teal app bslib::run_with_themer. Removed outdated diagram srv_nested_tabs documentation. Changed default values header footer arguments init empty text.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-12-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.12.0","text":"Added support custom bslib bootstrap themes teal::init apps, please read new teal-bs-themes vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-12-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.12.0","text":"Added option choose variables can filtered filter panel using filterable attributes per-dataset lists filter argument init. Updated teal_module data argument receives list reactive filter data \"code\" \"join_keys\" attributes. Updated teal_module filter_panel_api argument receives FilterPanelAPI object. Updated internals module_teal reflect changes teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-12-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.12.0","text":"Updated teal_module longer receive datasets object ... argument. order use datasets teal_module please specify datasets explicitly. Deprecated merge_expression argument get_rcode_srv function removed get_rcode function. Deprecated session argument get_rcode function.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-12-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.12.0","text":"Enhanced burger button disabled filter panel used.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-11-1","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.11.1","text":"Added new function reporter_previewer_module wrap teal.reporter package previewer functionality teal module. Updated teal support modules include reporting. module supports reporting included reporter_previewer_module included. Added default arguments module() server argument now function second argument can ... datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-11-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.1","text":"Deprecated bookmarkableShinyApp. future releases teal framework stop supporting shiny bookmarking (officially supported); may officially supported future. Note filter panel teal.slice retains ability save restore state used standalone shiny app bookmarking.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-11-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.1","text":"Added template pkgdown configuration. Removed unneeded shinytest app tests. Updated package authors. Added package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0110","dir":"Changelog","previous_headings":"","what":"teal 0.11.0","title":"teal 0.11.0","text":"teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.transform: standardizes extracting merging data. teal.logger: standardizes logging within teal framework. teal package contains code create apps (teal::init), create module (teal::module) group modules app (teal::modules). teal depends teal.transform teal.data contain functions teal app creators likely need. package teal imports therefore teal module creators either fully specify functions packages required import custom packages library(teal) load .","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-11-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.11.0","text":"simple new teal module named example_module included package.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-11-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.0","text":"teal package split multiple smaller packages, see . Deprecated root_modules function, users use modules directly inside init. Due deprecation root_modules label argument modules must explicitly named. example modules(\"lab\", mod1, mod2) replaced modules(label = \"lab\", mod1, mod2).","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-11-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.0","text":"Minor changes internals teal: main module panel now fixed shiny name root active tab named active_tab Active_tab. MultiAssayExperiment now suggested packages, required. Objects dependent MultiAssayExperiment changed lazy-load now suggested package.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-11-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.11.0","text":"Showing R Code longer shows reproducibility warning message reproducibility check passed.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-10-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.10.1","text":"Changed HTML identifiers teal modules - now nested module receives shiny namespace. Deprecated functions related connectors moved separate packages. Removed raw_dataset, raw_dataset_connector, named_dataset, named_dataset_file, named_dataset_connector, relational_dataset, relational_dataset_file, relational_dataset_connector, key, as_cdisc, as_cdisc_relational. Removed rcd_connection rcd_data; scda_dataset_connectors can passed cdisc_data teal_data directly. Replaced rcd_dataset_connector rcd_cdisc_dataset_connector scda_dataset_connector scda_cdisc_dataset_connector respectively. Renamed teal_show_js_log option teal.show_js_log match options naming convention. Removed %is_in% stop_shiny internal utility functions.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"logging-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Logging","title":"teal 0.10.1","text":"Added support logging using logger package. Added new function register_logger, registers logger given namespace. Added trace info levels log messages teal framework. Added pid shiny session token footnote app developers can identify logs apps.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"other-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Other","title":"teal 0.10.1","text":"Added print methods DatasetConnector, RelationalData, RelationalDataconnector JoinKeys classes added input validation implementation print method already Dataset object. Added public facing constructor functions CDISCDataConnector, RelationalDataConnector, DataConnection classes. Modified data_extract_spec allow filter select parameters NULL, results data_extract_ui acting filter_spec variables possible choices supplied filter argument select_spec multiple parameter set TRUE supplied select argument. Added support full screen module filters argument equal NULL. Added support shiny::moduleServer passed server parameter teal::module. Added teal.threshold_slider_vs_checkboxgroup R option: categorical variable number unique values, filter panel uses drop-select input instead checkbox group. Extended FilteredData API allow managing filter states programmatically UI teal application. Hid buttons remove filters datasets dataset active filters. Updated init accept RelationalData, data.frame, MultiAssayExperiment, Dataset, DatasetConnector, list function returning named list data input.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-10-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.1","text":"choices_selected now correctly removes duplicates array passed choices parameter. Fixed call returned FilterState case using MultiAssayExperiment::subsetByColData. Now single condition variable containing NA values !.na(var) & var == . Fixed data loading DatasetConnector dependent Dataset DatasetConnector objects. Fixed restoring bookmarked filter state teal application. Refactored module_nested_tabs fix issue filter panel reacting input change nested module. updateOptionalSelectInput longer sets input NULL logical value passed selected. Fixed setting JoinKeys key name two Dataset object differs. Fixed printing JavaScript console logs R console teal.show_js_log = TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-10-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.1","text":"Soft-deprecate mae_dataset() favor general dataset() constructor. Added vignette describing modifications teal applications users can apply using R options. Added default values label argument select_spec filter_spec. Added validation FilteredDataset::get_data accept logical input . Changed references outdated functions teal.devel documentation. Introduced Teal prefix public R6 classes avoid name collisions packages. Removed dependency utils.nest replaced functionality teal equivalents checkmate package base R. Replaced old shiny server functions DataConnection, RelationalDataConnector, DatasetConnector, RelationalData shiny::moduleServer equivalents. Running teal application via ui_teal_with_splash srv_teal_with_splash now longer recommended doesn’t support new features (e.g. logging, bookmarking). Use init instead. Updated R version requirement >= 4.0. Updated “filter panel collapse” icon remove warnings using shiny version >= 1.7. Removed non-exported, debugging modules. Updated footer tag style less visible.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-10-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.10.0","text":"Allow passing MultiAssayExperiment teal::init using mae_dataset function connectors. Refactored filter panel use MultiAssayExperiment objects. Filters can set subject level (colData MAE object) experiment level (colData rowData assay). Added cdse_dataset_connector create delayed data objects CDSE. Added datasetdb_dataset_connector create delayed data objects DataSetDB. Added ricepass_connection create delayed data objects entimICE via ricepass. Simplified setting initial filter state without need specify “choices” “range” named list element depending variable class. Dataset type determines appearance functionality related filters filters summary. Datasets passed (reference) DDL FilteredData skipping extracting data attributes. Redesigned variable filter labels “Active Filter Variables” panel. Fully testable server functions.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-10-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.0","text":"Fixed bug caused calling mutate_dataset multiple times DatasetConnector Dataset object. Fixed bug caused output get_code function reproduce raw data set. Changed filter_spec allow variable selection upon app initialization, first possible value previously selected.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-10-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.10.0","text":"modules parameter teal::init function can also receive list except root_modules function call. Added split merge methods JoinKeys object. Added all_choices() possible argument selected parameter filter_spec, select_spec choices_selected indicating choices selected. append method CodeClass object modified print warning message argument result code added duplicated. Implemented delayed functionality mutate method Dataset DatasetConnector objects. Modified teal_data return CDISCData object whenever arguments type CDISCData object. Updated filters show levels logical variable TRUE/FALSE even one missing original array.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-10-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.0","text":"Updated LICENCE README new package references. Added method get_hash Dataset class returning MD5 hash object stored inside Dataset object. Replaced random.cdisc.data scda examples tests. Implemented functionality store JoinKeys Dataset DatasetConnector classes. Added error_on_lintr: TRUE .lintr pipe operator %>% now exported downstream code packages can use . Removed hyperlinks rice package documentation.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-5","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.5","text":"Added informational stop message using mutate_data RelationalDataConnector. Modified as_cdisc behave similarly cdisc_dataset called Dataset object. Changed displayed format data name column name data_extract_spec UI elements. now compressed . don’t change runtime app. Added ADSAFTTE list recognized ADaM dataset names. Added another example data_extract_spec’s doc string showcasing app users can choose variable used filtering encoding panel. Added CSS styling tool tips teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-9-5","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.5","text":"Fixed edge case error creating filter variable missing values crashed app. Fixed bug crashes app whenever Date datetime column selected filter_spec.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-4","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.4","text":"Released snowflake connection connectors. Changed ordering datasets intuitive (topologically first CDISC datasets according input datasets order). closing teal app (ending user shiny session), DataConnections now try close connections. Added ADHY keys configuration file. Extended filter_spec function: parameter choices longer mandatory (function take possible choices default) vars parameter additionally accepts choices_selected allows change variables filtering using UI elements encoding panel.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-9-4","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.4","text":"Cleaned imports package. Modified value_choices function handle edge case \"NA\" NA values exist character column choices derived . Fixed issue cloning Callable class.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-9-3","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.3","text":"Support data-standard independent input filtering. includes refactor data dataset structures together refactor FilteredData class. New JoinKeys class (join_keys() constructors join_key() constructor elements) store joining key columns datasets. Refactored basic dataset() constructor, added cdisc_dataset() constructor as_cdisc() conversion function. Soft-deprecate removed class constructors obsolete functions (e.g. keys()). Added get_keys() set_keys() functions extract manipulate datasets primary keys respectively. Unexported filtered_data_new, filtered_data_set filtered_data_set_filters.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-9-3","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.3","text":"Duplicated lines code passed teal::cdisc_dataset teal::RelationalDataset constructors now shown getting code teal::cdisc_data objects teal::RelationalData objects. Added ability press “Enter” key without set focus Submit button delayed data loading. Allow variable_choices use datasets missing labels. Fixed bug ignores input NULL selected argument select_spec function.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-3","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.3","text":"Added button remove active filters Filter Panel.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-9-2","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.2","text":"Added python_dataset_connector create delayed data objects python scripts directly python code. NOTE: python_dataset_connector yet ready deployed RSConnect contain numpy pandas, Python libraries used python_dataset_connector. Added support filtering Date Datetime variables Filter Panel. Added buttons date datetime filter widgets reset value original. Added new function check_key_duplicates, creates short summary rows duplicated primary key (row numbers number duplicates)","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-2","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.2","text":"Fixed lack labels character factor variables Filter Panel. variables now displayed module_filter_panel, types numeric, logical, factor, character Date Fixed mutate_data accept whole scope objects vars. Clarified teal::init function documentation state custom CSS loading code htmltools::htmlDependency included header argument rather inside UI arguments modules. Enabled empty select field inside data_extract_spec. Added new argument drop_keys filter_spec decide whether drop keep keys columns single filter columns. Added new optional argument keys variable_choices. keys specifies names variables, new key icon shown next variable drop menus left-hand side encoding panels instead icon appropriate original R variable type. variable_choices now also works RelationalDataset RelationalDatasetConnector objects.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-9-2","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.9.2","text":"Removed include_factors option get_class_colnames RawDataset.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-091","dir":"Changelog","previous_headings":"","what":"teal 0.9.1","title":"teal 0.9.1","text":"Adds method resolve nested lists containing delayed data objects, can used arm_ref_comp objects. Nested tabs module now better alignment filter panel page. Allow width argument optionalSelectInput. Added lifecycle badges exported functions. Added new code_dataset_connector code_cdisc_dataset_connector functions enable creation new delayed data objects given string code. Added new functions csv_dataset_connector csv_cdisc_dataset_connector. Updated set_ui_input method RawDatasetConnector NamedDatasetConnector handle user defined shiny inputs. Include Keep Inf checkbox numerical filter items. Keep NA Keep Inf checkbox doesn’t appear missing infinite values. Replace existing RelationalData class abstract class RelationalDataCollection rename RelationalDataList class RelationalData. data argument teal::init now always RelationalData object. Added fun_cdisc_dataset_connector enable providing custom function returning dataset. Removed code script arguments as_relational wrapper. intended done mutate_dataset functionality. filer argument init added validation step ensure compatibility rest app. Variables inherited ADSL specified ADSL dataset. Fixes issue connection close code present get_code results. Fixes issue occasional incorrect ordering bar charts filter panel. informative error displayed pull_fun DataConnection produces error.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-090","dir":"Changelog","previous_headings":"","what":"teal 0.9.0","title":"teal 0.9.0","text":"cdisc_dataset dataset now return R6 class objects (RelationalDataset). new teal_data function include datasets connectors teal application. cdisc_data function include datasets connectors teal application check argument still used consistency tests performed. get_raw_data can used derive raw data R6 objects e.g. (RelationalDataset). RawDatasetConnector, NamedDatasetConnector RelationalDatasetConnector execute custom function call order get data connection. CodeClass manage reproducibility data relationships datasets. directly exposed public interface. mutate_dataset allows modify dataset connector via code argument R script. mutate_data allows change dataset RelationalData, RelationalDataConnector RelationalDataList. New wrapper functions manipulate RelationalDatasetConnector RelationalDataset get_dataset, load_dataset, as_relational. New wrapper functions manipulate RelationalDataConnector, RelationalData RelationalDataList get_datasets, load_datasets. choices_labeled, filter_spec, select_spec, data_extract_spec, value_choices, variable_choices S3 class applied data.frame also delayed data. can longer modify app$datasets, must instead use argument filter init function. New modules created create module nested teal modules, another one adds right filter pane tab. teal::init function stays unchanged. teal::init function now returns UI function optional id argument. allows embed applications. split view two teal applications side--side one example shown vignette. teal::init turned wrapper function around module_teal_with_splash.R developers want embed teal shiny module directly work functions (ui_teal_with_splash srv_teal_with_splash) instead teal::init. teal::init function now title parameter set title browser window. Missing data NA now explicitly addressed filter panel: NAs excluded default checkbox include added. Statistics data visually depicted terms histograms bar charts overlayed onto shiny input elements. Added buttons remove filters applied dataset. Restored functionality hide filter panel module constructed filters = NULL. Moved helper functions utils.nest removed unused functions set_labels_df get_labels_df. optionalSelectInput now allows grouped choices.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"refactor-of-filtereddata-for-developers-0-9-0","dir":"Changelog","previous_headings":"","what":"Refactor of FilteredData (for developers)","title":"teal 0.9.0","text":"FilteredData now fully reactive. Now filtered data lazy evaluated per need. opens door bookmarking teal apps (bookmarking currently works right filtering panel, make feature sophisticated future release, module must reviewed adapted contains reactiveValues). Datasets materialized connectors provided FilteredData set_datasets_data function located init_datasets.R file. Renamed get_dataset() method get_data(). Renamed get_filter_call() method get_filter_expr(); returns expression rather list. Removed argument isolate get_data() method similar methods. must isolate needed. want temporarily deactivate shiny errors due missing errors, can set options(shiny.suppressMissingContextError = TRUE). general, avoid isolate breaks reactivity. added development module add several filters , e.g. safety filters. evaluated converted proper module made available end-users.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-085","dir":"Changelog","previous_headings":"","what":"teal 0.8.5","title":"teal 0.8.5","text":"UI bug fix hide filter elements used datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-084","dir":"Changelog","previous_headings":"","what":"teal 0.8.4","title":"teal 0.8.4","text":"Progress bar UI creation delayed loading module. Change output keys function keys object. Delayed version choices_selected. Fix error choices_selected selected choices. Fix pickerInput display column name label ’s missing.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-083","dir":"Changelog","previous_headings":"","what":"teal 0.8.3","title":"teal 0.8.3","text":"Enable teal app initialize without data. data loaded within teal app. New classes (DatasetConnector, DataConnector) connect various data sources, including: * connector rice API - rice_data rice_dataset_connector * connector RDS files - rds_data rds_dataset_connector Message appears bottom right shiny app shiny busy update views. Remove labels argument cdisc_data function. Labels now already present data passed cdisc_data function. can achieved using var_relabel function.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-082","dir":"Changelog","previous_headings":"","what":"teal 0.8.2","title":"teal 0.8.2","text":"Fixed several BUGS optionalSelectInput improved inputs look. Added get_data_labels function FilteredData class. Improved sep passing within data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-081","dir":"Changelog","previous_headings":"","what":"teal 0.8.1","title":"teal 0.8.1","text":"Refactor choices_labeled fix bug showing column name data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-080","dir":"Changelog","previous_headings":"","what":"teal 0.8.0","title":"teal 0.8.0","text":"Added cdisc_dataset (general dataset) functions properly handle dataset keys merging. Possibility load custom .css .js files. Renamed columns_spec select_spec. Show number observations filter panel. Add labeling functions variable_choices value_choices.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-070","dir":"Changelog","previous_headings":"","what":"teal 0.7.0","title":"teal 0.7.0","text":"Added functions cdisc_data get_code deal preprocessing moving step towards data standard independent teal. Moved teal.utils functions teal: log_app_usage, stop_shiny. Added *_spec functions. Improvements usage PickerInput SelectInput.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-060","dir":"Changelog","previous_headings":"","what":"teal 0.6.0","title":"teal 0.6.0","text":"Removed deprecated functions tab*. Removed data generation functions including generate_sample_data. Incorporate shinyjs package. Added “Copy R code clipboard” button.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-005","dir":"Changelog","previous_headings":"","what":"teal 0.0.5","title":"teal 0.0.5","text":"Added limit data_table scrolling, preventing overlap UI elements. Boolean filtering.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-004","dir":"Changelog","previous_headings":"","what":"teal 0.0.4","title":"teal 0.0.4","text":"Bug fix teal crashes filter variable gets added many decimal places.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-003","dir":"Changelog","previous_headings":"","what":"teal 0.0.3","title":"teal 0.0.3","text":"Note version 0.0.3 backwards compatible. Reading changes studying example app , however, clarify changes.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-0-3","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.0.3","text":"tm_scatterplot module. tm_table module.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"changes-0-0-3","dir":"Changelog","previous_headings":"","what":"Changes","title":"teal 0.0.3","text":"tabs arguments renamed modules. tab_item function now called module. tab_items function now called modules. tabs function removed. variable_browser_item now called tm_variable_browser. data_table_item now called tm_data_table. datasets argument automatically added server functions specified module. Hence teal_datasets removed server_args element.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-002","dir":"Changelog","previous_headings":"","what":"teal 0.0.2","title":"teal 0.0.2","text":"New ‘01_getting_started’ vignette. Datanames FilteredData now case sensitive.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-001","dir":"Changelog","previous_headings":"","what":"teal 0.0.1","title":"teal 0.0.1","text":"March 28, 2016 - Initial Release.","code":""}]