"`.
-#' @param decorators `r roxygen_decorators_param("tm_t_abnormality")`
#'
#' @inherit module_arguments return seealso
#'
-#' @section Decorating `tm_t_abnormality`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`ElementaryTable` - output of `rtables::build_table`)
diff --git a/R/tm_t_abnormality_by_worst_grade.R b/R/tm_t_abnormality_by_worst_grade.R
index 62892d367..1eac97568 100644
--- a/R/tm_t_abnormality_by_worst_grade.R
+++ b/R/tm_t_abnormality_by_worst_grade.R
@@ -245,11 +245,10 @@ template_abnormality_by_worst_grade <- function(parentname, # nolint: object_len
#' object with all available choices and preselected option for variable names that can be used as Worst Low Grade flag.
#' @param worst_flag_indicator ([teal.transform::choices_selected()])\cr
#' value indicating worst grade.
-#' @param decorators `r roxygen_decorators_param("tm_t_abnormality_by_worst_grade")`
#'
#' @inherit module_arguments return seealso
#'
-#' @section Decorating `tm_t_abnormality_by_worst_grade`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`ElementaryTable` - output of `rtables::build_table`)
diff --git a/R/tm_t_ancova.R b/R/tm_t_ancova.R
index 80813ed88..bdc71814c 100644
--- a/R/tm_t_ancova.R
+++ b/R/tm_t_ancova.R
@@ -421,11 +421,10 @@ template_ancova <- function(dataname = "ANL",
#'
#' @inheritParams module_arguments
#' @inheritParams template_ancova
-#' @param decorators `r roxygen_decorators_param("tm_t_ancova")`
#'
#' @inherit module_arguments return
#'
-#' @section Decorating `tm_t_ancova`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`ElementaryTable` - output of `rtables::build_table`)
diff --git a/R/tm_t_binary_outcome.R b/R/tm_t_binary_outcome.R
index cbf637dbf..e1924bb11 100644
--- a/R/tm_t_binary_outcome.R
+++ b/R/tm_t_binary_outcome.R
@@ -347,11 +347,10 @@ template_binary_outcome <- function(dataname,
#' `"Not Evaluable (NE)"`, or `"Missing or unevaluable"`, 95% confidence interval will not be calculated.
#'
#' * Reference arms are automatically combined if multiple arms selected as reference group.
-#' @param decorators `r roxygen_decorators_param("tm_t_binary_outcome")`
#'
#' @inherit module_arguments return seealso
#'
-#' @section Decorating `tm_t_binary_outcome`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` - output of `rtables::build_table`)
diff --git a/R/tm_t_coxreg.R b/R/tm_t_coxreg.R
index 0f0389e55..ced01a41f 100644
--- a/R/tm_t_coxreg.R
+++ b/R/tm_t_coxreg.R
@@ -336,7 +336,6 @@ template_coxreg_m <- function(dataname,
#' @inheritParams template_coxreg_m
#' @param multivariate (`logical`)\cr if `FALSE`, the univariable approach is used instead of the
#' multi-variable model.
-#' @param decorators `r roxygen_decorators_param("tm_t_coxreg")`
#'
#' @details
#' The Cox Proportional Hazards (PH) model is the most commonly used method to
@@ -361,7 +360,7 @@ template_coxreg_m <- function(dataname,
#'
#' @inherit module_arguments return seealso
#'
-#' @section Decorating `tm_t_coxreg`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` as created from `rtables::build_table`)
@@ -1102,7 +1101,8 @@ srv_t_coxreg <- function(id,
# Outputs to render.
table_r <- reactive({
- decorated_table_q()[["table"]]})
+ decorated_table_q()[["table"]]
+ })
teal.widgets::table_with_settings_srv(
id = "table",
diff --git a/R/tm_t_events.R b/R/tm_t_events.R
index 31efb865d..930c99b5c 100644
--- a/R/tm_t_events.R
+++ b/R/tm_t_events.R
@@ -458,11 +458,10 @@ template_events <- function(dataname,
#' It defines the grouping variable(s) in the results table.
#' If there are two elements selected for `arm_var`,
#' second variable will be nested under the first variable.
-#' @param decorators `r roxygen_decorators_param("tm_t_events")`
#'
#' @inherit module_arguments return seealso
#'
-#' @section Decorating `tm_t_events`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` as created from `rtables::build_table`)
diff --git a/R/tm_t_events_patyear.R b/R/tm_t_events_patyear.R
index 6aa2bfdcc..c85ada4bb 100644
--- a/R/tm_t_events_patyear.R
+++ b/R/tm_t_events_patyear.R
@@ -189,11 +189,10 @@ template_events_patyear <- function(dataname,
#' second variable will be nested under the first variable.
#' @param events_var ([teal.transform::choices_selected()])\cr object with
#' all available choices and preselected option for the variable with all event counts.
-#' @param decorators `r roxygen_decorators_param("tm_t_events_patyear")`
#'
#' @inherit module_arguments return seealso
#'
-#' @section Decorating `tm_t_events_patyear`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` as created from `rtables::build_table`)
diff --git a/R/tm_t_events_summary.R b/R/tm_t_events_summary.R
index d392bdbda..df8263adc 100644
--- a/R/tm_t_events_summary.R
+++ b/R/tm_t_events_summary.R
@@ -522,10 +522,7 @@ template_events_summary <- function(anl_name,
#'
#' @inherit module_arguments return seealso
#'
-#' @param decorators `r roxygen_decorators_param("tm_t_events_summary")`
-#'
-#'
-#' @section Decorating `tm_t_events_summary`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` as created from `rtables::build_table`)
diff --git a/R/tm_t_mult_events.R b/R/tm_t_mult_events.R
index 4e0c8ea80..1a564d4ab 100644
--- a/R/tm_t_mult_events.R
+++ b/R/tm_t_mult_events.R
@@ -279,11 +279,10 @@ template_mult_events <- function(dataname,
#' @param seq_var ([teal.transform::choices_selected()])\cr object with
#' all available choices and preselected option for variable names that can be used as analysis sequence number
#' variable. Used for counting the unique number of events.
-#' @param decorators `r roxygen_decorators_param("tm_t_mult_events")`
#'
#' @inherit module_arguments return seealso
#'
-#' #' @section Decorating `tm_t_mult_events`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` - output of `rtables::build_table`)
diff --git a/R/tm_t_tte.R b/R/tm_t_tte.R
index ceee2c516..84668c7ad 100644
--- a/R/tm_t_tte.R
+++ b/R/tm_t_tte.R
@@ -386,9 +386,8 @@ template_tte <- function(dataname = "ANL",
#' pre-selected option for confidence level, each within range of (0, 1).
#' @param event_desc_var (`character` or [data_extract_spec()])\cr variable name with the event description
#' information, optional.
-#' @param decorators `r roxygen_decorators_param("tm_t_tte")`
#'
-#' @section Decorating `tm_t_tte`:
+#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` - output of `rtables::build_table`)
diff --git a/man/module_arguments.Rd b/man/module_arguments.Rd
index 397fb160f..d21b1100b 100644
--- a/man/module_arguments.Rd
+++ b/man/module_arguments.Rd
@@ -133,6 +133,15 @@ value indicating worst grade.}
\item{worst_flag_var}{(\code{\link[teal.transform:choices_selected]{teal.transform::choices_selected()}})\cr object
with all available choices and preselected option for variable names that can be used as worst flag variable.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
diff --git a/man/template_patient_timeline.Rd b/man/template_patient_timeline.Rd
index 24b297571..b86eaa482 100644
--- a/man/template_patient_timeline.Rd
+++ b/man/template_patient_timeline.Rd
@@ -62,18 +62,6 @@ a \code{list} of expressions to generate a table or plot object.
\description{
Creates a valid expression to generate a patient profile timeline \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} plot using ADaM datasets.
}
-\section{Decorating \code{tm_g_pp_patient_timeline}}{
-
-
-This module generates the following objects, which can be modified in place using decorators::
-\itemize{
-\item \code{plot} (\code{ggplot2})
-}
-
-For additional details and examples of decorators, refer to the vignette
-\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
-}
-
\seealso{
\code{\link[=tm_g_pp_patient_timeline]{tm_g_pp_patient_timeline()}}
}
diff --git a/man/tm_a_gee.Rd b/man/tm_a_gee.Rd
index f69462a7e..28f812a45 100644
--- a/man/tm_a_gee.Rd
+++ b/man/tm_a_gee.Rd
@@ -71,11 +71,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_a_gee}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -83,7 +86,7 @@ a \code{teal_module} object.
\description{
This module produces an analysis table using Generalized Estimating Equations (GEE).
}
-\section{Decorating \code{tm_a_gee}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -146,8 +149,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeUAipV1DU2t7fwAjqI6AKQAfNM9Jca01OSM7KUAQtUAYrUAhAC8OgpgAJqnOgBkZdt7AEw6RyfnpzZzCxAlJTCCoeTsRbfUoANQAkpUwbYdMcoOJjFB1ER1qCIVC5LggSVUZDbAA5GE6ZgQADWG3BuLx73mWO+cIwCKR62pn2+bJ09IggngjBk1hmNK+7JK9MZpGR1kxQrZoNK1U2YIJx1ltT0OgArAAGHQAYh0AClBKJSByplAvq1YD5dOKdABzOAmsL0bKeHQUbxEbKkDBAllA-iMIjW7TUUTxCAAXwCACsvRAoiS4Kxw3kbMl+HAEcJSFECPxaKImnHsonk6JgNB4KnEnIALquaDoOrZdKAoV5Ql5KU-ATCMSEvhCEThoENdpRB1wdvC6hQehwaiE04AcScLjwtLyVd0x1OFQGpx77Kgmm4UTPjEJBAyXoIYiiokXcHUcH4gLAKoVeKPJloLTfQl7GcDFaVofgLxYa9bxkB8nxEV93wID8HEqBxNn1MFyl-U40IwrC3gKU5UPQzDsLAUDpTpRgYEgq9jhvO84OfRD2GQ-csAAWRwz8uIAYXIjEXlKLjCNpTRC3SOjoKY0RHxY8gkI-HEoR4lT8UI4SKVUijjzZVAWFgfMZNguT4JfRSZ2FHRGNMwkz2oQQ4DzGD7xrUJgGAfd+kqU46zrIiwAABRE0pOIEniQqwMKxKotlzMQ5cwB2ABpSEDB2AB1TZTlpSjhWITRpIY1zmIQyz2LATZSkqDdAtKNceNqgANHjqtqxB1M0vEHGqaoAjZAadACAJaGMHR2G9VREQ0bRrBsIohVELIIFYUp0HYNBUAAEkEWgCi27an0YbR-CUSMlDASM6yAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_a_mmrm.Rd b/man/tm_a_mmrm.Rd
index 58225572c..ee5c3c101 100644
--- a/man/tm_a_mmrm.Rd
+++ b/man/tm_a_mmrm.Rd
@@ -165,8 +165,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEosMAD6jHDGIcQwqPpGdKKk7Eo6OgCCWACyAMIAIjoAvDoJSSmpOuHGhToKYBmZOgBCtbhlqdGxRQTJdVnpLTW9Ddm1AakBAUr8UKRQcTpc1CHTs9ZTM3OGOgDutKQAFrQQ7CtQuDogZWm5AMoAMvOkMAQhcAAeIVD8otRXuQCKN0ez1eHy+AEdRDoAKQAPmhbRMtGo5EY7DSjTuADEHgBCIq1ACatR0ADJ0picQAmHT4wbEsA2OEIiDlJEo1TogBqAEkbjzbDCjtCdN1agB1JxOADSOgAjDpcmlCToABwDCVS2U0pUquUAVg1YElMp0AGZFcqdFSqaMmfDETBBLNyMlWWz0rz+YKilBxMYoOoiGi0l6BXJWu62aG+QKAHLVZgQADW3Njtjj9pZHvKfowAaDaKziLZeYggngjBk1hhDqjHrzBdIwZrAGIAOQ6GBQZNHADmopIojgBGdWl05crMhMgebjERAQAvgEAFZEI4hZNwViiE4bGxbfgRKDCUhRfi0UQvNcbrc74DQeC705yAC6rmg6HmRz2btSp2qU5I1SPghBEKEilA4QxD-conk+EIYBgRgYFgtlqCgeg4GoapakyTIshaEsdFOR9dAJOoARuIj61SKBNG4EIGMYaoCH2dcCDEEJhxEdQ4H4dgxTqLk0juI1sgACQAcVGc5alDUTZOI2h+CYlhWPYmQuJ4kdyAEoSHBuBxGgAKR5XIjSM0zzNkwZDOMsyLMZYCGxQtSWK6TTONEbjsN0-jBJ6eojXqPJbPkwjnOIzRLz2dyNI47S-L4-SgrDWwQvSuNwuE9MlNonRgjCCIoiIGJqiKypSpiFy2VQFhYAIfgEq0nydJStCPTYxKIJ0BjqEEOAoi8mDTmAYB5Ko2pX1fOSwAABQyNIcicubFqwZb8pzVJ2r03CwCxaV+QMLFxWaMBiIjYjiE0eLPJ63zeL0wLakaNIbhcPBBjSKTPrmj6AA0jTej7EBjb1bLjBw7juMZyjhiYlFoKp2COVFZ3HawbEud1REOCBWDSdB2DQVAABJBFoc5SbJ4dGG0fwlEXJQwEXV8gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_barchart_simple.Rd b/man/tm_g_barchart_simple.Rd
index 1a436a496..8d3e24dba 100644
--- a/man/tm_g_barchart_simple.Rd
+++ b/man/tm_g_barchart_simple.Rd
@@ -49,11 +49,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_barchart_simple}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -65,7 +68,7 @@ This module produces a \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type bar
Categories can be defined up to four levels deep and are defined through the \code{x}, \code{fill},
\code{x_facet}, and \code{y_facet} parameters. Any parameters set to \code{NULL} (default) are ignored.
}
-\section{Decorating \code{tm_g_barchart_simple}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -201,8 +204,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otQ6AKQAfBP1DTowgonk7ACStrYAYp0AvCZQ6gHsCmAAmic207MQ8-NFpWnUUPRw1MdgqypkBrZEP4xwBI6AAKRFQwgSlhumyeAHMLkEGi1Gk4uj0+oNhvFdFc5g1jLRqORGOwAITsdgo2wAeQAGgBxLA6HZ7ACMNgAZDpKU5Wk4AGrMvYnACyq3azQuOi5lKwIqFOhOjUQOmajEEsJ0tIRQQAvkEAFZEcppADWcFYokqiRs+X4cGMUGEpDSBH4tFEfSNJvNluA0HgVtycgAurEWh0urlgMAlW12icQ2GIMjUXaqjG4yjE8mlGhUF1ysVjjcdLlmWWqrg5nwhCJRBXa8IxCXbj00rC0vQWAQSiwXaJaDBInBW7cdE8XuNhWBU01oFFB6ITtXS7cBhXcv0BqQ1APUHACGPx5XEgHdDOIwm8Hjx6JXofSBX7yJ1GlRAej7eT73jQQxBWmgsLQzwiK6JR-i234nk08arjB45fmuCHzEqcoroqs4AMK2I06F4JhfLajeyEoZhWCNFhLgESc6xbNeNQnK0jSbNsGFMfYjS4QATCc0EnoiKFyPBKEvo+cD8BWSo4XhIorvx8yLEStAjhWmyNO0fIKYJtzCdBBLUNOE4eqQx7jlugy7gc+6HmZJ65OeUmzvG8mkXeD7qM+Hk2UhZENL+MgAXsQGMCB9BgQF-5WgpJ5XiJfk6L5CWobO+GMdhuFpYRTjEfFyUnBRVHsR8GxsTRYDMaxDGEZxPF8W5CE6UJeUIWJ6gSU5RGuQlSkaKpezqZpLgNfMTW6S18wWTue7vp+dnmVUjmXs02YkWRbVPnsG2zbZMXzJFQU6CFYURRBgVWqmNRfrOTg0gyWDFSifL8o9vJOA9YByHpI23BtHV7AAcg47TtBNJ69SpIhqRpWk-ToY2jdB30nkMjr-ptxmiKZClTVZb4frtcMObAF6Yam3Wid5Xmvj580-mdUWAcBoFwOBkEXStThXe8VJ0oyr3PQL70ImD7k0-9ZO3XzH2i7cEP9Tog2w2RCMNMjMG4zNBNJQhxPwE5V4U61VNbd5O06yhB0NsFzPhazVt0zBcV7bcFsJWhcnlZRmWe+lXVrclDQFZR1HpXRZV+yxEc1RRdVgC7iNw2rsvzH9kmA8DoMJ-LUMDTDw0q9pSMTawaRo3AGN0Fjjua9Z5uOw0euk1mod7Rt1OPvXCdW0zoUs2z52Upz3NKlL91Cy9XtvR9X0pw0acG29k9zwszqQ6TSsF0J2mi7X+NzXtTcGy5AfGzTHf74TCU9zbfd2wPUUN+OztJ-tT8nh7j0yVlTE5Ub+VgEKqHTC4dqpMSjmAiqtVGi8Xjq-NWCd1brW8hLIGIMV45w3vnPaqt4ZI1vIJIIQRaDGG5OUYk1ktCji+rUOYogygQFYI0dA7B8wABJBC0BqOw+8jBtAxAgLqJQYBdQhiAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_ci.Rd b/man/tm_g_ci.Rd
index ddd272ff5..edfd3ae32 100644
--- a/man/tm_g_ci.Rd
+++ b/man/tm_g_ci.Rd
@@ -51,11 +51,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_ci}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -64,7 +67,7 @@ a \code{teal_module} object.
This module produces a \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type confidence interval plot consistent with the TLG Catalog template
\code{CIG01} available \href{https://insightsengineering.github.io/tlg-catalog/stable/graphs/other/cig01.html}{here}.
}
-\section{Decorating \code{tm_g_ci}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -155,8 +158,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQSvxQpFD6RlzUAPqh4dYhYRGGOgDutKQAFrQQ7PFQuDogSjo6AIIAIgDKADKROqQwBDFwAB4xUPyi1KUVlbUAQg1NLe2d-NT0SgC+QQBWRLkxANZwrKL5yTap-HDGUMKkMQT8tKIti8trG8DQ8JsFcgC6rhBVdQ0FwMAKYB+1P7PV7vAbDXbJH5-KpDIEgpRoVANXKZdh9Ao6AC8OgKuD6fCEIlEWJ0BOEYjREDKZSaMQA5idaJTqdTqFB6HBqCS-gBhEjGWh7cy6ACSKkYmm4OgACv5SH88VSWToOpLGCSCq02qQ1MdRKg4ARmcqygV7rpsdCaoC8H0TaJOYbSCSHSJ1DF9YbjSaygQsksCGISUboVgALI8yoKnR-QZhrAAaSwACY-nJFT7qa6nXB+MG0f9w5G0xnM6SjrRUCISQAxcq1apOUuZgVtXO1+uNu3KoIm9PdsqsGJqjXJLU6qDuz0hpUms2wC0x-5ghUD6kC6jkdXYuiiUjen0brceg0zsvUtXEy1gaXlLDlCNR22zst+gNBndwbTUTYwwYAElve9H37F9M2zdR20-b9fzBQC7wfSM5GAABGZ5mzLGAKyrRc6wbJs1xNNkOS5a9qkddQdGIxA-kI6lQPPI9VBPL06JZS9uX+AA1EVqhFWxVzAn03xkD8qK-TlYKGf9yh4vjbAY88dAg8g82gyT2D-GS5P45C0IwzMsM3Stq2xPDGwMn1iM5TjyLdZ1NHOTIaLANidF7H1FPtCjnWxFSWLPMtrNIpdymgahWAAL3bLjuEEOBBPPETAyvHQQ24+to15AAJABxEs3JUqDQq4zLn3PIyNBwjt8MsllW2K8yXCEsoPJZLzqT8AJR3CcddQCg8WXneBOIBRKfRUl0fIGtzgs4vl-HVehWB0NVaHZERxszZKxPSxsAA0srAap7HKWxyhQo6Tvvc7UzADrvPs4q9tO87LvuurqUqkzcM7AiWvXWg2zUnQmrotr6O7DygiCWhjB0dhci3ScNG0awbBKJVRByCBWHKdB2ERf9BFoIoiYdCVVCCGYlDAGZniAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_forest_rsp.Rd b/man/tm_g_forest_rsp.Rd
index 814401616..a39e917a9 100644
--- a/man/tm_g_forest_rsp.Rd
+++ b/man/tm_g_forest_rsp.Rd
@@ -115,11 +115,14 @@ merged with option \code{teal.ggplot2_args} and with default module arguments (h
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_forest_rsp}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -127,7 +130,7 @@ a \code{teal_module} object.
\description{
This module produces a grid-style forest plot for response data with ADaM structure.
}
-\section{Decorating \code{tm_g_forest_tte}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -227,8 +230,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otT1Tc1YrV09fYPD-IyiOgCkAHyrEw0wgonk7I0Aao3tAMI6ALw6-GkkxGnLqGnUUPRw1Icn5zYbWxANQGFYolF5vD7sBRgM4lFhQdSqHRYMTCUgAegAYuV+OUAOZQuS-TbbEy0ajkRjsAAKjSwjQAsmdmjoAITXKEAeSOWAAkgA5I5QnQAHyaRx5rR5tiu7LAGI57XaHIA6joHFSCUoAL5BABWRHKaQA1nBWKJKokbPl+HBjFBUWkCDjRH19YaTWbgNB4ObcnIALqxFodLq5YDAKHB9pQ-2BiAtaahqrhyNTVoxuNKFgwR62x1EGCoLp0USkSEAppYelXHQlsskxi2mtQgBCiB0VNeBDg9CIUNwJOIhZrBEhYEa7eajEEuJ0AA1+zooWd22cC-RyglLBBNRW5AOK7TGczrnXy0DG8Zm+OqzoW-3BwWi9dR5Hb41F2-q2ddw0gkEs3QLpymKc8biqGtcgPHYBGEMQaz4IQRHNEkejSXE0mMAIfEeURUDAoFXneahrwxbDSyRMRUBIUQ4AfCsgVyb1dFlBN0zwEkGmzNJNBYEcSgNbtRDSWiRARfgCKBHReMYWg3hER0BJkMRDjadoalfG96U-LSmQJfdOMBL89LAQyDIYwFuMvfNh2uKy8yHVBoKk1A4V6fh+MEsQRI+OBxMkoFeOoQQ4EUrzzTYmooRpOljx0mKGQJZypKXMB+SOJxbChMzksBURBHoXFGCIQRnhkzzlOE0S-PICTDIaGS5PoBSCCUoTVI6GpmIitTCVyoFNJbeksAAaSwAAmHTWicBcwCCFLzJS0tmESHi+JfNrvOq-z6uklgmpazaes6nRNNaexGlsRoAEYpouq7JrmxaUtS866Qe7KLL-fqdEiIhSDSEo4FoXESlIEd2AANgABmh9SdHG2H4cRpHnsY217XJXM8Jo+DT1oUsAsBFsnFaaYqR5Gsz12honghqFWkSZrdGaAm4CgWidHYVpmkUPBUr5f6dCcILBHk3R2D5Jw+bRl6RG0agVhfImUuXJ8RHISicYgTn2DOLA+aisAqRYDRuC16idYlqkDampmRB0VnaI5iWecNmmjON4qirEUQtBZtmXa5qleZ0wXwZF7gxeZrmpb5j35pe2WgXSzKqYJ+svqkunlbVwsNd0ZFtd1-XDdSk3GDNkii8t3WbZln7CLgBWldOlWpLzyI4E1mvca50uw6FyPgvF2Ppfi025Orqi++pW2OKz1WvaIH3RD97RHcDuvQ-5hn7YD53dbdz6XsBROFsbnQuV5AV08Jj2c7b6LvcbNf-c3w-rZ3o3GdHp32aPjvZOUl5YfFbppKkL9fbv3-kHak39Xr7w-gA12CCoTh2FqLUektx5zV2ufM+JJE7-iULQK87BygUnhBobQ1gbB1ArKIMoEBWCNHQOwNAqAAAkghaA1E4Vw2ijBtAxAgFqJQYAtT+iAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_forest_tte.Rd b/man/tm_g_forest_tte.Rd
index 8e23d990e..4123fa597 100644
--- a/man/tm_g_forest_tte.Rd
+++ b/man/tm_g_forest_tte.Rd
@@ -116,11 +116,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_forest_tte}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -128,7 +131,7 @@ a \code{teal_module} object.
\description{
This module produces a grid-style forest plot for time-to-event data with ADaM structure.
}
-\section{Decorating \code{tm_g_forest_tte}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -205,8 +208,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otT1Tc22tk5dPX2Dw-yk5BMtHQAkWI0AwrP5-IxEkXDa1KLs6+1bu042AKQAfPeFxSVp1FD0cNTsCmBYKAEOD-IIAXyCACsiOU0gBrOCsC65GwHODGKDCUhpAj8WiiPrQ2EIpHAaDwZFVOQAXViVy6uWAwH+V3+1NpEBa032RkZzLAXJmbI5ShYMDSjHROKIMFQXToolIfwgDUaWAAsjoALw6BVKiYNSXGbU6f4AIUQOgACp9gfQiP9cAadMRZSaCH8BZbmoxBABzHQADUdprAO0tOxl9HKCUsEFBEzkTpVTQ1O2aJr1yoahvRJpZGp0Zsdztdcp1HoLmsaIarOh2CZTQSCovQXXKxWzOlyJtyyYafCEIlEJsHwjEXYaPTSfrSxgCPjSKzgk5zn2+1HzYAAYgvFTpWoJGJotNwSymc92quTdDqWVMhXhnQ0xWlNCx3SUYcDRGlRD84HUOB+FXS930YWgvhEHEvxkCcrhqSsBQ1WtkPVdNQSTZ8cyrDCwGwrCLxzV8jWlN0dRIqUy37S8dFQFhYFxT9vzEP8AKAkDsIad9qEEOAYJYi5BScGp-itNVGnQ5pUPE7Z1VBGjaNDAB5Vp-gIxSc1EQR6D9I5BFQN8PwrWCfzYkQONAnNwMg+hoIIUz4LadoahvITnLkQilIaJCzXVLAAGksAAJlQ1onGDMAgiUrzaMVZhEiMxhmLg39-ws8hOKIsCWFs+zHPcjpEM9Vp7EaWxGgARjCsqKtCqLYqU-5Su2Or1OynRopzLrmyUWhjXYcpyDUDRtGsGw6hTUQyggVhGnQdg0FQDZBFoGolo2f9j1UcElDAMFqSAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_ipp.Rd b/man/tm_g_ipp.Rd
index 10fb62a13..79bbfb3e4 100644
--- a/man/tm_g_ipp.Rd
+++ b/man/tm_g_ipp.Rd
@@ -94,11 +94,14 @@ body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_ipp}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -107,7 +110,7 @@ a \code{teal_module} object.
This module produces \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type individual patient plots that display trends in parameter
values over time for each patient, using data with ADaM structure.
}
-\section{Decorating \code{tm_g_ipp}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -193,8 +196,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otQ6AKQAfBP1DTpjMnDsAIyIAEwADDbTsxDzOvzG-QORMsVp0Nn7Tc3tAEJdPX2Dw-zU9JMzcw3GtNTkRjsBytBz3ABSAElmpNyhNbh0ACQgsFQ5o7b43BpHE5nAgXK4YvYHP4A1TsRoANUhrUhth0AEIALw6BRgVoAYSwTicADlIbyAOJsoIAXyCACsiOU0gBrOCsUSVRI2fL8ODGKDCUhpAj8WiiPpSmXyxXAaDwJW5OQAXViLQ6XVywGAbId7TZNrtEBaDydVRdbru9093qUaFQXXKxXYc1yOhZuVwcz4QhEogTOlTwjEsax3RgaQA5mlaOg8wcGtQoPQ4OMWWzIXEtLQhNwdAAFBK0CikTv+Uhs5P57FVC26BtgX0hvA-eYsQuaFiZgglaUEMRpUR1uDqOD8CuVhpL6iCOC6tdLJXTmpurAAWQ5zRFw6PDTv96abLnDTkr8rqAsLAeorpeG6iFuO57geP7zCeZ4XuuuY3qyYAdo0WCNI+z5gH+sHvlO7S2N+I46HhpFQCeaRLowoFIRB24iNBh5HjRtA1iIiFXhSwY1AQsZTpSjQengqEcgAEsKuHkW+qFUsJJFHjJlaUdwgjUcuLKrvRkFMeQMGkceLDsfQnHadxKH8W6QntA4IrKUe1nCXZs6GSYtADPumb2M4sEOfMrYabRWlgZujG7vpLGVmxHHnuZ4E8Q8fECSiELQvZ-6OWAqVokO+HuZ5-DeY4Likf5x4GhcNF0VeukRfuUUHDFplxaF168ToVmCTSdIZfl1k9cRYB+Zl8z0FAjHlOe1UhTp4XMflzVmW1iX3MlbL3I0rQuNJo0HBtW07Xt8x-IVxW+WVx0jPwaTjZN3hpCUUgTjoABiwnbcd26Acw5C3awaREPQGYsu97TbXOQS-koQS0MYOjsOUgJQBY2jWDYdQ3KIZQQKwjTlhGiKCLQNSE9ujDaDEECikoYCijaQA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_km.Rd b/man/tm_g_km.Rd
index 67f6e17dc..f9c74b40a 100644
--- a/man/tm_g_km.Rd
+++ b/man/tm_g_km.Rd
@@ -103,11 +103,14 @@ For example a title.}
\item{post_output}{(\code{shiny.tag}) optional,\cr with text placed after the output to put the output into context.
For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are useful.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_km}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -115,7 +118,7 @@ a \code{teal_module} object.
\description{
This module produces a \code{ggplot}-style Kaplan-Meier plot for data with ADaM structure.
}
-\section{Decorating \code{tm_g_km}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -190,8 +193,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQSvxQpFD6RlzUAPqh4dYhYRGGOgDutKQAFrQQ7PFQuDogSjo6AIIAIgDKADKROqQwBDFwAB4xUPyi1KUVlba2Tg1NLe2d-KTkSgC+QQBWRLkxANZwrKL5yTap-HDGUMKkMQT8tKIti8trG8DQ8JsFcgC6rhBVdQ0FwMAKYB+1P7PV7vAZDL7JH5-KqDFxgYFvFgwGKMfYnIgwVANOiiUjsPrlADCtnKWAAsoTKjoALw6HF4vplVHGGk6aHknQAIT+uEZOmImNZBHx-w55R5bNFZJ0hL+QTKcl5EDKpOltPp+OVZR0zNZf05iB0AAVqFACHB6EQeXyBVjacLoYbKoxBABzHQADQlf0JhsJGPouTClmCYHlOiCQSUaCxqVymU1ZQKrIKSrKfCEIlErIzwjEie1TRirtWMAL2rpUHocGoerAAGk0KaIAYyXBaKpjf5SNatRWCvddLToWC4WmKzokTFNCwhVklubRDFRDW4Oo4PxyxOZ4xaFWRCd5zJ8wCig6pd6pZTL0SSeTr2HFXyK+yyX9nxHxxXUCxYKc5wuYjLqu66bh+ZQztQghwIegGbDCQxFH8RqkuUFKVJeKFYGhcpfhOfwAPLVO+fbak+pFlFOzLooKtJUWitp4WUuLMOE06zvaR6LsBIigVuFY7nu9AHgQXEnjUtRniK1ROF6eCSpyZJYPWWAAExyuRE7an8MlyR+mkTgc5rHDuAHHkuK68eQYEUdqgn7jBolwewp78tJsmXopylqRpTHagAcg4tSArZ4YKn0kZKLQLLsLk5BqBo2jWDYJRaqIOQQKw5ToOwMYACSCLQRT5SujDaIEsxKGAMzPEAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_lineplot.Rd b/man/tm_g_lineplot.Rd
index 75b9a6329..8c4ba63fe 100644
--- a/man/tm_g_lineplot.Rd
+++ b/man/tm_g_lineplot.Rd
@@ -108,11 +108,14 @@ the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_lineplot}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -120,7 +123,7 @@ a \code{teal_module} object.
\description{
This module produces a \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type line plot, with optional summary table, for standard ADaM data.
}
-\section{Decorating \code{tm_g_lineplot}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -182,8 +185,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBbgyhHMYBsqSiQUr8UKRQ+kZc1AD6GVnW6ZnZhjoA7rSkABa0EOFluDogSjo6AIIAIgDKADI5OqQwBPlwAB75UPyi1O1d3f0AQkMjY5PT-NT0OgCkAHx7Cx0wglnk7J0AagCSvbe2OgC8zybq+YxwAfyqV3cPWwtG73R4AORaMAaciCAF8ggArIgNfIAazgrFETSyNgqv2MUGEpHyBH4tFEYyRKPRmOA0HgWKKUDkAF1XBAegMhkzgMAFGBOf1+Sy2Rylqs8WVefyeithaKlGhUEMGjV2AsmS8dEzcAs+EIRKItfrhGJ1RAOh0RvkAOb5KRwSJEUjmy2W6hQehwaha-n9Bq6AAK-lI-N1Frd2rK9N0bxl4rDJ0tNsYREEqHymhYWoItWRBDE+VE3rg6jg-FdkY6WcYtE9IhJeZkZsFLQI6oFWAAsmGdDLuwBhbq9mUD2ydQfDsAw8NVjr9ntgJMdOSzyOsHNNguiIslssV5eWmt1+gN3P5lvitsdm6dIV4PtgZadXouB-8gcACQA4iOwIGv1-adV0PecBWuO9+UPECIzdVAWFgTcLx3YsRH3SsqyzahBDgRtkKuK9H0DCdOi7Ic-2IrBSP5GC50fO9bCg2DLSCN1WJ0IIgloYwdHYBpyDUDRtGsGw2gjUR6ggVhOnQdglQAEkEWgWgU4tGG0GIIFhJQwFhFkgA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_adverse_events.Rd b/man/tm_g_pp_adverse_events.Rd
index a5e56dd54..3656ffc29 100644
--- a/man/tm_g_pp_adverse_events.Rd
+++ b/man/tm_g_pp_adverse_events.Rd
@@ -140,8 +140,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACKNTsk6pDAEaXAAHmlQ8XD1Tc0AygAyHV09-YP8otQ6AKQAfCujDca01OSM7A7jDgBCAFIAks2r5StjbQAkR6eXzUEAvkEAVkTlaQDWcFYokqiRs+X4cGMUGEpDSBH4tFEPR+f0BwOA0HgINycgAurEWlMOrlgMAFGAiZMKXiCRAWm0SVUyRSGS4wLTYmhUB1ysV2KNcjoALw6XK4UZ8IQiUQinRS4RiAUQBoNLppADmaXQC20jFEcF62jIIK2quoUHocGWotZ-D1Bp0TmNpFEFIlKtVDVyWN0tsprXZHq9DVQLAopF9ctZE2peDNoYStAj8KINp0FOe5yu7oTOkiRDhJTgtA1JVIcoI7AAbAAGWuTGoAJnrjZ0LdbcmDIagcH2MErJV+BDEaQNInUcH4ypDqoIQ5kYjlmhYtEtInhC5HILZNVZTlsTiwAFkKV28w1x3BJ-xo5SD0fT2A8+fPV7SEQBhrmJDB8PR1eN4zrOOjzv+sqiiujBrvQG5gYuO6Bnu962AA8gAGgA4lgZ7drOgHkLe-ptGhWE4c+b6qq+s6yIIojcMUrB-ghY7WtehHATRW5LpBq7roa8Hbuwu4ZveWBOHG1EgQRU53m04lxi+eGqkQgi+EQ8DMdurEThxF6gdxEE6FBMFwYZwlIaJbSoQ4ti4fpMlEVZTg2XZFGzlJXpQBYJBaQBbFAfpgk8cZfGwQJ5kifujQAMIAHL2ZRXqOXJTixQl7khp5qoaJporBaIOnsVOnEhgVy5hWZ4EWW0yGNOMtjNAAmolIE6ClxENc1FJKXmkLEE5cUOJM1KUUEDRBEEtDGDo7DlPs3kaNo1g2HUnqiGUECsI06DsNyDyCLQNT7QajB6h8ShgO8eJAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_patient_timeline.Rd b/man/tm_g_pp_patient_timeline.Rd
index 62c8d702a..6a6c4a5da 100644
--- a/man/tm_g_pp_patient_timeline.Rd
+++ b/man/tm_g_pp_patient_timeline.Rd
@@ -89,11 +89,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -101,6 +104,18 @@ a \code{teal_module} object.
\description{
This module produces a patient profile timeline \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type plot using ADaM datasets.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{plot} (\code{ggplot2})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
library(nestcolor)
library(dplyr)
@@ -194,8 +209,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACKNTsk6pDAEaXAAHmlQ8XD1Tc0AygAyHV09-YP8otQ6AKQAfCujDca01OSM7A7jDgBCAFIAks2r5StjbQAkR6eXzUENLQDCALIz3b0DIYEGCrDZbHQwQSJcjscENH7jWzNACaOgAvDpZKI4GkCiUKLCIA1icSfp9GrZ0RiFGB4PxJDoTjSdAA-HQAJgADLg4aTvuTKWjqbS4PTlp9mWyAIwAVm5vIa9mcrJ0Ut5NnWdyKpTS1Cg9Dg1FhYHGpEE-FYOmaUEtRGMOlNLFIOjtOm+opkCUsEBpch5RJJOh+TgAcij0ZioNjcfiKgqg-yKVSdDS6QymWAVQB2TnygOBhMC5Op0UMiWZ6W5vMFxWOdpsuWc9WgrXFEq6-WG42m82W622+1OOIu+3u-iejQkX3+gs-RqI5q2X4Y+dIpczwNz0OL5dNbdL8FBAC+QSUACsiOU0gBrOCsUSVRI2fL8ODGKDCUhpAjj0Q9C9Xre97AAQxotFMNI1DSLRtJBKZgF83y+gAukoQIwDed6iB0oE0oiDgolccE0s85xEXg8GrjuxFgAiTgAIo0RSnxqhR0G2J87JMRxADM3GfAALL656XhAmH3o+UByMA0HND8TFyUhYDIR06HiaIImAVhknSbJsFsQhik0ip+S4SatgEci5FQWApGvMJPrQOgHTlMUhINLkEa5BufBCCI2EYr5whiO5xJdGkADmaToNFXoUF+GjwFIcChSSeoGsswoAApxWQdi0El5QjHgvK5NA8ALFAujCjBLglfmxJlbAOLoRGsnyfVBaoCw8XldVlETJMkG8t1Gjxd+RCZfBdnWSN-hfvitARSUzoYqBABsuaTDUXKcttHJVpMfq8sCr7EPwEYECUl4EGIaTYiI6iiqlgZXTdYgRpoLC0PqIjftdMghbkwAyYZHXIchNk-M0TifAA8s007xg9cBPRdwrQ7DCPDQ1DTHbjOhVfsIJrQDt2iPdhqo+Q-AvSSb2AwFOhfYwP30H9DPk5JIN6XVEM2W0thOFgSn4zWOgo2jl1gU4Qsiw5BZi4GRMFTioiJIwq2YmTd2SzTdPEpzH0YizbMczrD7A6DtXGZDlELgeYBKwWeuitL0EO6L6obiSKsVRQ6Pa+9FOu7T8ZG0zpu-TiEfc9brR83b0H7qLPuBqH7sISnCuBs7jXq6r90a1rEeU49+vhxbn3fdH-3B3H7VKfz8Fzp7SMEw0Gdrcardrl7BN5x5Bf+8OpPB2X1PPZXwfV6ztex1bje21D3xtGGjuD8SXeYj3q-Z073u8lVjCGvErBF06l0WxPaMGw0Eez2bMcWw3hn6c3HtIsi7fi9vZlUd-A+A804NGPqfG0vRR5B0ZjfCuHdoHk0fvPF+i836JwFtuQBm9O5Uylt3ZOYYsGHwJosE+1Az4X01lfceoc74IONszGu7Nn711QYhZe9sv4-xrH-MCC4iHANKqIMhFCA7UJgbQ6ejMkHMLrozV+7DlJJyzoQ7hLtcE00zmvFEOcSTvGJPooIQRaD2nYOUfYUALDaGsDYOoAZRBlAgKwRo6B2BoFQA8QQtAajuIeNiRg2gYgQCPEoMAR5kJAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_therapy.Rd b/man/tm_g_pp_therapy.Rd
index 9938b5547..9eb2f3fb4 100644
--- a/man/tm_g_pp_therapy.Rd
+++ b/man/tm_g_pp_therapy.Rd
@@ -86,11 +86,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_pp_therapy}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -98,7 +101,7 @@ a \code{teal_module} object.
\description{
This module produces a patient profile therapy table and \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type plot using ADaM datasets.
}
-\section{Decorating \code{tm_g_pp_therapy}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators::
@@ -206,8 +209,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAwgCyyTqkMARpcAAeaVD8BDD1Tc0AygAyXT19g8P8otQ6AKQAfOsmtNTkjOwOUw4AQgBSAJLNG+U7LR0AJMdnV81BDQ-tjx2NU7bNWydfJfR5-AFAiag35OABygOBRlBjThCKUAF8gkoAFZEcppADWcFYokqiRs+X4cGMUGEpDSBH4tFEfVx+KJJOABHYCjALVmvJqvK+vLkAF0lCMxoTiaIutzef8HM0AJrXQU6XkvC7qvCavn-NF63kdKZOACKGuFtlaAEYrXybQAmB2NG0AZldNoALKKcXiIDKSWSoHJgMK2u1XZHeWKulKYEHRLF+XNKVVgOG+dMZrGJRAvl1cpmIx087E0KguuVijyIA1cjoALw6XK4CZ8IQiOUtzvCMR1hoNHppADmaXQaVKqjQHAmQ501Cg9DgaxbvNsJRnqFYgvnQ9y0Hgzf1Irw+4aqBYFFIR906+zAvP9YXOivGhvDKIa-12ree5fBdIiIekt1oUcSlIE9uQANgABjgmYaidBCkJ0FDULkdtAKHBJaEYVdoJKPECDENJRFXOB1DgfhB1fBoCGImQxBPTQWFoZcRAZJjSNJL4hUdS4sCcXMwCwi8hwokRqP4aCeUE4TRI+V9xJwhiYCpYhZJbRiSLIqSqPIWiJIYniWJbNjGA4+guN05i+MjASOmaJxWgAeWaUVsPohoDJkk8TXaFz3M8sAJNU+ixnKUYiL00RyMomS6Misyex0SzrNs1L2H4-UOkueFWi8kydD8oyArAfLCt5cLvNfMZ+CICjYvshLpKM5L6tS1j2M4uBuLinLHLyoK3LNYq1MkxLyofZyxpcMLJoi+qYFIRgoJ01K2sMmjOoXOzeJ6qy+oG+yho6Jz2nsWwJp80rppoiqOmumqlrq-aNKawQWt47akpKg7zPS3qbP6wGHIukbmjGhxbp8srHp0+S5pOP03oksZGCIQRyB+-SHuMybTLio7MrB7LcsCrA3IcWwFuW+iEe0kbqdphbaoxz7RGMRgAEc8fipm9qHcHSZO8HzvaS7oamAAxLBLTE97XyZp7RrlhXXvohmRZgURSH4VgBb+jqAe6iyQaywbKYNAEVThxmCYq8FVS1lTlfUihDeNoWzZJi3jtB07eMlgSUXhe2lZK1WH3D13Fu1-dlKCIJaGMHR2HKA4oAsbRrBsOoX1EMoIFYRp0HYStHkEWgairijGG0GIIHRJQwHRMUgA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_vitals.Rd b/man/tm_g_pp_vitals.Rd
index 8d8931f2f..750524dff 100644
--- a/man/tm_g_pp_vitals.Rd
+++ b/man/tm_g_pp_vitals.Rd
@@ -61,11 +61,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_g_pp_vitals}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -77,7 +80,7 @@ This module produces a patient profile vitals \code{\link[ggplot2:ggplot]{ggplot
This plot supports horizontal lines for the following 6 \code{PARAMCD} levels when they are present in \code{dataname}:
\code{"SYSBP"}, \code{"DIABP"}, \code{"TEMP"}, \code{"RESP"}, \code{"OXYSAT"}.
}
-\section{Decorating \code{tm_g_pp_vitals}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -135,8 +138,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQSvxQpFD6RlzUAPqh4dYhYRGGOgDutKQAFrQQ7PFQuDogSjo6AIIAIgDKADKROqQwBDFwAB4xUPyi1KUVlQBq1Q1NLe2d-JqiSgC+QQBWRLkxANZwrKL5yTap-HDGUMKkMQT8tKIti8trG8DQ8JsFcgC6rhBVdQ0FwMAKYB+1P7PV7vQbDXbJH5-KpDIEgpRoVANXKZdh9Ao6AC8OgKuD6fCEIlEWJ0BOEYjREDKZSaMQA5jF0DFNJluJs+tSdNQoPQ4NQSX8BqzqNM8BzqQV7rpsdCwX88VTOTpUCwKKQpQL-jVAWLFZyVRo1SciPyZWAHNUHAAhABSAElKvLxWVUP5jlk4LQ6VlSCSCOwAGwABiDtSKACYQ2GdJGo3IFUrlSxYKc-VklgQxDFRHy4Oo4PxKYmygR0zIxCTNCxaDyRCcy5nNjDqkU-gAFcpYcoAWQAwo6wPHndScyJ8-xNR2u32B8Oh3rqW0oG1zmmM1nR3nyIXhyWGxXsVXGDX6HXS+um2DW1qAJp-efFnSb8eaqp3sBzhNKqBV2JHtflqI2a5uORbFuegGVtWtZwPWF7sM217lAM5Q6g+xbPtur4oTqc7ikEZRBEEtDGDo7C5OQagaNo1g2CUiqiDkECsOU6DsIiAAkgi0EUnE5ow2iBLMShgDMzxAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_abnormality.Rd b/man/tm_t_abnormality.Rd
index adfd7b3e1..354447385 100644
--- a/man/tm_t_abnormality.Rd
+++ b/man/tm_t_abnormality.Rd
@@ -91,11 +91,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_abnormality}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -107,7 +110,7 @@ This module produces a table to summarize abnormality.
Patients with the same abnormality at baseline as on the treatment visit can be
excluded in accordance with GDSR specifications by using \code{exclude_base_abn}.
}
-\section{Decorating \code{tm_t_abnormality}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -181,8 +184,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeXVAEJ1DU2t7fzU9DoApAB8Uz0lMIKh5OwLJToA8gBy9rYAYrUAvDqyonBRKRkUaxAb92UAagCSlc+209lTp2tglQDCWCcTm2z22AHEFHgdFD+qVKk5qmCXGAbAA-GFgKG4db3ezOHQYqEATShuJ0Nlm3zSmSi1Cg9Dg1F+mzutkYcBC8DIOiwcGIjH4On29IA5lCAvcAgBfAIAKyI2SiAGs4KxRLlEjZkvw4MYoMJSFECPxaKImgqlar1cBoPANXk5ABdVwQCo1Op5YDAKHu6pQp0ut19QY6xLe30hgNBpRoVB1bLpW4lPI6E55HF3HR8IQiURp7MCYRiZMbBpRI0MiBERgwbjpDjk+mM6gF330au1+ukVh2BkibHkvJ23QnSMDQdZ+4sGBRTQsAsEDKKghiKLnETqOD8UsPU7LmRiAvzxi0fsXJcrkt+gqiQT0c6kRe-UpYACy2Mxr7f-3KErkmZ7iUG78uQQpjmA35klOGwAeSHT8BWRChK2Jz7KU1QIoBDz0Kwc4sPmJyXoeojrkyoHbruDzEauhE6CeZ70CIxoHrR7AVAMt73o+z5QgM-ylLYn5QgACq+pQftCvovG8QmonBMH3CBW7gT8fH9AJckFKJ4mSQpQE6KqcCoFENa6owBb4i4ikUth9z0FAG7ZBcJ6Lqxa7KWBVH3Ax54sVeGocf0XEPnAT4Qf02xYGCf6onZDyedubZgJF0XbLFBTGLQLRJScVnkvpDyiswupuQFZGbl55IlDRR4nL5TEXu5gUhiFPEQaUUUxRK8VKeRKnJZ1aUZdVJjZbldiONZe6FdOHY1nWqE6HQoikOw1BECkyXVJsADqn5ZKKGTJQAEs84InT15KtJIgi6lEDnnO0HYFuhmHTbBPQBAEtDGDo7DZOQagaNo1g2EUWaiFkECsKU6DsHGAAkgi0AUSPnIw2j+Eo0pKGA0pOkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_abnormality_by_worst_grade.Rd b/man/tm_t_abnormality_by_worst_grade.Rd
index fbb89aefb..fa0d96a3b 100644
--- a/man/tm_t_abnormality_by_worst_grade.Rd
+++ b/man/tm_t_abnormality_by_worst_grade.Rd
@@ -85,11 +85,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_abnormality_by_worst_grade}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -97,7 +100,7 @@ a \code{teal_module} object.
\description{
This module produces a table to summarize laboratory test results with highest grade post-baseline
}
-\section{Decorating \code{tm_t_abnormality_by_worst_grade}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -158,8 +161,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeXVAEJ1DU2t7fzU9DoApAB8Uz0lxrTU5IzsAISlAGoAkpU7ttPZUzoE7ApglQDCWE5OAHI79wDiFwUX-aWVTtVPLmByAIAXwCACsiNkogBrOCsUS5RI2ZL8ODGKDCUhRAj8WiiJrgyEwuHAaDweF5OQAXVcEAqNTqeWAwAudOqF0p1NpfUGyMSTJZ3PZnKUaFQdWy6XOEBKeR0AF4dHlcD0+EIRKJ5TpVcIxFKSiUGlFMVB6BAiIwYNx0qwovQbSlzaJMQBzZgovX6krUE1waiai7VE3mkLm1h2MSkHRYMQYjVpTI6AAStGdGQjOmebt0AAUiE6DP0oKJfdk4G8Fvq8qTdAqBQNy9LPToWDAopoWJqCBkIQQxFFiyJ1HB+B6m6duzIxJr24xaCaRFiJ734ayCqJBPRi5GFWcWVgALJvHR7-dXcoXQHKxtjgdwIf8f1gUoHi4VkpyK9j1AsWDYztLvtb3vUcmy7HspwVdtqEEOBF3AlduXeMBs2fUpT3PPBj2Q1DDwBT8xx0IDyAfHdzifapbCPC4bmzKiwB2Z5SgvN8dA-FiOn4I0iFCP0FQAMVKapvgrAJ33wpYVlUTVIn7OhlxAmSuknMjWToypSj4vi2Uwojh0fABNC98INOBuFk5S636OiAHl7nsWwtKPXSSKwwyAR6AIAloYwdHYbJVigCxtGsGwikbUQsggVhSnQdhRQAEkEWgCgS4tGG0fwlCBJQwCBSkgA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_ancova.Rd b/man/tm_t_ancova.Rd
index 48cadf2ca..33b7bd0bd 100644
--- a/man/tm_t_ancova.Rd
+++ b/man/tm_t_ancova.Rd
@@ -78,11 +78,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_ancova}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -101,7 +104,7 @@ expects that the analysis data has the following variables:
observation per patient is expected for the analysis to be meaningful.
}
}
-\section{Decorating \code{tm_t_ancova}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -182,8 +185,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyARVyikrLK6v4AR1ElAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdVwgcgqKk4GAFMBv8p-PL6+bWxdCHp5yWm8PkoWDA-IxlhsiDBUEU6KJSOwGpksABZHQAXh08MRDQyEOMmJ0TwAQogdAAFahQAhwehEJ64PE6YgwokEJHPcnZRiCADmOgAGoziWAAMLksXQ+jxDyWCBPIYZORMiAZTJi2wo1Fi7JEnFItUZHQEon-NE6EmM5ms2FYjnm9GZEWOnRixUNIZDEHoIrxaKGjJJIlJVUZPhCESiIkR4RiQPGkp+dZQcxETRQBPG7FQehwahm54AOTFAHkAGqZOy5kTWo3ZpLHXRY-5fOvZjJQTTbaLsmJjWmiPyifNwdRwfhZjsEfsyMREjPUQRwDazwfsAG5FL-csASVyu9sirDHYyI5E4-4hYA6k4nABpHQARh02UyAE0dAAOJ7M5Un7NQT8DNGD7AcxGHUdLynbMZ3A6MsRA2gaxXOC51mF4UgdZ40RdZ5NW1XU8MI7JFRVP9jXPMdyCvFscJ1UiwAo8j62NICCShNksXYyFbQAtjF2AlgwPQyCLxomDjTQwcFxYZD6BEVd4I3L4sM5MUAAkAHFiMrV4wDkFjTzPKCaMLTSdKY1j-wo4hNCE0D7TXCCqOgiiMmk+dELklClPQlSWjU0lMlyFw8FFXJ7EyLUnzw0LhQMozjNcsy6MirBosyWKrNPJLs1QFhYE2ETBzE6iJ0kjznIQnRF2XPz103bcwApFFMgYvDWoy1Fj3cnQUonQsADF7wPAwhuvK0co7PLjXicg1HWECSpc0yKr6zyaqQ3zNoCrcWU5EkQrC5r0sy7LTqcBLDP47MBtoiKopi39rJ0JVjXer0lFoQl2Hm1QaQ0bRrBsNIjVEOIIFYTJ0HYNBUAAEkEWgUnhhGR0YbRGCGfolDAfpziAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_binary_outcome.Rd b/man/tm_t_binary_outcome.Rd
index aaf102c18..697dcdaa2 100644
--- a/man/tm_t_binary_outcome.Rd
+++ b/man/tm_t_binary_outcome.Rd
@@ -105,11 +105,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_binary_outcome}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -127,7 +130,7 @@ or re-categorize response categories and arrange the display order. If response
\item Reference arms are automatically combined if multiple arms selected as reference group.
}
}
-\section{Decorating \code{tm_t_binary_outcome}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -216,8 +219,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVYlXUNTa3t-IyiOgCkAHyTPSUwgqHk7PMlZQBqpdUAwjoAvDr8USTEUeOoUdRQ9HDU7KVbuzYzcxDrH6npGVc3d6tgHYZFhQdSqHRYMTCUgAegAYtl+NkAOYKMABD4vWZrYy0ajkRjsAAKpSwpQAsjtyjoAISHNEAeQ2WAAkgA5DZonQAH02LMqLNsB3pYDhDOq1QZAHUdA4iWiAgBfAIAKyI2SiAGs4KxRLlEjZkvw4MYoNCogQkaImmqNdrdcBoPA9Xk5ABdVwQCo1Op5YDANHe6pot0er19AZGxL+wMRkNhpQsGDnE0WogwVB1OiiUird5lLCU6mHbO5xgmg46QOFnQAITRBWIGcrBABpPJZQbVbA7Z0OwVclwPV7JdoOfY5eMlbRtcQOiJ1wIcHoRC7Tczh1bgbn5UYgmROgAGl20Ts5zt0-RsiFLIF0QEAmhM8lsuk8yU8pW8kP83whCIJkOP9hDEd91gaKJSCiK9oDYE4libOAwI+a5bmoacwEhURUBIY1xgbNYP0SJ1dBFCp+gI-MPlQEFGn4FsMnVJdRCiUQ7jgMF+GQz4CEYmQxErTRuEEOALT45iHgjAo0RJMkixPMBZIpBUf0+dY2JETiMNrJxKn6IkWTRQidEHYykyiITGAYpixFY9jOO4j5eJswCdEs2gbhEMSXMk-pGzbQsFPbKkgp2WxgvKAdVLUnQNI48h6LIwKwGM0yqPWczJzTZtDky1N12ij4c2YUILJYaz+JYuKHOMkpnMqwSWA8+gvPqiTyMqfy0UqJxjzwbta3JLAAGksAAJgUskdhce9Cs+aqEowqaZtSuaPxNM18RTbCSDY1zS0c9YdL0yoDMrA7avWC4WwBC8MxEcgITEHCIDYnR2B2LBFH6mSWA0bgnp217dGJL6VMukoRG0ahXK3dKYu7O6fDgR6sJet6PrBn7FL+jz0LR3aQaJLG1pi7rQha3RyjHOAoAxypym+6TFMYIhkXLURRC0KmabponGaM+HPgxGK0oR9kNicIVR3HCGdGuzcAUqCmRB0am2L596GaZ7s2SIUgdCcITqEETyQbZJxvrFhGdChu5YcOtTT3TZHUeewn3s+nW0T1g2jeEs33ot72ccYf78fd4H3uJpm5ZKGTWfZsQue0NXeYxokBex5XA-V2n6azuWRbU621KZVkOXOsdczlhWdC3Fm2Y5lOeY1jOs+ZnPKbTtuQe18GhZQuBoYdhOm+T7me-z-mQ671W8819h++x33DeN03u-YYOFUu4v1j3kWHyUWgp3YbICVBDRtGsGwinzUQsggVhSnQdgnwAEkEWgCg-tjGG0fwShFRKDAIqN0QA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_coxreg.Rd b/man/tm_t_coxreg.Rd
index 84e31e892..f8ff94657 100644
--- a/man/tm_t_coxreg.Rd
+++ b/man/tm_t_coxreg.Rd
@@ -81,11 +81,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_coxreg}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -120,7 +123,7 @@ test will be substituted in these cases.
\item Multi-variable is the default choice for backward compatibility.
}
}
-\section{Decorating \code{tm_t_coxreg}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -263,13 +266,13 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpQGI3OgGK1Go0jpwAB6wqCLungC80TGxMRF2ABa6waEiOvRw1EQA7jq0ohlQonD8OiQ6pMk6gqKC3DpoqIxEUASJ+RCaRNSatBAA5joEjHBQGhVExglQOswQ-EQwOgDCACIAkgDKKzr848VwAVALlckQc2bKQ1W6TXSyExAYrtCMMAD6o8YfxDCo+iMdH87CUOh0AEEVrYIVgALLrHSRHTA0igi7guZwYxInQKMCwuE6ABC+NwYMxfwByIIoIJ8MhZLx9KJK3xigxcnJGMJuNR6MxWJxyPxxMQOgACtQ2nB6EQyRTwVTcbT8RDxWtGIIhgANJn4lbilZLej9caWCDsikcjlKfakWaGSpjagfe1Qax2g6AnQ5WhVfrsd24HQgCkQtZbAAyPtIMAIH2CHyg-FE1HDa1sticsfjiaCyf4pHISgAvhyAFZEfofADWcFYoiDBxsTv42KgwlIv34BQTVZr9cbwGg8Cb7rkAF1XhHoz73cBgGrI1H8ZPpxAI1mc22Dovl9u1xulE0ff1-QK9t7kcGKXwhCJCsj78IxJfwXGPt3iEFRgN35i0qZNQuIGkQQQ6FgcADC8eCKpi7qjroIoEpm2YKhigosJ8mgsCqiTVgQYgfCUIjqKU7Cqiy+osusNFQjC8J0WAXLMoS7LcoK4LYV82K-Es1KNO8vE-FSnFcagLCwAQZQ0gRMjEaRcDkfwAGCrh1CCHAvzyURTZbtmIb4hKsIQgiaw0SZWBmRxzIAPJbPi8Hglyzk6P4zAOh8uGMPhhGKVkynkKpblKnSKx2Q4ABy9gAJo0Vs9gQjCACMCVJTCABMtn4ol1mpU5mGYq5RVKkQmjeXhcn+aIJGBSpamUnSEIAOIuHgzLEnCWAANJYGlHWit1fXZYNYBYE4LUbHZUUDaxaptYVXE6CVy0wF2WgsLQ4zIXYjguEVHIuUoHK0Di7D9OQagaNo1g2GGGKiIk-SsBC6DsE0AAkgi0CGX0lIw2iMBypZKGApaTkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
\item{example-2}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpQGI3OgMpxiEfjpwAB6wqCLungC80TGxsRF2ABa0ojoa8Lg6UDqirGSJcBoEOqhQtIw6RMY6AIIAIra2TgD09V4AMjr8UKTZKSZQTDI9cAHGRBUAwkRBOoxwAObzoqKWEAkA7gXzabRiWf4lmtwA+vCkiQI6MD3kjBhKdEwsHPxhrIyK6-492YZpcFO3V61iUwL+Rg2tAutAg7HBmRASh0tQaTX0RnBGGMzHg7GRKO8tgcdQAmgBJOo6SI6BRgdoOAByAHE6bgCSiagA1GqdGkEdgAFkyAGZMgBGCWZABMMtFUp00rk7IghJ0k0ZXiw1J0AslOn1+oADArjZkTTojcqObUsABZSZUmnGKDqCb41Vq3XsC2G03mgOW83Wz1q6iDODUVL8-FgGr22ps2lxhMAITpXzVIbVXicAA0dS63YwPV7vRaK4G-QbTdmveH6JHo966QAxJN0u0Zm11lHkzW2Quu0jugV0moduOT9N4ZMzzLj6eTiezunz5MruS9nKkRiwhaiGqiVvDibN1u83MEzOoxpODFzeiw-jsep3zJvpoftFOb93m+fve-xQKIJwaPQ9AiK+P43qIhQYHBozsOKAE-gAJP2XiDv8oihFBgEYQOqF3mhNTMkBRi4TAYRwOwcEAI7sAArJkADsLE6Exyo5LQABeug0hAjBEBs0H-pk8xhK6Al2I4TjEU0aEOF4DipgAUpSD6lKI5CxqIgj0Em4qIEJIliU03EEZhtiZHBqA6nSBjdp6BEAArxjUdoPm5HkOlS-x0gA8l4dIEm0nQ4QZcGkKWhKASqapwSI6g6mOYDKapGl1JOWEkhS2Wrimfk5fmk7Wcu5HOSiXwAL5fEoABWRCwicADWcCsKI8K-DY-z8HALrCKQJwEPwKQECcTUte1nXANA8BdeCcgALquBA4UPuCwDAOOdQdHSy2retP6bb8227XeB1HQkAAGXDUDdWToHQsgaCQCQGJ9X3fT9TkQB4OiMkQ5BpIkPSg7o2rEP1gRBKgEzkAE9CsDoN1eJcGw6Nq0z9Y9-BEPsEDAzosKSIIMMXLo4IJKg8wGLTRAEGIqwQAsGA6KSRCCDoULUNQOgQHAoxpEQurzCMENdL80VZKkgxENoOiNuM8wJIwZjKAskvBPDjCI1juoCHADzfCwMAnPMxgjUQ1EPnQOmvvajo6vbMWWw5RWJrOxC2zG45phmW5rWg9n-LC0KxeCOoIgSfBCCIzZx8IYixSipDm8NxBBPMCyp4SDaRh70yzFgiwPHgNoouC80yRdTRspXWSMObxwVPylwyGIJxJb4iPsGl8bFWA3H+0P24ombFsDdbvtN+blsz6gCVeqUuKjalHdM6BPfqEhjcosc1CCHAI2byn8XJu5WCeY6k5X55GYLmAwWhaGhLjzuzC9Ccrcb81W-d0jL3JCaVyrD0yIyBw7R2gf2IJoH+LA-6d23kA3eL40q5jzBVFw4DkyYMfo3GAQ0tAsFoBLGk9hnA9mvEoL4tBqjsFhHcYcWhaJbh0EiT0ohkgQFYDUdA7AQ5oUELQTIQi4KMG0J8JQNUlBgBqstIAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events.Rd b/man/tm_t_events.Rd
index 08a0a9768..dd0cf908e 100644
--- a/man/tm_t_events.Rd
+++ b/man/tm_t_events.Rd
@@ -90,11 +90,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_events}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -102,7 +105,7 @@ a \code{teal_module} object.
\description{
This module produces a table of events by term.
}
-\section{Decorating \code{tm_t_events}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -158,8 +161,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOzMpyKSssrq9zglAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEyoZHxyeBoeCmkuQBdVwgcgqKk4GAFMEv8+5Ozi6aWudDb+5zm59elGhUEV4tF2A0kjoALw6JK4Bp8IQiUTQnSI4RicEQDIZEp+FZwbRkKYNHE6ahQehwaion78bSMUS6JxE0h2Skie7w7Fk2GhA66GE-d5c0k4lgwPyaFioggxYYEMR+JkidRwfjsAjgh5YACyXJ0Pz1AGFsvc5CkjfqwBaxRlqNQ2TC5QqlSq4GqNXacS6ZGJUdLGLQOXBVvK-VNfk4Ulqfk5bE49Qa49knMaAPJmm22nm8nTuz2y7XNVMZrP9PM5vMxR2y8OK0TK6ke8he3O830NgMsYP0ERh12R94x4tOABCmdyAE1csmHk5cunjeaq3n883C0L5xO8jP7t7V2Savx8URPDSYfZnNy84SKCtSKxUILDSh6aomTo72R9+2Kzp+n6WhjB0dh4nINQNG0awbDSHlRDiCBWEydB2CBAASQRaBSDCmUYBl+h6JQwB6E4gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events_by_grade.Rd b/man/tm_t_events_by_grade.Rd
index 158dcdced..a4b5d9972 100644
--- a/man/tm_t_events_by_grade.Rd
+++ b/man/tm_t_events_by_grade.Rd
@@ -137,8 +137,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEPxQpFD6RlzUAPpBIdZKMaGGOgDutKQAFrQQ7Am4OiBKOjoAggAiAMoAMmE6pDAEkXAAHpFQ-KLUhToY1PTUoq1BuknEUdRQ9HD9nPWNLW1QcAFFZcVONXUNzYOLOgCkAHx7XUUwgiHkkbTG7LTiBOksUOqqeVDixs+kRP46AMQAch0kx0BFUISyOiIxh0j00WQA5iYvj9RF1RpFxpNpqsnDYkj0+gMFnAlABfAIAKyIWUiAGs4KxRDlglB8UZ+HBPsJSJECPw7g1qbSGUzgNB4MyEnIALquCBlKo1BLAYAKMCKyrqmVyhWlNbK1mq9W47W6pRoVA1LJpdhdBI6AC8OlyXT4QhEoidOndwjEdogRSKdUivLg2jIA3orEiCOYnIDQaDWKm3pN-G0jFEuicEdIXujOgA4vHdLYJiJ1bgTkGEhLdM6TfqXHga0UWDBIpoWN6HjSwQNsyIXvx2AQ7RqsABZKs6E3TgDCpXVcjy85nYFXbZ01GopF76X7YkiQ7gI8TSaDfZkYm93cYtArcD5h5vzNxeXHJqctic09n36lE4C4APLLpuW6BpeRSniOvYTmsQGgeByyXpB0HpHuB5HoOUxnuQo7bkU14DneLCPn0z4kf6H6gghTgAEJgeUACa5QARqTjlCBC4ruh0E6LBBFppxTEVGx6rbvxSZxm0Dagq+A4nnh55EQpOFkQ+T4vjh7C0V+nG2CBAAaRZYBxazlE4ABqfHVlB0FCXA-AiWsRmmeZYBSTWqEBAE1w6LcKhqBo2jWDYBRQaImQQKwxToOwloACSCLQbzoEl2aMJmARkkoYBkjKQA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events_patyear.Rd b/man/tm_t_events_patyear.Rd
index df2907006..4594e2750 100644
--- a/man/tm_t_events_patyear.Rd
+++ b/man/tm_t_events_patyear.Rd
@@ -82,11 +82,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_events_patyear}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -94,7 +97,7 @@ a \code{teal_module} object.
\description{
This module produces a table of event rates adjusted for patient-years.
}
-\section{Decorating \code{tm_t_events_patyear}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -189,13 +192,13 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeWlTra2TnUNTa3twXCk5DoApAB8sz0lxrTU5IzsAAqlWKUAsgDC5XPZszoE7Apg-YNOAIzXBde3QwBMTzovA0MAzNdyGwLJYQEolGCCULkdi0UTNbRkHQAXh0hwAcpUsMiUQAGIGLZY6CFQuDsCDwiikUTInRQcTZcgAc1UMLhcARpEBSgAvgEAFZEbJRADWcFYolyiRsyX4cGMUGEpCiBH4sKaAqFovFwGg8AleTkAF1XBAKjU6nlgMAXlVqtdDcbTX0fsMZYkrTbXi4wA6TUoAMQ6e4YHQAITpMh0ThasB8cBNaFQdWy6SuoJ0eRpeVwPT4QhE1JReeEYjTYPqMCiSvZlLhqBCrDgLDL5Z01Cg9Dg1Bp3x0WBCulK-D5glE5H4JiIjB0WxCtEpBgAmk3GNTSqQ+7DhXYOyInoSSnldboUZ6Xfv0+WWJXNCwaQQMoKCGIoqIu3B1HB+C3WxdHzIxBpW9GFoXc4GVf9nwlM1qgKS4XiwfZPgQo5ygBOQc0vVs3xET8J1PG5EOOa4Dx0DDSI6fgqyIUJuxRexnEw38azIOFgPvSCXxwj9xx-VsHyfQCUWA0D6BECDBOg507meSAKVYgEmN-HRuLwns5JYqkL2UkxaBaL8aQYlwsJKciTJ0etmEafC-0k193zwvjywEgDCx0W9qEEcCXKg9gKi9WSdj2VDkLAIKDkU0iSlU8d1K9R4wFIgJy2SsilACWhjB0GEVDUDRtGsGwinTUQsggVhSnQdhEwAEkEWgClqt9GG0fweSUMBuUNIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
\item{example-2}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeWlTra2TnUNTa3twXCk5DoApAB8sz0lxrTU5IzsAAqlWKUAsgDC5XPZszoE7Apg-YNOAIzXBde3QwBMTzovA0MAzNdyGwLJYQEolGCCULkdi0UTNbRkHQAXh0hwAcpUsMiUQAGIGLZY6CFQuDsCDwiikUTInRQcTZcgAc1UMLhcARpEBSgAvgEAFZEbJRADWcFYolyiRsyX4cGMUGEpCiBH4sKaAqFovFwGg8AleTkAF1XBAKjU6nlgMAXlVqtdDcbTX0fsMZYkrTbXi4wA6TUoAMQ6N4YHROFqwHy6NKZepQegiHSiHzpHQkIO0xgwKKaFg6HOMWhxkSiE1oVB1bLpK6gnR5Gl5XA9PhCYs05vCMTVsH1LNK9mUuGoEKsOAsLvdnTUONwag0746LAhXSlfh8wSicj8ExERg6LYhWiUgwATVHjGppVIC9hwrsRbgT0JJTyut0KM9LsfNe7LCz+ZpBAZIKBBiFEogznA6hwPw44ThcQEyGINL5oW8ZwMqCEgRKZrVAUlwvFg+yfARRzlMRYCVE4AAaAJyI234TuBIhQVuKL4TchHkZRNFgAEcF0U+tL8PwUSkEQoSzii9jOPRcH9mQcL-mxmGgUxkGbrBE6AcBSEoih94YTp2HOnczyQBSCkArJcGJhBLFzuZ8lUl+NkmLQLTQTS0kuAxJQCb5OhDswjSsfBRlgXZGmCSU2mIdSencII6GxVh7AVF6Zk7HspHkVlBxWdFtnMZuDleo8YCCXxYJVQEAS0MYOgwioagaNo1g2EUNaiFkECsKU6DsGWAAkgi0AUw3gYw2j+DyShgNyhpAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events_summary.Rd b/man/tm_t_events_summary.Rd
index 47215d489..8c42f4c2c 100644
--- a/man/tm_t_events_summary.Rd
+++ b/man/tm_t_events_summary.Rd
@@ -107,11 +107,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_events_summary}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -119,7 +122,7 @@ a \code{teal_module} object.
\description{
This module produces an adverse events summary table.
}
-\section{Decorating \code{tm_t_events_summary}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -214,8 +217,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otQ6AKQAfD3FJTowgqHk7EPDOuW2ABIAYrUAvDqyonBRKRkUkxDT0wCEtOLQ7LNzszYAfjoKYACa97hTB-bOOrf33-sHNv09VLpDJRahQehwaiTMCVQT0ABWcHUMzgIQyOgWYIA5vcAtM8WVyqUnHUGk1Wu1gnBXL8MB1+M1tGQosZsaI6qZzBorLEbEVfiVYnUhQDXiVRuM4HsDsNbABZAAKSyilScWB0q2JqvVy1W9yeeDFssVyqwThWZTV5o1esezyNJXlSuqUQA4lgAKway22ADyAA13Ta7mAPfaBW9FSq5QBFAAMAEZvcdTlB2JVY4mAHKlOVyF4R6ZO6PxgBMyZOGDOGbLObzBZljqjAGF40nVimq2nW9ncwT8a9iNRBDAIKDwZD2ck6KJSNLI86VWrvfdKqpLIJ2cTwzKnabrbasJCQnB+Jadwvle6vbbXcx+LovdvDYW7FGa4nvVAxLRxxCobEwDAKumYJnW9wALoQQUgHATCoGVM2kEQfmRrFh+5arN+oi-mC-7Qg8GAAJzEaRREAPQAFpkWRlqVAAkriDYLlEPbtjo2G4ROAEhEB9xseBYBQf2OgiUOf6TrkIRyMA0DwKI7BDiOY54ZOcgQXUUDiAQGQsFA6iqIpRDDqOEnUKIImxEMAC+NIlAAxAA5DoroUKoITZFiOibqoBgPsY2SnjocBMqQJhshgQwVMSdTRSSAI6HS-AMiFFCkCybLxIEtLfu0EDRJoLBTkYcliOwcUybOLCkKIADqwLsKVCkVQU9x7i6uIQUMdI-lEhWMMVOhNeVRJOJVoSMDV9WZI1sBlS1IbFp1SjWQE8JENkUQANZwKwCl5DYyT+VAwjpQQ-AnE062bTte2yXN+2JOpNJoKgdTZOk855N6eTMXwQgiOyqz-cIZWvA0UTpalZCiFEogjjAnjztMqndLapT8NoA26E4oXsrCMCI2wF7THkpUrmAcUk8MLAwH1LDejpG0EGIcOQki5D8MjBxMzIYjev1tDgiIUS8yzCn3BUNTPGs0KlFgcoy5LCvNuUuKoa+JQbCIBlnujCs-DKGsyqyUBYvTjB5WjawZMzrPaxzp7c9MYv86sgvC5srsS5To0y3kfFgD1VsW6IyHG42Du6z9iSB8HUD5aHyHAAm0EOjoO1wKgUREIwD6MN67xOMxJu0C0QWrAspTVKqRoR9Mpvm-17Q-oztt87DUec87wzewLLBC-QIve3Lft4DoAdwT1OFJ0JKElwcXcVxPsdT5xs9QSnaeaxncBZzneeqIXjjF+nAXl3rGLV7Xr71zTyWQ0QoTW0XrwEgEAS0MYOjsNk5BqBobQ1g+RDFEFkCArBSjoHYK9AAJIIWgBQ4EbEYFjAItkIBgGshBIAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_exposure.Rd b/man/tm_t_exposure.Rd
index 7aec2d4a8..6c6f7f5b3 100644
--- a/man/tm_t_exposure.Rd
+++ b/man/tm_t_exposure.Rd
@@ -161,8 +161,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVOABp1DU2t7fytrhAlonCkGDNw-OwAjAUA1tn8OgC8OgpgALKqMxAQcAa2aaLkjPsBJRjUUPRw1KJ1xNFPL2-sFQMFYy0ajUHY6ABipWqlSc916Azq-0GAFIAHzInolfi0a7ZdTsByVBwAIQAUgBJcoFDBrOBwVDtEFg+zOGxojFTEo6GCCULkdiYrkABVKWFKBwAwuUwftbOUHFhyvtcIKSiKxQcZWAAPLaZhMoTMDQkHS5KCsUSKPCqsoANShYNEsB8cHYLUdcAAjisCgAmAAM-rkBVEtAAXrpdjlgzpGPSngRI3ZHLCVZyuXaoQ4teVzaJ9oK2ejBfRNlFGEQUqI-n1+nDPlFvq9q0ibMlHs9m0oAL4BABWRGyUVpFrNoTbRnGxigwlIUQI2NETQHQ5HomA0Hg1bycgAupM0Kg6tl0gLOXkwXk0yU+EIRO9drfhGIzxmGlE561UERRII46+Mx0JtQV2fZyj-EJLCmIhjB0JwWm-X84zsZ4RGVG08k3JN9iRdD0y5VAWFgBcwQIDJB0TUQohmER1EWADAJ0MiKLEMFNG4QQ4HnciZBfPJgGAHDa32XddwKfZ1XFKVlT2MBJIOO5r0YnQaLgOitlAsA5QVJUwBtYMbQbehWCidjGFInjKOo141PIJYbRKZjeIfHQzNoVCuKcyixygAShIGESxJUwR6BmUhSIFMAYX6GScKwBSwDkAz8IzVT1K1aKCxSnRksYisUiiYzTJYCyWKotK7IYwCvNY3Y3I87iyp8vywFwsBRJDEKwoi-YxQlFw8FkrAnAAcXJbUADllliqL7FKWxSmmwb9kyxLcuUirFi1PqBv0pSM0IxhZHC3YavKmz1KqjMzrYjjPMsvjEhatqOtk9UJXm31FIclSLrsnNGEEABzMossY9aMw6fgPyIUIQIhKEYULHp1qBagbjBSJqLobysa6XjIoqGoZsqUpwXBaoZM2jTZIATTuAIAloWD2GyG4oAsbRrBsIpOVELIIFYUp0HYQ8ABJBFoApxZmRg9QCbslDAbtdyAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_logistic.Rd b/man/tm_t_logistic.Rd
index 41a8e2bad..4978fb7a8 100644
--- a/man/tm_t_logistic.Rd
+++ b/man/tm_t_logistic.Rd
@@ -131,8 +131,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVYlXUNTa3t-IyiOgCkAHyTPSXGtNTkjOwACqVYpQCyAMLlU9mTOgTsCmAAQk6V-WsAkucF53cAcgBqTrbncgEAvgEAKyI2SiAGs4KxRLlEjZkvw4MYoMJSFECPxaKImkCQeDIcBoPAoXk5ABdVwQCo1Op5YDAc6U6rnElkil9AZwxK0+lspkspQsGBRRgI1FEGCoOp0USkM4QEqlXa2TZ7A4AXh0Upl8x0wuMOnV9Kw2x0F0e2uI4v1JzOYGVZUeOkNxt23x6clwPTt6s1spKJV1VvOF0QOjW1CgBDg9CIZrlfotEvVp3pIfKjEEAHMdAANB3nXYh3Zi+jZEKWQJgAIlAIBfnoOrZdK+nR5K15D1xvhCEQTdVd4RiZslBpRFHUIgZjEaZNxv0aqD0ODUQNgaoTqcyHRYOAZ4WiUTl2Nzkp5Am6A22nl4bUlAVRTQsK0EDLAyOiKKiJdwdRwfhD4-Pq+YhWg+jC0AuIioi+MiDhU-QFMmtpGnmSEqt87o3n6n4iD+-Arsq5yYRhs5+neuqipa6pkSKCYdseOioCwsBok+0Fvh+X64f+c6ATBvY6A+1CCHAUFAVCcGVE8YAbFsaF4I60mbDs3x0fROjYd+5B4ReVw3JU9yESR1aqTxRCaPej5JmxYgcThWncfG1n8YhlROLm8n0gA4i4HmXNsWAANJYAAjChFz+UFABMKmYSUGm4SurnuUR2pVjoNZKLQersNkKwRho2jWDYRRxqIWQQKwpToOwaCoAAJIItAFLVdWfow2j+EovxKGAvwkkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_mult_events.Rd b/man/tm_t_mult_events.Rd
index 42ac5ca44..27e43c5da 100644
--- a/man/tm_t_mult_events.Rd
+++ b/man/tm_t_mult_events.Rd
@@ -74,11 +74,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_mult_events}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -86,18 +89,18 @@ a \code{teal_module} object.
\description{
This module produces a table of multiple events by term.
}
-\details{
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
\itemize{
-\item Although this function just returns \code{NULL} it has two uses, for
-the teal module users it provides a documentation of arguments that are
-commonly and consistently used in the framework. For the developer it adds a
-single reference point to import the \code{roxygen} argument description with:
-\verb{@inheritParams module_arguments}
-\item Parameters with identical descriptions & input types to those in the Standard Template Arguments section are
-excluded to reduce duplication as each module function inherits parameters from its corresponding template
-function.
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
}
+
\examples{
data <- teal_data()
data <- within(data, {
@@ -145,8 +148,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyAYQBZIpKyyur+AhglAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdJRreyenRIoJ2BTBc2wdsgE0ASWznlOeHLkHAAhABSPz+OmemVe2VsLUhz1auScAEVEWBMrYmgBGDFYpoAJnx2IAzCSmgAWZ5DPYQW4zOaeOTAaHNBF4KGY9nPc5Fa4wBmiVwQHIFIpJYCs7kFXmXUXsiWhKVs1pykVoVBFeLRJ4QDJJHQAXh0SVwDT4QhE9xNluEYj1GQyJT86xga3K2jIswaTp01Cg9Dg1GNXKaJGIMGiUDIOhacC2sg0JHu9FYcYTMg8ln1TQDonuMf4OgACoxlqpy8WAHKwOB-X1OpLHXQm1Uc836v06FiCzQsUMEGJjAhiPyiYNwdQJ9iPaFYDtczILpq-MByf6Yhc0zvdnQTgCOfn7jEHw5kY4nImn-CeYGRaMhV6n5GLbfvLRR6M5xloFQTob2M4G6NhkMTUKQZ4jpek43o6e46EO0E2joJ60IGIgbOeo6zDkrQpHOmLYninLQtixKkURTTkpRBLUuuIFdnuz43oOd4EiRm4EhRXFkhS9FDHujF7tQEFQReojjrBr7wXuSESaGaEYXAWHIeweEtARd6tNkThNAA8mucjCQhLGvmxSItLpBlGaBOgmX6NT8K6RCeCGJpAU4u7dnAXrrKQrCoK2XKkOWHjwGQzyNoJ9lKEMtDGDo7DxOQagaNo1g2GkXaiHEECsJk6DsJqAAkgi0CkpUTow2iMEM-RKGA-TnEAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_basic_info.Rd b/man/tm_t_pp_basic_info.Rd
index 9138d5e51..7cc0fe4bc 100644
--- a/man/tm_t_pp_basic_info.Rd
+++ b/man/tm_t_pp_basic_info.Rd
@@ -67,8 +67,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWolAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEyto7u3uBoeD6kuQBdVwgcgqKk4GAFMF38442tiCU0VCL46PZ0nSSdAF5n0NwnviERUTedD9hGJHhAMhkSn4Jug-PQoKIZH54sYiKDweDqFB6HBqADjgAheEyHQASQgKOOXzB6I+nhWunex1OlKe6NQHloFAmxFxjLADlyDnxACkSdkWdT0ZoWP93gQYu0CGI-KIcXB1HB+GiaRl5YqxADpYxaFiRJMFTIQac5FSdRlVSINfwAQRHicsABZSk6JkAcRceB9YFyTgAGt7jgBhADyDgAcvYAJoRsBYTKRgMpY5OaO5XK2WzHZo64vg0vNZq0Yw6djxchqDTaaw2NLU0RxCCsTLodg3AAkgloKX7qsY2kYzQaSjADQ2QA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_laboratory.Rd b/man/tm_t_pp_laboratory.Rd
index f4d00026c..86f271b96 100644
--- a/man/tm_t_pp_laboratory.Rd
+++ b/man/tm_t_pp_laboratory.Rd
@@ -119,8 +119,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOz8gCEikrLK6v5qeiUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urptaF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NboPzUKD0IjMUgUjgNPE6Un0ODUdGPABq0W4okeiNxdPhoSOujhf0+3NpeNQHloFDWxGZwrADlyDmaACkAJLZMW8umS5ilfjoggxUYEMR+URMuDqOD8HF8vHG01idGaFi0MkidYmmTY-7NFKPAAKmSwmQAsgBhLVgOQ8h0ZS0iG2GhUhsNRmPijJx7M6PWwI0+s2iC1WlP2hNO31ouFuxge+he6sl9j+wNgdMRx65nV8pPW8ipnTB0PdsB53sOjTwVCjMi1nQt80Dit5jLLxf1xvN4t+z4dnIATR78YTq6HLKe2RPE77ObPdKgEAbEGHm7LyaHlYdm9d7s9OBvWdGZ2xHJ4ADksHVCCYync9y0vBVMigmCs3vHR4KfN1-HrIsQM-QdbR-Pk-zrACmyAzc2wPcDMlZTIXljR9+0Q20r3oxjHknFiMigHDBD8PC4Q-C9iPXJc9y3CjdxAmiWkPBj8gcU8JLE4c-iUlS7wdQY6T0zClEGWhjB0dh4nINQNG0awbDSXlRDiCBWEydB2BBAASQRaBSTzLUYbRGEGPolDAPoziAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_medical_history.Rd b/man/tm_t_pp_medical_history.Rd
index 0de76f252..424ce6fbb 100644
--- a/man/tm_t_pp_medical_history.Rd
+++ b/man/tm_t_pp_medical_history.Rd
@@ -89,8 +89,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyAWQAJIpKyyur+GBilAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdVwgcgqKk4GAFMBv8p-PL6+a2xdCHp5zWm8Pko0KgivFouwGkkdABeHRJXANPhCESiOE6FHCMRQiAZDIlPzrdB+eBbWT+OKiUhENi4-H46hQehwagYp5NODk7g6FrbGlsJ5IvEMhGhY66eH-L5ChoM1AsCikCXs555V54OX4hUaJUbIhsqVgBy5BwAIQAUgBJbKykUM3rkRgwDEEGJjAhiPyiVlwdRc+mijJuj1iDGaFi0ZkiDbumQ4gEtFIEKFgVq2JxYJpPORyYVBjI+kT+-iq9OZ7NgLUZPPVzExegCUQzV1xz2ib2+kuBoMh+Po+ERxhR+gxvvt9iJlIclpmgDyeQAmrkc-mC0W-eRS0bWvOlyuq-b8bWjxleltqR5W6GOxvu3Xg22w4PI9G4LGb5OvtO0y1slbclsTJbFXB8dDvLcyz-ACgJAw8gyGBlEJ0IYhloYwdHYeInSgCxtGsGw0hFUQ4ggVhMnQdhQQAEkEWgUhon1GG0Rghn6JQwH6c4gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_prior_medication.Rd b/man/tm_t_pp_prior_medication.Rd
index 2992351ab..6e117e107 100644
--- a/man/tm_t_pp_prior_medication.Rd
+++ b/man/tm_t_pp_prior_medication.Rd
@@ -102,8 +102,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEPxQpFD6RlzUAPpBIdZKMaGGOgDutKQAFrQQ7Am4OiBKOjoAggAiAMIAsmE6pDAEkXAAHpFQ-AQwhSWlAMoAMjV1Dc2t-KLUOgCkAHyTJrTU5IzsDj0OAEIAUgCSpVNZc2VVACSrGzulAUVHlcdVxT22pbbVSTfHD08vXe-3TgByz1eRnexQBQKUAF8AgArIhZSIAazgrFEOWCUBsSX4cGMUGEpEiBH4tFEDThCORqOA0HgaIScgAuko2h0kSjRDUCOwFGBHg5SgBNXa8vK8s5bEV4HS8z4Q6W8qo9JwARVFMrAxVs5QAjOrZdqAEz6zXagDMJq15QALLzYfCIOzUeiQnJgLKKpVLZ7eYyaqyYE7RK4IGV+jUEsB3Zren1fczQ56Ixiox6qvGQ2hUDUsmkeRAigkdABeHS5Lp8IQiTmlyvCMT5opFOqRQnoSKoRiWRiReAk2QaKxdJs6ahQehwCal3kABS7REYOkqcH7wUsEFFw6bCVpumnMfTeC3RVQLAopF3JY1YbjR4LI50p4056JRCnGolF0395Ha8Yk6vAh0nhAgxEiURJzgdQV0bB8iiAkCxCvTQWFoccRCJYCZAbG4xVNbYsCcW85FwY8mwgkRoP4K8DQIojeTIkiyI6HFiGo0sEOw0RwMgqjYLgzjQJrHQUK7dC4EwxC0VwjUqlKJxygAeVKO1SJ-B8KKg8h2Nkyp5KUlSwEYtSBJgLJ2kArChJ4yjtP4h9BKQ0tRLQ+gMMc6TPTwqptkBcpVLIopNKomiwB8vyGPUoomKinQOlEUh+FYSypJsrSYMCuKrKckTUPEySuPYGTZUeIUAtioLeO00K5UFSK4KuJtGoCAJaGMHR2CyJYoAsbRrBsAp71ETIIFYYp0HYLNjkEWg8imiDGG0fwoSUMBIUZIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_shift_by_arm.Rd b/man/tm_t_shift_by_arm.Rd
index 93d7ea80c..27026c12b 100644
--- a/man/tm_t_shift_by_arm.Rd
+++ b/man/tm_t_shift_by_arm.Rd
@@ -145,8 +145,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOynAHEikrLK6v44AHMlAF9FCAArIni-AGs4VlFE0Jtw7uMoYVI-An5aUTLR8amZ4Gh4WaS5AF1XCByCoqTgYAUwa-zHs4urptbF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiOLGNb0VjVRgwHF4vHUKD0ODUdGPXIk0g6clZKl2BkiR6I3G0+GhI66OF-T4Chq0lgwPyaFjoggxMYEMR+URMuDqOD8GnCjKKxi0PlwdaqmTY54pUSCehajlwgiQp5YACyAp0fw9AGFso85HJBYaMlqRLr+Cy3Z6wDK8cH4xlUCxYBtlZb1aJNdrIwbDYrqIJzSq1dbPilHgAFTJYTLu-2BkOh8M68hRiVgAASWEeSZ0iaFtM0W2iCqVzszGtbef7Ru4xYtZdm-2alaeADUAJK5Le2JtznQz9vRqsAeVytgMACFMrknPktwA5Jw6d3Prfuhyx-uDw1QQtx0YDNlxzCN23zYVjVNegRCXK0VwrI97UdaNMifLBnwDMA-xbXMT07dDMKfbDm0NYxaAqPV0XsZxfzIvF6CgcN4nNY0QIQsC2z1SDhxYGC4NLBD2FXW0ULgJ1vTAa8MKwg8h2FY9qM7GTiNIw8KKojs7EcFwFIyXDaUELUn0yaNaGWCBWD7BShgMpQhgsnR2Hicg1A0bRrBsNIhWJeJWEydB2BBAASQRaBSUKtUYbRGCGfolDAfoziAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_shift_by_arm_by_worst.Rd b/man/tm_t_shift_by_arm_by_worst.Rd
index 4672fa128..aa87f47fb 100644
--- a/man/tm_t_shift_by_arm_by_worst.Rd
+++ b/man/tm_t_shift_by_arm_by_worst.Rd
@@ -145,8 +145,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOynAHEikrLK6v44AHMlAF9FCAArIni-AGs4VlFE0Jtw7uMoYVI-An5aUTLR8amZ4Gh4WaS5AF1XCByCoqTgYAUwa-zHs4urptbF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiOLGNb0VjVRgwPzkvwRIiMUSkHF4vHUKD0ODUdGPXIk0g6clZKl2DkiR6I3Gs+GhI66OF-T4ShqsljUzQsdEEGJjAhiPyiLlwdRwfgs6UZDWMWhiuDrHUybHPFKiQT0Q0CuEESFPLAAWQlOj+-oAwtlHnI5JKLRlDSITfweb6A2AVXio2mMqgWLANlqHXrRAajQnzRaNdRBHbtbqnZ8Uo8AAqZLCZP1hiPRmNx43kRMKsBOEPNACSADlbI3HpmdBmpaz6Yy1sZ2T0-Fb87Wiz3SzPLSwbfQRPat+x-s0Ut7HgB1ADyWFyAAYAEwAMReeCDYDvD8fAEZ3wjOcYx0Hc+yTH8nzfD8Z2A6VFyZPwVygHpN0dbcSz7MtpQrKsT3Qs96y-SCX0AsA4ItMDTSTABNZV52lYxaAqai4XsZxYK7VUK3XTUvQLfUqLNPcdCtQ9jxrAjz0vH1MgANUyfIQ0DP4xywcdw3IijpSEpN5MU5TUwYjJtIyegoDjeI7Q3fit2LeMsJEsTbXwwtCJaGTHgAIUyXIhxUsAvLUjSgK4nTMNYr8fL8wzOJnQRDTHTIk1oZYIFYacGKGEylCGVKdHYeJyDUDRtGsGw0ilYl4lYTJ0HYEEABJBFoFImsNRhtEYIZ+iUMB+jOIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_shift_by_grade.Rd b/man/tm_t_shift_by_grade.Rd
index 0af0b42f4..de64a0e34 100644
--- a/man/tm_t_shift_by_grade.Rd
+++ b/man/tm_t_shift_by_grade.Rd
@@ -165,8 +165,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOz8gCEikrLK6v5qeiUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urptaF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiOLGNb0Vh+ADmzEWOLxeOoUHocGo6MeAHEabp8kyiMxSHzWFl6BA+TBuNEhbYmSJHojcfT4aEjro4X9PnKGvSWDA-JoWOiCDFRgQxH5RCy4Oo4Pw6YqMkaTWJ0frGLQZXB1saZNjnilRIJ6BbSIbIU8sABZOU6P6RgDC2Uecjk8vtGQtImt-DZ4ajYC1eJTBYyqBYsA2hu9ptE5stWbt9sdPrRcP11EEnqb1fY-2aKUeAAVMlhMhGE9HB8PR0nU2mM1byNm1U98rZHsWdEWFfSInzRGtjIzKXqDXCu2b5-WNw6q87Wyx3fQRF6nTNe-7A8HQ48AOrsrD5AA8gAagAYi8eAxmAf4AYB4ETtB-4ABIAJJgRB-aIVgqHwWAyazval6Lt+WFAehSYblu9q7ow+5+IeUDHvEmyyAKjCVq+taZouDaKm2HYvs2PafJhMFkbhVFznWxHLgAmtGxi0BUNrovYziUQReJQBA-gChU1I1J6rocc2XELjavH0ueLY6K6j7PtZwktB+QZwCGZ5hpktiAQAGv+SaSYR0kqR5fzeX5WAzteJhKSFdiOC426FppGT0FAFqEkQ+lcie7FnreNZERZ0XWS6D4eoJ3bvjoAaue5OgEGGzThf5eGBYqRVLg1TUtZFeEpXiinKV1amJfa7UZDU-CZZ4rJwqBmT5LkY2Fg0kmKdQ5B5cUcDcOadDdr4+0+p5eQYVBuSZKBuH+sFXWPPJbVKIMtDGDo7DxFtUAWNo1g2GkCrEvErCZOg7AggAJIItApJDFqMNojCDH0ShgH0ZxAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_smq.Rd b/man/tm_t_smq.Rd
index cd211d8ed..843bb2d05 100644
--- a/man/tm_t_smq.Rd
+++ b/man/tm_t_smq.Rd
@@ -144,8 +144,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOzMpyKSssrq9zhXCAyMaHhRP3ooUQBrOFJRIoBzRjhUdgUwAD12XIBZAEUAHwBhLbkMACoAOUyNgBJllIGxdhzmuRTNbkFdAF47RydFXp1+rAxH5RMRUGJZvNFssVpstidcntrngdHdRA8mr8Xm9Pt9nH8GhIhiNxpNpuECDEiDJgaI4CJ1HB+Et-hlKdSCBCvq9GLQoPQRH52TT0Y8nClRIJ6HTSDovoDBsNRhMps8Ghk6QzyPw5QC0UrSVMGgT-kSQWCIRSqSKQfS4IzmeqdMLOdNuSw+QK4ELra6Mc0JVKZbqFbSLaI1aydJr7dqQ-rQURwaJcE7jLQKkzdfZnMalABfP4AK2pED8E1Y6KSNnC-DgxigwlIQv4tFBfhL8XLcErwDRiVCcgAuj00KgivFoiyMkldUlU-8+EIRG6dEvhPcnSU-M3RDAAI7TjLH6j8+m65aZfjaRh0nRObRkab0Vg6OF2fkiG5OmehO4XsAxW-KMMhYGA-B5XUXVpO0HSPY9j2g1ceU9QUkIHTxgGAS88nyZYhyHQNpUmKClkArANhuHRllyJwAA1ljkSMEIQmMHQAzIKOWH8dGYlian4HciE8ahdQAMUyfJaIXFidBJFVVySLDljNeSyXwwieMTZM51CZSwDNbSxA0mSWOoahZS+JDbS1Jl4JYpDdRQz9vXQpTsMAzETOjIMSKssjmmyJw9gAeWyRi+Nkti4y+S8nCC0LwrAHi-gQ1LeKUP5aGMHR2Hicg1A0bRrBsNJ-lEOIIFYTJ0HYMdLkEWgUnqulGBvP58yUMB8yHIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_summary.Rd b/man/tm_t_summary.Rd
index e0a427b8c..d9c1a080e 100644
--- a/man/tm_t_summary.Rd
+++ b/man/tm_t_summary.Rd
@@ -125,8 +125,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpQGIdABUZxULKBokOkTGOqQAFrrkoqQ6sqK6RoIJOgAGTgDyAMoAIgCaqTpQEPxpOQDCWVhOAIJZhZostFD0IqJhRDr8cHwQMczkOjC0oqK0EADmXQFQGEr8M-pGXNQA+gukUNbzi4Y6AO60EePsG1C4OiBKOjo1OVkAMkthMASrcAAeq1D8otTXt3uDwAJJlcnlgABGAC6zwAcjVVuNyBNVKslABfRQQABWRHGqwA1nBWKJTjMbHtusYoMJSKsCPwRm88QTiaTgNB4GSznJoa4IHdHs8zsBgAowEKHhLofyIEo0KhnuMjuwAWcdABeaabXAAvhCNpaoYCYRiNUQG43UgwVb00SCGAwFgcAFWnTUFpwajGiU5HpECbMVDhGR2FoiCV6y3unXFWC6bUSqVRt1Wli2xqMY0EcL4ghiVYJETqOD8dgENWSrAAWSjOmTtfKOQlcgujbrYDbaZuP34dqImx92vszmjsZ0DqdTQAXnBVln2trc-nC8W4KXyz2rZWJVknAANesSrA1couPANsAAIRrWAA0lgAEzHsBg-KvipVWpZV81ADiF7djGE67mA+5HpeJ5nkB27AROyRwAivpgLQNIQKwEpptiNzYtiaE6OwyKqFAFjaNYNhXDGoihhhNToOwirAoItAXExCSMNojDYhiShgBi0JAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_summary_by.Rd b/man/tm_t_summary_by.Rd
index 91173fea1..de6b90271 100644
--- a/man/tm_t_summary_by.Rd
+++ b/man/tm_t_summary_by.Rd
@@ -156,8 +156,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOz8gCEikrLK6v5qeiUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urptaF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiQQwGAsVh+egcBp4nTUKD0ODUdGPXIkslsHRUnRYIgRHQAcUYREEqDRtgZIkeiNxtPhoSOujhf0+0ppeJYMD8mhY6IIMVGBDEflETLg6jg-Bxcrx+sNYnROsYtElcHWBpk2OeKQIkKeWAAstKdH9AwBhbKPORyGU2jKmkQW-gs-1BsDqjIxjM6Gr8QlETzMuH2ZyxuVU7UsNFwu2e0Qms1J61x2tG6s6J0u+gid32mb-Zo+v0ABUyWEyaZSfwAagBJXKz2xRrOym0J83kZM1v2ZOcLpdgQY2ldr9ksWgALzdTvbreN66b2Yyd-bnddvbr7AHQ5nmReeBDMAwwACQFZcyzXRtNz1Hdpz-KNsxPOVBFNAA5TIU1oZYIFYNVVzxVAWFgDY9Q9NsG0TTdmxtF9HW4QQ3RfL9PinMBR3HAMI2DR52InKMILlB9oOVJ58gPRD1SPHRBkGLCdHYeJyDUDRtGsGw0llUQ4hwzJ0HYEEABJBFoFJDNNRhtEYQY+iUMA+jOIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_tte.Rd b/man/tm_t_tte.Rd
index f6b3e00b1..4bc35695b 100644
--- a/man/tm_t_tte.Rd
+++ b/man/tm_t_tte.Rd
@@ -100,11 +100,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_tte}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -127,7 +130,7 @@ filtering for \code{PARAMCD} one observation per patient is expected
}
}
}
-\section{Decorating \code{tm_t_tte}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
@@ -202,8 +205,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOzbWycikrLK6v5SciUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urppbb0PvHnOaXGA3pcWDA-IwlusiDBUEU6KJSOwGpkAMK2TJYACyKOyOgAvDp4YiGhkIcZ8To-lidAAhR64Ek6YgwikEJFPamZemUjmYnQox6DDJyBkQDIYvkEolIsUZHRkimPGmIHQABWoUAIcHoRHpjOZsIJbL+KuyjEEAHMdAANbmPFEqlHQ+jxDyWCCChqDQZKNCw8LxaIyjJJClJUUZPhCESiClR4RiYNykp+NY9OBJuWEqD0ODURVgWy0eB2Ig6JzaMh2HMiPWyrNJI66Al-T6AiNZnSgvyaFismKjLWiPyiPNwdRwfiZzu9xi0GtwdYDmSJ54pY28u28nFb1HorE7sByEWMrNUzGPU86E-1uXdslQlkE++Qg0drOoFiwDb9wdiEdjhOU5XhkvbUIIi4EMuQ7sP8LQpI8qoYpk2LZFuSFYChgrvp2jwAPK5Jet7CjhGQIswng9n2RrQf+o4iEB05ZrO870CIS5-jMa5MuyuROLaeA8jSmJYAA0lgABMgo3p2cqPHxAlXjJnYaPAfioKMZCxjRnEAQx5BTmyACMAAcEkpBJAAsADMIo6KZEnKVmcCVmsizbFRjC-iuw70eOBlMXKLELhxPmwW2CFgE4ABqABytjZE4uQCkepFyVFcUJUlKVpRkxi0BUk4UvYzhKYyQrXkogy0OS7DxOQagaNo1g2GksqiHEECsJk6DsH6AAkgi0CkA2jow2iMIMfRKGAfRnEAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
From 582247016b079adc3565fee1d996aad8be20f6bb Mon Sep 17 00:00:00 2001
From: "27856297+dependabot-preview[bot]@users.noreply.github.com"
<27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Thu, 5 Dec 2024 18:59:11 +0000
Subject: [PATCH 54/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_a_gee.Rd | 4 ++--
man/tm_a_mmrm.Rd | 4 ++--
man/tm_g_barchart_simple.Rd | 4 ++--
man/tm_g_ci.Rd | 4 ++--
man/tm_g_forest_rsp.Rd | 4 ++--
man/tm_g_forest_tte.Rd | 4 ++--
man/tm_g_ipp.Rd | 4 ++--
man/tm_g_km.Rd | 4 ++--
man/tm_g_lineplot.Rd | 4 ++--
man/tm_g_pp_adverse_events.Rd | 4 ++--
man/tm_g_pp_patient_timeline.Rd | 4 ++--
man/tm_g_pp_therapy.Rd | 4 ++--
man/tm_g_pp_vitals.Rd | 4 ++--
man/tm_t_abnormality.Rd | 4 ++--
man/tm_t_abnormality_by_worst_grade.Rd | 4 ++--
man/tm_t_ancova.Rd | 4 ++--
man/tm_t_binary_outcome.Rd | 4 ++--
man/tm_t_coxreg.Rd | 8 ++++----
man/tm_t_events.Rd | 4 ++--
man/tm_t_events_by_grade.Rd | 4 ++--
man/tm_t_events_patyear.Rd | 8 ++++----
man/tm_t_events_summary.Rd | 4 ++--
man/tm_t_exposure.Rd | 4 ++--
man/tm_t_logistic.Rd | 4 ++--
man/tm_t_mult_events.Rd | 4 ++--
man/tm_t_pp_basic_info.Rd | 4 ++--
man/tm_t_pp_laboratory.Rd | 4 ++--
man/tm_t_pp_medical_history.Rd | 4 ++--
man/tm_t_pp_prior_medication.Rd | 4 ++--
man/tm_t_shift_by_arm.Rd | 4 ++--
man/tm_t_shift_by_arm_by_worst.Rd | 4 ++--
man/tm_t_shift_by_grade.Rd | 4 ++--
man/tm_t_smq.Rd | 4 ++--
man/tm_t_summary.Rd | 4 ++--
man/tm_t_summary_by.Rd | 4 ++--
man/tm_t_tte.Rd | 4 ++--
36 files changed, 76 insertions(+), 76 deletions(-)
diff --git a/man/tm_a_gee.Rd b/man/tm_a_gee.Rd
index 28f812a45..1ddd4d6b8 100644
--- a/man/tm_a_gee.Rd
+++ b/man/tm_a_gee.Rd
@@ -149,8 +149,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeUAipV1DU2t7fwAjqI6AKQAfNM9Jca01OSM7KUAQtUAYrUAhAC8OgpgAJqnOgBkZdt7AEw6RyfnpzZzCxAlJTCCoeTsRbfUoANQAkpUwbYdMcoOJjFB1ER1qCIVC5LggSVUZDbAA5GE6ZgQADWG3BuLx73mWO+cIwCKR62pn2+bJ09IggngjBk1hmNK+7JK9MZpGR1kxQrZoNK1U2YIJx1ltT0OgArAAGHQAYh0AClBKJSByplAvq1YD5dOKdABzOAmsL0bKeHQUbxEbKkDBAllA-iMIjW7TUUTxCAAXwCACsvRAoiS4Kxw3kbMl+HAEcJSFECPxaKImnHsonk6JgNB4KnEnIALquaDoOrZdKAoV5Ql5KU-ATCMSEvhCEThoENdpRB1wdvC6hQehwaiE04AcScLjwtLyVd0x1OFQGpx77Kgmm4UTPjEJBAyXoIYiiokXcHUcH4gLAKoVeKPJloLTfQl7GcDFaVofgLxYa9bxkB8nxEV93wID8HEqBxNn1MFyl-U40IwrC3gKU5UPQzDsLAUDpTpRgYEgq9jhvO84OfRD2GQ-csAAWRwz8uIAYXIjEXlKLjCNpTRC3SOjoKY0RHxY8gkI-HEoR4lT8UI4SKVUijjzZVAWFgfMZNguT4JfRSZ2FHRGNMwkz2oQQ4DzGD7xrUJgGAfd+kqU46zrIiwAABRE0pOIEniQqwMKxKotlzMQ5cwB2ABpSEDB2AB1TZTlpSjhWITRpIY1zmIQyz2LATZSkqDdAtKNceNqgANHjqtqxB1M0vEHGqaoAjZAadACAJaGMHR2G9VREQ0bRrBsIohVELIIFYUp0HYNBUAAEkEWgCi27an0YbR-CUSMlDASM6yAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_a_mmrm.Rd b/man/tm_a_mmrm.Rd
index ee5c3c101..58225572c 100644
--- a/man/tm_a_mmrm.Rd
+++ b/man/tm_a_mmrm.Rd
@@ -165,8 +165,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEosMAD6jHDGIcQwqPpGdKKk7Eo6OgCCWACyAMIAIjoAvDoJSSmpOuHGhToKYBmZOgBCtbhlqdGxRQTJdVnpLTW9Ddm1AakBAUr8UKRQcTpc1CHTs9ZTM3OGOgDutKQAFrQQ7CtQuDogZWm5AMoAMvOkMAQhcAAeIVD8otRXuQCKN0ez1eHy+AEdRDoAKQAPmhbRMtGo5EY7DSjTuADEHgBCIq1ACatR0ADJ0picQAmHT4wbEsA2OEIiDlJEo1TogBqAEkbjzbDCjtCdN1agB1JxOADSOgAjDpcmlCToABwDCVS2U0pUquUAVg1YElMp0AGZFcqdFSqaMmfDETBBLNyMlWWz0rz+YKilBxMYoOoiGi0l6BXJWu62aG+QKAHLVZgQADW3Njtjj9pZHvKfowAaDaKziLZeYggngjBk1hhDqjHrzBdIwZrAGIAOQ6GBQZNHADmopIojgBGdWl05crMhMgebjERAQAvgEAFZEI4hZNwViiE4bGxbfgRKDCUhRfi0UQvNcbrc74DQeC705yAC6rmg6HmRz2btSp2qU5I1SPghBEKEilA4QxD-conk+EIYBgRgYFgtlqCgeg4GoapakyTIshaEsdFOR9dAJOoARuIj61SKBNG4EIGMYaoCH2dcCDEEJhxEdQ4H4dgxTqLk0juI1sgACQAcVGc5alDUTZOI2h+CYlhWPYmQuJ4kdyAEoSHBuBxGgAKR5XIjSM0zzNkwZDOMsyLMZYCGxQtSWK6TTONEbjsN0-jBJ6eojXqPJbPkwjnOIzRLz2dyNI47S-L4-SgrDWwQvSuNwuE9MlNonRgjCCIoiIGJqiKypSpiFy2VQFhYAIfgEq0nydJStCPTYxKIJ0BjqEEOAoi8mDTmAYB5Ko2pX1fOSwAABQyNIcicubFqwZb8pzVJ2r03CwCxaV+QMLFxWaMBiIjYjiE0eLPJ63zeL0wLakaNIbhcPBBjSKTPrmj6AA0jTej7EBjb1bLjBw7juMZyjhiYlFoKp2COVFZ3HawbEud1REOCBWDSdB2DQVAABJBFoc5SbJ4dGG0fwlEXJQwEXV8gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_barchart_simple.Rd b/man/tm_g_barchart_simple.Rd
index 8d3e24dba..3cf410fcf 100644
--- a/man/tm_g_barchart_simple.Rd
+++ b/man/tm_g_barchart_simple.Rd
@@ -204,8 +204,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otQ6AKQAfBP1DTowgonk7ACStrYAYp0AvCZQ6gHsCmAAmic207MQ8-NFpWnUUPRw1MdgqypkBrZEP4xwBI6AAKRFQwgSlhumyeAHMLkEGi1Gk4uj0+oNhvFdFc5g1jLRqORGOwAITsdgo2wAeQAGgBxLA6HZ7ACMNgAZDpKU5Wk4AGrMvYnACyq3azQuOi5lKwIqFOhOjUQOmajEEsJ0tIRQQAvkEAFZEcppADWcFYokqiRs+X4cGMUGEpDSBH4tFEfSNJvNluA0HgVtycgAurEWh0urlgMAlW12icQ2GIMjUXaqjG4yjE8mlGhUF1ysVjjcdLlmWWqrg5nwhCJRBXa8IxCXbj00rC0vQWAQSiwXaJaDBInBW7cdE8XuNhWBU01oFFB6ITtXS7cBhXcv0BqQ1APUHACGPx5XEgHdDOIwm8Hjx6JXofSBX7yJ1GlRAej7eT73jQQxBWmgsLQzwiK6JR-i234nk08arjB45fmuCHzEqcoroqs4AMK2I06F4JhfLajeyEoZhWCNFhLgESc6xbNeNQnK0jSbNsGFMfYjS4QATCc0EnoiKFyPBKEvo+cD8BWSo4XhIorvx8yLEStAjhWmyNO0fIKYJtzCdBBLUNOE4eqQx7jlugy7gc+6HmZJ65OeUmzvG8mkXeD7qM+Hk2UhZENL+MgAXsQGMCB9BgQF-5WgpJ5XiJfk6L5CWobO+GMdhuFpYRTjEfFyUnBRVHsR8GxsTRYDMaxDGEZxPF8W5CE6UJeUIWJ6gSU5RGuQlSkaKpezqZpLgNfMTW6S18wWTue7vp+dnmVUjmXs02YkWRbVPnsG2zbZMXzJFQU6CFYURRBgVWqmNRfrOTg0gyWDFSifL8o9vJOA9YByHpI23BtHV7AAcg47TtBNJ69SpIhqRpWk-ToY2jdB30nkMjr-ptxmiKZClTVZb4frtcMObAF6Yam3Wid5Xmvj580-mdUWAcBoFwOBkEXStThXe8VJ0oyr3PQL70ImD7k0-9ZO3XzH2i7cEP9Tog2w2RCMNMjMG4zNBNJQhxPwE5V4U61VNbd5O06yhB0NsFzPhazVt0zBcV7bcFsJWhcnlZRmWe+lXVrclDQFZR1HpXRZV+yxEc1RRdVgC7iNw2rsvzH9kmA8DoMJ-LUMDTDw0q9pSMTawaRo3AGN0Fjjua9Z5uOw0euk1mod7Rt1OPvXCdW0zoUs2z52Upz3NKlL91Cy9XtvR9X0pw0acG29k9zwszqQ6TSsF0J2mi7X+NzXtTcGy5AfGzTHf74TCU9zbfd2wPUUN+OztJ-tT8nh7j0yVlTE5Ub+VgEKqHTC4dqpMSjmAiqtVGi8Xjq-NWCd1brW8hLIGIMV45w3vnPaqt4ZI1vIJIIQRaDGG5OUYk1ktCji+rUOYogygQFYI0dA7B8wABJBC0BqOw+8jBtAxAgLqJQYBdQhiAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_ci.Rd b/man/tm_g_ci.Rd
index edfd3ae32..6d9f6ef3b 100644
--- a/man/tm_g_ci.Rd
+++ b/man/tm_g_ci.Rd
@@ -158,8 +158,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQSvxQpFD6RlzUAPqh4dYhYRGGOgDutKQAFrQQ7PFQuDogSjo6AIIAIgDKADKROqQwBDFwAB4xUPyi1KUVlbUAQg1NLe2d-NT0SgC+QQBWRLkxANZwrKL5yTap-HDGUMKkMQT8tKIti8trG8DQ8JsFcgC6rhBVdQ0FwMAKYB+1P7PV7vAbDXbJH5-KpDIEgpRoVANXKZdh9Ao6AC8OgKuD6fCEIlEWJ0BOEYjREDKZSaMQA5idaJTqdTqFB6HBqCS-gBhEjGWh7cy6ACSKkYmm4OgACv5SH88VSWToOpLGCSCq02qQ1MdRKg4ARmcqygV7rpsdCaoC8H0TaJOYbSCSHSJ1DF9YbjSaygQsksCGISUboVgALI8yoKnR-QZhrAAaSwACY-nJFT7qa6nXB+MG0f9w5G0xnM6SjrRUCISQAxcq1apOUuZgVtXO1+uNu3KoIm9PdsqsGJqjXJLU6qDuz0hpUms2wC0x-5ghUD6kC6jkdXYuiiUjen0brceg0zsvUtXEy1gaXlLDlCNR22zst+gNBndwbTUTYwwYAElve9H37F9M2zdR20-b9fzBQC7wfSM5GAABGZ5mzLGAKyrRc6wbJs1xNNkOS5a9qkddQdGIxA-kI6lQPPI9VBPL06JZS9uX+AA1EVqhFWxVzAn03xkD8qK-TlYKGf9yh4vjbAY88dAg8g82gyT2D-GS5P45C0IwzMsM3Stq2xPDGwMn1iM5TjyLdZ1NHOTIaLANidF7H1FPtCjnWxFSWLPMtrNIpdymgahWAAL3bLjuEEOBBPPETAyvHQQ24+to15AAJABxEs3JUqDQq4zLn3PIyNBwjt8MsllW2K8yXCEsoPJZLzqT8AJR3CcddQCg8WXneBOIBRKfRUl0fIGtzgs4vl-HVehWB0NVaHZERxszZKxPSxsAA0srAap7HKWxyhQo6Tvvc7UzADrvPs4q9tO87LvuurqUqkzcM7AiWvXWg2zUnQmrotr6O7DygiCWhjB0dhci3ScNG0awbBKJVRByCBWHKdB2ERf9BFoIoiYdCVVCCGYlDAGZniAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_forest_rsp.Rd b/man/tm_g_forest_rsp.Rd
index a39e917a9..9fe3cd162 100644
--- a/man/tm_g_forest_rsp.Rd
+++ b/man/tm_g_forest_rsp.Rd
@@ -230,8 +230,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otT1Tc1YrV09fYPD-IyiOgCkAHyrEw0wgonk7I0Aao3tAMI6ALw6-GkkxGnLqGnUUPRw1Icn5zYbWxANQGFYolF5vD7sBRgM4lFhQdSqHRYMTCUgAegAYuV+OUAOZQuS-TbbEy0ajkRjsAAKjSwjQAsmdmjoAITXKEAeSOWAAkgA5I5QnQAHyaRx5rR5tiu7LAGI57XaHIA6joHFSCUoAL5BABWRHKaQA1nBWKJKokbPl+HBjFBUWkCDjRH19YaTWbgNB4ObcnIALqxFodLq5YDAKHB9pQ-2BiAtaahqrhyNTVoxuNKFgwR62x1EGCoLp0USkSEAppYelXHQlsskxi2mtQgBCiB0VNeBDg9CIUNwJOIhZrBEhYEa7eajEEuJ0AA1+zooWd22cC-RyglLBBNRW5AOK7TGczrnXy0DG8Zm+OqzoW-3BwWi9dR5Hb41F2-q2ddw0gkEs3QLpymKc8biqGtcgPHYBGEMQaz4IQRHNEkejSXE0mMAIfEeURUDAoFXneahrwxbDSyRMRUBIUQ4AfCsgVyb1dFlBN0zwEkGmzNJNBYEcSgNbtRDSWiRARfgCKBHReMYWg3hER0BJkMRDjadoalfG96U-LSmQJfdOMBL89LAQyDIYwFuMvfNh2uKy8yHVBoKk1A4V6fh+MEsQRI+OBxMkoFeOoQQ4EUrzzTYmooRpOljx0mKGQJZypKXMB+SOJxbChMzksBURBHoXFGCIQRnhkzzlOE0S-PICTDIaGS5PoBSCCUoTVI6GpmIitTCVyoFNJbeksAAaSwAAmHTWicBcwCCFLzJS0tmESHi+JfNrvOq-z6uklgmpazaes6nRNNaexGlsRoAEYpouq7JrmxaUtS866Qe7KLL-fqdEiIhSDSEo4FoXESlIEd2AANgABmh9SdHG2H4cRpHnsY217XJXM8Jo+DT1oUsAsBFsnFaaYqR5Gsz12honghqFWkSZrdGaAm4CgWidHYVpmkUPBUr5f6dCcILBHk3R2D5Jw+bRl6RG0agVhfImUuXJ8RHISicYgTn2DOLA+aisAqRYDRuC16idYlqkDampmRB0VnaI5iWecNmmjON4qirEUQtBZtmXa5qleZ0wXwZF7gxeZrmpb5j35pe2WgXSzKqYJ+svqkunlbVwsNd0ZFtd1-XDdSk3GDNkii8t3WbZln7CLgBWldOlWpLzyI4E1mvca50uw6FyPgvF2Ppfi025Orqi++pW2OKz1WvaIH3RD97RHcDuvQ-5hn7YD53dbdz6XsBROFsbnQuV5AV08Jj2c7b6LvcbNf-c3w-rZ3o3GdHp32aPjvZOUl5YfFbppKkL9fbv3-kHak39Xr7w-gA12CCoTh2FqLUektx5zV2ufM+JJE7-iULQK87BygUnhBobQ1gbB1ArKIMoEBWCNHQOwNAqAAAkghaA1E4Vw2ijBtAxAgFqJQYAtT+iAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_forest_tte.Rd b/man/tm_g_forest_tte.Rd
index 4123fa597..30bf0ab2d 100644
--- a/man/tm_g_forest_tte.Rd
+++ b/man/tm_g_forest_tte.Rd
@@ -208,8 +208,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otT1Tc22tk5dPX2Dw-yk5BMtHQAkWI0AwrP5-IxEkXDa1KLs6+1bu042AKQAfPeFxSVp1FD0cNTsCmBYKAEOD-IIAXyCACsiOU0gBrOCsC65GwHODGKDCUhpAj8WiiPrQ2EIpHAaDwZFVOQAXViVy6uWAwH+V3+1NpEBa032RkZzLAXJmbI5ShYMDSjHROKIMFQXToolIfwgDUaWAAsjoALw6BVKiYNSXGbU6f4AIUQOgACp9gfQiP9cAadMRZSaCH8BZbmoxBABzHQADUdprAO0tOxl9HKCUsEFBEzkTpVTQ1O2aJr1yoahvRJpZGp0Zsdztdcp1HoLmsaIarOh2CZTQSCovQXXKxWzOlyJtyyYafCEIlEJsHwjEXYaPTSfrSxgCPjSKzgk5zn2+1HzYAAYgvFTpWoJGJotNwSymc92quTdDqWVMhXhnQ0xWlNCx3SUYcDRGlRD84HUOB+FXS930YWgvhEHEvxkCcrhqSsBQ1WtkPVdNQSTZ8cyrDCwGwrCLxzV8jWlN0dRIqUy37S8dFQFhYFxT9vzEP8AKAkDsIad9qEEOAYJYi5BScGp-itNVGnQ5pUPE7Z1VBGjaNDAB5Vp-gIxSc1EQR6D9I5BFQN8PwrWCfzYkQONAnNwMg+hoIIUz4LadoahvITnLkQilIaJCzXVLAAGksAAJlQ1onGDMAgiUrzaMVZhEiMxhmLg39-ws8hOKIsCWFs+zHPcjpEM9Vp7EaWxGgARjCsqKtCqLYqU-5Su2Or1OynRopzLrmyUWhjXYcpyDUDRtGsGw6hTUQyggVhGnQdg0FQDZBFoGolo2f9j1UcElDAMFqSAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_ipp.Rd b/man/tm_g_ipp.Rd
index 79bbfb3e4..e0bdd6f36 100644
--- a/man/tm_g_ipp.Rd
+++ b/man/tm_g_ipp.Rd
@@ -196,8 +196,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAygAyyTqkMARpcAAeaVD8otQ6AKQAfBP1DTpjMnDsAIyIAEwADDbTsxDzOvzG-QORMsVp0Nn7Tc3tAEJdPX2Dw-zU9JMzcw3GtNTkRjsBytBz3ABSAElmpNyhNbh0ACQgsFQ5o7b43BpHE5nAgXK4YvYHP4A1TsRoANUhrUhth0AEIALw6BRgVoAYSwTicADlIbyAOJsoIAXyCACsiOU0gBrOCsUSVRI2fL8ODGKDCUhpAj8WiiPpSmXyxXAaDwJW5OQAXViLQ6XVywGAbId7TZNrtEBaDydVRdbru9093qUaFQXXKxXYc1yOhZuVwcz4QhEogTOlTwjEsax3RgaQA5mlaOg8wcGtQoPQ4OMWWzIXEtLQhNwdAAFBK0CikTv+Uhs5P57FVC26BtgX0hvA-eYsQuaFiZgglaUEMRpUR1uDqOD8CuVhpL6iCOC6tdLJXTmpurAAWQ5zRFw6PDTv96abLnDTkr8rqAsLAeorpeG6iFuO57geP7zCeZ4XuuuY3qyYAdo0WCNI+z5gH+sHvlO7S2N+I46HhpFQCeaRLowoFIRB24iNBh5HjRtA1iIiFXhSwY1AQsZTpSjQengqEcgAEsKuHkW+qFUsJJFHjJlaUdwgjUcuLKrvRkFMeQMGkceLDsfQnHadxKH8W6QntA4IrKUe1nCXZs6GSYtADPumb2M4sEOfMrYabRWlgZujG7vpLGVmxHHnuZ4E8Q8fECSiELQvZ-6OWAqVokO+HuZ5-DeY4Likf5x4GhcNF0VeukRfuUUHDFplxaF168ToVmCTSdIZfl1k9cRYB+Zl8z0FAjHlOe1UhTp4XMflzVmW1iX3MlbL3I0rQuNJo0HBtW07Xt8x-IVxW+WVx0jPwaTjZN3hpCUUgTjoABiwnbcd26Acw5C3awaREPQGYsu97TbXOQS-koQS0MYOjsOUgJQBY2jWDYdQ3KIZQQKwjTlhGiKCLQNSE9ujDaDEECikoYCijaQA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_km.Rd b/man/tm_g_km.Rd
index f9c74b40a..3ba6fe9c3 100644
--- a/man/tm_g_km.Rd
+++ b/man/tm_g_km.Rd
@@ -193,8 +193,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQSvxQpFD6RlzUAPqh4dYhYRGGOgDutKQAFrQQ7PFQuDogSjo6AIIAIgDKADKROqQwBDFwAB4xUPyi1KUVlba2Tg1NLe2d-KTkSgC+QQBWRLkxANZwrKL5yTap-HDGUMKkMQT8tKIti8trG8DQ8JsFcgC6rhBVdQ0FwMAKYB+1P7PV7vAZDL7JH5-KqDFxgYFvFgwGKMfYnIgwVANOiiUjsPrlADCtnKWAAsoTKjoALw6HF4vplVHGGk6aHknQAIT+uEZOmImNZBHx-w55R5bNFZJ0hL+QTKcl5EDKpOltPp+OVZR0zNZf05iB0AAVqFACHB6EQeXyBVjacLoYbKoxBABzHQADQlf0JhsJGPouTClmCYHlOiCQSUaCxqVymU1ZQKrIKSrKfCEIlErIzwjEie1TRirtWMAL2rpUHocGoerAAGk0KaIAYyXBaKpjf5SNatRWCvddLToWC4WmKzokTFNCwhVklubRDFRDW4Oo4PxyxOZ4xaFWRCd5zJ8wCig6pd6pZTL0SSeTr2HFXyK+yyX9nxHxxXUCxYKc5wuYjLqu66bh+ZQztQghwIegGbDCQxFH8RqkuUFKVJeKFYGhcpfhOfwAPLVO+fbak+pFlFOzLooKtJUWitp4WUuLMOE06zvaR6LsBIigVuFY7nu9AHgQXEnjUtRniK1ROF6eCSpyZJYPWWAAExyuRE7an8MlyR+mkTgc5rHDuAHHkuK68eQYEUdqgn7jBolwewp78tJsmXopylqRpTHagAcg4tSArZ4YKn0kZKLQLLsLk5BqBo2jWDYJRaqIOQQKw5ToOwMYACSCLQRT5SujDaIEsxKGAMzPEAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_lineplot.Rd b/man/tm_g_lineplot.Rd
index 8c4ba63fe..653edf00e 100644
--- a/man/tm_g_lineplot.Rd
+++ b/man/tm_g_lineplot.Rd
@@ -185,8 +185,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBbgyhHMYBsqSiQUr8UKRQ+kZc1AD6GVnW6ZnZhjoA7rSkABa0EOFluDogSjo6AIIAIgDKADI5OqQwBPlwAB75UPyi1O1d3f0AQkMjY5PT-NT0OgCkAHx7Cx0wglnk7J0AagCSvbe2OgC8zybq+YxwAfyqV3cPWwtG73R4AORaMAaciCAF8ggArIgNfIAazgrFETSyNgqv2MUGEpHyBH4tFEYyRKPRmOA0HgWKKUDkAF1XBAegMhkzgMAFGBOf1+Sy2Rylqs8WVefyeithaKlGhUEMGjV2AsmS8dEzcAs+EIRKItfrhGJ1RAOh0RvkAOb5KRwSJEUjmy2W6hQehwaha-n9Bq6AAK-lI-N1Frd2rK9N0bxl4rDJ0tNsYREEqHymhYWoItWRBDE+VE3rg6jg-FdkY6WcYtE9IhJeZkZsFLQI6oFWAAsmGdDLuwBhbq9mUD2ydQfDsAw8NVjr9ntgJMdOSzyOsHNNguiIslssV5eWmt1+gN3P5lvitsdm6dIV4PtgZadXouB-8gcACQA4iOwIGv1-adV0PecBWuO9+UPECIzdVAWFgTcLx3YsRH3SsqyzahBDgRtkKuK9H0DCdOi7Ic-2IrBSP5GC50fO9bCg2DLSCN1WJ0IIgloYwdHYBpyDUDRtGsGw2gjUR6ggVhOnQdglQAEkEWgWgU4tGG0GIIFhJQwFhFkgA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_adverse_events.Rd b/man/tm_g_pp_adverse_events.Rd
index 3656ffc29..a5e56dd54 100644
--- a/man/tm_g_pp_adverse_events.Rd
+++ b/man/tm_g_pp_adverse_events.Rd
@@ -140,8 +140,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACKNTsk6pDAEaXAAHmlQ8XD1Tc0AygAyHV09-YP8otQ6AKQAfCujDca01OSM7A7jDgBCAFIAks2r5StjbQAkR6eXzUEAvkEAVkTlaQDWcFYokqiRs+X4cGMUGEpDSBH4tFEPR+f0BwOA0HgINycgAurEWlMOrlgMAFGAiZMKXiCRAWm0SVUyRSGS4wLTYmhUB1ysV2KNcjoALw6XK4UZ8IQiUQinRS4RiAUQBoNLppADmaXQC20jFEcF62jIIK2quoUHocGWotZ-D1Bp0TmNpFEFIlKtVDVyWN0tsprXZHq9DVQLAopF9ctZE2peDNoYStAj8KINp0FOe5yu7oTOkiRDhJTgtA1JVIcoI7AAbAAGWuTGoAJnrjZ0LdbcmDIagcH2MErJV+BDEaQNInUcH4ypDqoIQ5kYjlmhYtEtInhC5HILZNVZTlsTiwAFkKV28w1x3BJ-xo5SD0fT2A8+fPV7SEQBhrmJDB8PR1eN4zrOOjzv+sqiiujBrvQG5gYuO6Bnu962AA8gAGgA4lgZ7drOgHkLe-ptGhWE4c+b6qq+s6yIIojcMUrB-ghY7WtehHATRW5LpBq7roa8Hbuwu4ZveWBOHG1EgQRU53m04lxi+eGqkQgi+EQ8DMdurEThxF6gdxEE6FBMFwYZwlIaJbSoQ4ti4fpMlEVZTg2XZFGzlJXpQBYJBaQBbFAfpgk8cZfGwQJ5kifujQAMIAHL2ZRXqOXJTixQl7khp5qoaJporBaIOnsVOnEhgVy5hWZ4EWW0yGNOMtjNAAmolIE6ClxENc1FJKXmkLEE5cUOJM1KUUEDRBEEtDGDo7DlPs3kaNo1g2HUnqiGUECsI06DsNyDyCLQNT7QajB6h8ShgO8eJAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_patient_timeline.Rd b/man/tm_g_pp_patient_timeline.Rd
index 6a6c4a5da..45175ce25 100644
--- a/man/tm_g_pp_patient_timeline.Rd
+++ b/man/tm_g_pp_patient_timeline.Rd
@@ -209,8 +209,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACKNTsk6pDAEaXAAHmlQ8XD1Tc0AygAyHV09-YP8otQ6AKQAfCujDca01OSM7A7jDgBCAFIAks2r5StjbQAkR6eXzUENLQDCALIz3b0DIYEGCrDZbHQwQSJcjscENH7jWzNACaOgAvDpZKI4GkCiUKLCIA1icSfp9GrZ0RiFGB4PxJDoTjSdAA-HQAJgADLg4aTvuTKWjqbS4PTlp9mWyAIwAVm5vIa9mcrJ0Ut5NnWdyKpTS1Cg9Dg1FhYHGpEE-FYOmaUEtRGMOlNLFIOjtOm+opkCUsEBpch5RJJOh+TgAcij0ZioNjcfiKgqg-yKVSdDS6QymWAVQB2TnygOBhMC5Op0UMiWZ6W5vMFxWOdpsuWc9WgrXFEq6-WG42m82W622+1OOIu+3u-iejQkX3+gs-RqI5q2X4Y+dIpczwNz0OL5dNbdL8FBAC+QSUACsiOU0gBrOCsUSVRI2fL8ODGKDCUhpAjj0Q9C9Xre97AAQxotFMNI1DSLRtJBKZgF83y+gAukoQIwDed6iB0oE0oiDgolccE0s85xEXg8GrjuxFgAiTgAIo0RSnxqhR0G2J87JMRxADM3GfAALL656XhAmH3o+UByMA0HND8TFyUhYDIR06HiaIImAVhknSbJsFsQhik0ip+S4SatgEci5FQWApGvMJPrQOgHTlMUhINLkEa5BufBCCI2EYr5whiO5xJdGkADmaToNFXoUF+GjwFIcChSSeoGsswoAApxWQdi0El5QjHgvK5NA8ALFAujCjBLglfmxJlbAOLoRGsnyfVBaoCw8XldVlETJMkG8t1Gjxd+RCZfBdnWSN-hfvitARSUzoYqBABsuaTDUXKcttHJVpMfq8sCr7EPwEYECUl4EGIaTYiI6iiqlgZXTdYgRpoLC0PqIjftdMghbkwAyYZHXIchNk-M0TifAA8s007xg9cBPRdwrQ7DCPDQ1DTHbjOhVfsIJrQDt2iPdhqo+Q-AvSSb2AwFOhfYwP30H9DPk5JIN6XVEM2W0thOFgSn4zWOgo2jl1gU4Qsiw5BZi4GRMFTioiJIwq2YmTd2SzTdPEpzH0YizbMczrD7A6DtXGZDlELgeYBKwWeuitL0EO6L6obiSKsVRQ6Pa+9FOu7T8ZG0zpu-TiEfc9brR83b0H7qLPuBqH7sISnCuBs7jXq6r90a1rEeU49+vhxbn3fdH-3B3H7VKfz8Fzp7SMEw0Gdrcardrl7BN5x5Bf+8OpPB2X1PPZXwfV6ztex1bje21D3xtGGjuD8SXeYj3q-Z073u8lVjCGvErBF06l0WxPaMGw0Eez2bMcWw3hn6c3HtIsi7fi9vZlUd-A+A804NGPqfG0vRR5B0ZjfCuHdoHk0fvPF+i836JwFtuQBm9O5Uylt3ZOYYsGHwJosE+1Az4X01lfceoc74IONszGu7Nn711QYhZe9sv4-xrH-MCC4iHANKqIMhFCA7UJgbQ6ejMkHMLrozV+7DlJJyzoQ7hLtcE00zmvFEOcSTvGJPooIQRaD2nYOUfYUALDaGsDYOoAZRBlAgKwRo6B2BoFQA8QQtAajuIeNiRg2gYgQCPEoMAR5kJAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_therapy.Rd b/man/tm_g_pp_therapy.Rd
index 9eb2f3fb4..f30946520 100644
--- a/man/tm_g_pp_therapy.Rd
+++ b/man/tm_g_pp_therapy.Rd
@@ -209,8 +209,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQ7sxs7Pyo1KyBrhD8UKRQ+kZc1AD68YnWSplJhjoA7rSkABa0EOEJULg6IEo6OgCCACIAwgCyyTqkMARpcAAeaVD8BDD1Tc0AygAyXT19g8P8otQ6AKQAfOsmtNTkjOwOUw4AQgBSAJLNG+U7LR0AJMdnV81BDQ-tjx2NU7bNWydfJfR5-AFAiag35OABygOBRlBjThCKUAF8gkoAFZEcppADWcFYokqiRs+X4cGMUGEpDSBH4tFEfVx+KJJOABHYCjALVmvJqvK+vLkAF0lCMxoTiaIutzef8HM0AJrXQU6XkvC7qvCavn-NF63kdKZOACKGuFtlaAEYrXybQAmB2NG0AZldNoALKKcXiIDKSWSoHJgMK2u1XZHeWKulKYEHRLF+XNKVVgOG+dMZrGJRAvl1cpmIx087E0KguuVijyIA1cjoALw6XK4CZ8IQiOUtzvCMR1hoNHppADmaXQaVKqjQHAmQ501Cg9DgaxbvNsJRnqFYgvnQ9y0Hgzf1Irw+4aqBYFFIR906+zAvP9YXOivGhvDKIa-12ree5fBdIiIekt1oUcSlIE9uQANgABjgmYaidBCkJ0FDULkdtAKHBJaEYVdoJKPECDENJRFXOB1DgfhB1fBoCGImQxBPTQWFoZcRAZJjSNJL4hUdS4sCcXMwCwi8hwokRqP4aCeUE4TRI+V9xJwhiYCpYhZJbRiSLIqSqPIWiJIYniWJbNjGA4+guN05i+MjASOmaJxWgAeWaUVsPohoDJkk8TXaFz3M8sAJNU+ixnKUYiL00RyMomS6Misyex0SzrNs1L2H4-UOkueFWi8kydD8oyArAfLCt5cLvNfMZ+CICjYvshLpKM5L6tS1j2M4uBuLinLHLyoK3LNYq1MkxLyofZyxpcMLJoi+qYFIRgoJ01K2sMmjOoXOzeJ6qy+oG+yho6Jz2nsWwJp80rppoiqOmumqlrq-aNKawQWt47akpKg7zPS3qbP6wGHIukbmjGhxbp8srHp0+S5pOP03oksZGCIQRyB+-SHuMybTLio7MrB7LcsCrA3IcWwFuW+iEe0kbqdphbaoxz7RGMRgAEc8fipm9qHcHSZO8HzvaS7oamAAxLBLTE97XyZp7RrlhXXvohmRZgURSH4VgBb+jqAe6iyQaywbKYNAEVThxmCYq8FVS1lTlfUihDeNoWzZJi3jtB07eMlgSUXhe2lZK1WH3D13Fu1-dlKCIJaGMHR2HKA4oAsbRrBsOoX1EMoIFYRp0HYStHkEWgairijGG0GIIHRJQwHRMUgA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_g_pp_vitals.Rd b/man/tm_g_pp_vitals.Rd
index 750524dff..1989d7327 100644
--- a/man/tm_g_pp_vitals.Rd
+++ b/man/tm_g_pp_vitals.Rd
@@ -138,8 +138,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsOEMaWLUijIoQSvxQpFD6RlzUAPqh4dYhYRGGOgDutKQAFrQQ7PFQuDogSjo6AIIAIgDKADKROqQwBDFwAB4xUPyi1KUVlQBq1Q1NLe2d-JqiSgC+QQBWRLkxANZwrKL5yTap-HDGUMKkMQT8tKIti8trG8DQ8JsFcgC6rhBVdQ0FwMAKYB+1P7PV7vQbDXbJH5-KpDIEgpRoVANXKZdh9Ao6AC8OgKuD6fCEIlEWJ0BOEYjREDKZSaMQA5jF0DFNJluJs+tSdNQoPQ4NQSX8BqzqNM8BzqQV7rpsdCwX88VTOTpUCwKKQpQL-jVAWLFZyVRo1SciPyZWAHNUHAAhABSAElKvLxWVUP5jlk4LQ6VlSCSCOwAGwABiDtSKACYQ2GdJGo3IFUrlSxYKc-VklgQxDFRHy4Oo4PxKYmygR0zIxCTNCxaDyRCcy5nNjDqkU-gAFcpYcoAWQAwo6wPHndScyJ8-xNR2u32B8Oh3rqW0oG1zmmM1nR3nyIXhyWGxXsVXGDX6HXS+um2DW1qAJp-efFnSb8eaqp3sBzhNKqBV2JHtflqI2a5uORbFuegGVtWtZwPWF7sM217lAM5Q6g+xbPtur4oTqc7ikEZRBEEtDGDo7C5OQagaNo1g2CUiqiDkECsOU6DsIiAAkgi0EUnE5ow2iBLMShgDMzxAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_abnormality.Rd b/man/tm_t_abnormality.Rd
index 354447385..b6f09ce0e 100644
--- a/man/tm_t_abnormality.Rd
+++ b/man/tm_t_abnormality.Rd
@@ -184,8 +184,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeXVAEJ1DU2t7fzU9DoApAB8Uz0lMIKh5OwLJToA8gBy9rYAYrUAvDqyonBRKRkUaxAb92UAagCSlc+209lTp2tglQDCWCcTm2z22AHEFHgdFD+qVKk5qmCXGAbAA-GFgKG4db3ezOHQYqEATShuJ0Nlm3zSmSi1Cg9Dg1F+mzutkYcBC8DIOiwcGIjH4On29IA5lCAvcAgBfAIAKyI2SiAGs4KxRLlEjZkvw4MYoMJSFECPxaKImgqlar1cBoPANXk5ABdVwQCo1Op5YDAKHu6pQp0ut19QY6xLe30hgNBpRoVB1bLpW4lPI6E55HF3HR8IQiURp7MCYRiZMbBpRI0MiBERgwbjpDjk+mM6gF330au1+ukVh2BkibHkvJ23QnSMDQdZ+4sGBRTQsAsEDKKghiKLnETqOD8UsPU7LmRiAvzxi0fsXJcrkt+gqiQT0c6kRe-UpYACy2Mxr7f-3KErkmZ7iUG78uQQpjmA35klOGwAeSHT8BWRChK2Jz7KU1QIoBDz0Kwc4sPmJyXoeojrkyoHbruDzEauhE6CeZ70CIxoHrR7AVAMt73o+z5QgM-ylLYn5QgACq+pQftCvovG8QmonBMH3CBW7gT8fH9AJckFKJ4mSQpQE6KqcCoFENa6owBb4i4ikUth9z0FAG7ZBcJ6Lqxa7KWBVH3Ax54sVeGocf0XEPnAT4Qf02xYGCf6onZDyedubZgJF0XbLFBTGLQLRJScVnkvpDyiswupuQFZGbl55IlDRR4nL5TEXu5gUhiFPEQaUUUxRK8VKeRKnJZ1aUZdVJjZbldiONZe6FdOHY1nWqE6HQoikOw1BECkyXVJsADqn5ZKKGTJQAEs84InT15KtJIgi6lEDnnO0HYFuhmHTbBPQBAEtDGDo7DZOQagaNo1g2EUWaiFkECsKU6DsHGAAkgi0AUSPnIw2j+Eo0pKGA0pOkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_abnormality_by_worst_grade.Rd b/man/tm_t_abnormality_by_worst_grade.Rd
index fa0d96a3b..f0349e611 100644
--- a/man/tm_t_abnormality_by_worst_grade.Rd
+++ b/man/tm_t_abnormality_by_worst_grade.Rd
@@ -161,8 +161,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeXVAEJ1DU2t7fzU9DoApAB8Uz0lxrTU5IzsAISlAGoAkpU7ttPZUzoE7ApglQDCWE5OAHI79wDiFwUX-aWVTtVPLmByAIAXwCACsiNkogBrOCsUS5RI2ZL8ODGKDCUhRAj8WiiJrgyEwuHAaDweF5OQAXVcEAqNTqeWAwAudOqF0p1NpfUGyMSTJZ3PZnKUaFQdWy6XOEBKeR0AF4dHlcD0+EIRKJ5TpVcIxFKSiUGlFMVB6BAiIwYNx0qwovQbSlzaJMQBzZgovX6krUE1waiai7VE3mkLm1h2MSkHRYMQYjVpTI6AAStGdGQjOmebt0AAUiE6DP0oKJfdk4G8Fvq8qTdAqBQNy9LPToWDAopoWJqCBkIQQxFFiyJ1HB+B6m6duzIxJr24xaCaRFiJ734ayCqJBPRi5GFWcWVgALJvHR7-dXcoXQHKxtjgdwIf8f1gUoHi4VkpyK9j1AsWDYztLvtb3vUcmy7HspwVdtqEEOBF3AlduXeMBs2fUpT3PPBj2Q1DDwBT8xx0IDyAfHdzifapbCPC4bmzKiwB2Z5SgvN8dA-FiOn4I0iFCP0FQAMVKapvgrAJ33wpYVlUTVIn7OhlxAmSuknMjWToypSj4vi2Uwojh0fABNC98INOBuFk5S636OiAHl7nsWwtKPXSSKwwyAR6AIAloYwdHYbJVigCxtGsGwikbUQsggVhSnQdhRQAEkEWgCgS4tGG0fwlCBJQwCBSkgA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_ancova.Rd b/man/tm_t_ancova.Rd
index 33b7bd0bd..b2826c42e 100644
--- a/man/tm_t_ancova.Rd
+++ b/man/tm_t_ancova.Rd
@@ -185,8 +185,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyARVyikrLK6v4AR1ElAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdVwgcgqKk4GAFMBv8p-PL6+bWxdCHp5yWm8PkoWDA-IxlhsiDBUEU6KJSOwGpksABZHQAXh08MRDQyEOMmJ0TwAQogdAAFahQAhwehEJ64PE6YgwokEJHPcnZRiCADmOgAGoziWAAMLksXQ+jxDyWCBPIYZORMiAZTJi2wo1Fi7JEnFItUZHQEon-NE6EmM5ms2FYjnm9GZEWOnRixUNIZDEHoIrxaKGjJJIlJVUZPhCESiIkR4RiQPGkp+dZQcxETRQBPG7FQehwahm54AOTFAHkAGqZOy5kTWo3ZpLHXRY-5fOvZjJQTTbaLsmJjWmiPyifNwdRwfhZjsEfsyMREjPUQRwDazwfsAG5FL-csASVyu9sirDHYyI5E4-4hYA6k4nABpHQARh02UyAE0dAAOJ7M5Un7NQT8DNGD7AcxGHUdLynbMZ3A6MsRA2gaxXOC51mF4UgdZ40RdZ5NW1XU8MI7JFRVP9jXPMdyCvFscJ1UiwAo8j62NICCShNksXYyFbQAtjF2AlgwPQyCLxomDjTQwcFxYZD6BEVd4I3L4sM5MUAAkAHFiMrV4wDkFjTzPKCaMLTSdKY1j-wo4hNCE0D7TXCCqOgiiMmk+dELklClPQlSWjU0lMlyFw8FFXJ7EyLUnzw0LhQMozjNcsy6MirBosyWKrNPJLs1QFhYE2ETBzE6iJ0kjznIQnRF2XPz103bcwApFFMgYvDWoy1Fj3cnQUonQsADF7wPAwhuvK0co7PLjXicg1HWECSpc0yKr6zyaqQ3zNoCrcWU5EkQrC5r0sy7LTqcBLDP47MBtoiKopi39rJ0JVjXer0lFoQl2Hm1QaQ0bRrBsNIjVEOIIFYTJ0HYNBUAAEkEWgUnhhGR0YbRGCGfolDAfpziAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_binary_outcome.Rd b/man/tm_t_binary_outcome.Rd
index 697dcdaa2..b942d9d98 100644
--- a/man/tm_t_binary_outcome.Rd
+++ b/man/tm_t_binary_outcome.Rd
@@ -219,8 +219,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVYlXUNTa3t-IyiOgCkAHyTPSUwgqHk7PMlZQBqpdUAwjoAvDr8USTEUeOoUdRQ9HDU7KVbuzYzcxDrH6npGVc3d6tgHYZFhQdSqHRYMTCUgAegAYtl+NkAOYKMABD4vWZrYy0ajkRjsAAKpSwpQAsjtyjoAISHNEAeQ2WAAkgA5DZonQAH02LMqLNsB3pYDhDOq1QZAHUdA4iWiAgBfAIAKyI2SiAGs4KxRLlEjZkvw4MYoNCogQkaImmqNdrdcBoPA9Xk5ABdVwQCo1Op5YDANHe6pot0er19AZGxL+wMRkNhpQsGDnE0WogwVB1OiiUird5lLCU6mHbO5xgmg46QOFnQAITRBWIGcrBABpPJZQbVbA7Z0OwVclwPV7JdoOfY5eMlbRtcQOiJ1wIcHoRC7Tczh1bgbn5UYgmROgAGl20Ts5zt0-RsiFLIF0QEAmhM8lsuk8yU8pW8kP83whCIJkOP9hDEd91gaKJSCiK9oDYE4libOAwI+a5bmoacwEhURUBIY1xgbNYP0SJ1dBFCp+gI-MPlQEFGn4FsMnVJdRCiUQ7jgMF+GQz4CEYmQxErTRuEEOALT45iHgjAo0RJMkixPMBZIpBUf0+dY2JETiMNrJxKn6IkWTRQidEHYykyiITGAYpixFY9jOO4j5eJswCdEs2gbhEMSXMk-pGzbQsFPbKkgp2WxgvKAdVLUnQNI48h6LIwKwGM0yqPWczJzTZtDky1N12ij4c2YUILJYaz+JYuKHOMkpnMqwSWA8+gvPqiTyMqfy0UqJxjzwbta3JLAAGksAAJgUskdhce9Cs+aqEowqaZtSuaPxNM18RTbCSDY1zS0c9YdL0yoDMrA7avWC4WwBC8MxEcgITEHCIDYnR2B2LBFH6mSWA0bgnp217dGJL6VMukoRG0ahXK3dKYu7O6fDgR6sJet6PrBn7FL+jz0LR3aQaJLG1pi7rQha3RyjHOAoAxypym+6TFMYIhkXLURRC0KmabponGaM+HPgxGK0oR9kNicIVR3HCGdGuzcAUqCmRB0am2L596GaZ7s2SIUgdCcITqEETyQbZJxvrFhGdChu5YcOtTT3TZHUeewn3s+nW0T1g2jeEs33ot72ccYf78fd4H3uJpm5ZKGTWfZsQue0NXeYxokBex5XA-V2n6azuWRbU621KZVkOXOsdczlhWdC3Fm2Y5lOeY1jOs+ZnPKbTtuQe18GhZQuBoYdhOm+T7me-z-mQ671W8819h++x33DeN03u-YYOFUu4v1j3kWHyUWgp3YbICVBDRtGsGwinzUQsggVhSnQdgnwAEkEWgCg-tjGG0fwShFRKDAIqN0QA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_coxreg.Rd b/man/tm_t_coxreg.Rd
index f8ff94657..623cbcd20 100644
--- a/man/tm_t_coxreg.Rd
+++ b/man/tm_t_coxreg.Rd
@@ -266,13 +266,13 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpQGI3OgGK1Go0jpwAB6wqCLungC80TGxMRF2ABa6waEiOvRw1EQA7jq0ohlQonD8OiQ6pMk6gqKC3DpoqIxEUASJ+RCaRNSatBAA5joEjHBQGhVExglQOswQ-EQwOgDCACIAkgDKKzr848VwAVALlckQc2bKQ1W6TXSyExAYrtCMMAD6o8YfxDCo+iMdH87CUOh0AEEVrYIVgALLrHSRHTA0igi7guZwYxInQKMCwuE6ABC+NwYMxfwByIIoIJ8MhZLx9KJK3xigxcnJGMJuNR6MxWJxyPxxMQOgACtQ2nB6EQyRTwVTcbT8RDxWtGIIhgANJn4lbilZLej9caWCDsikcjlKfakWaGSpjagfe1Qax2g6AnQ5WhVfrsd24HQgCkQtZbAAyPtIMAIH2CHyg-FE1HDa1sticsfjiaCyf4pHISgAvhyAFZEfofADWcFYoiDBxsTv42KgwlIv34BQTVZr9cbwGg8Cb7rkAF1XhHoz73cBgGrI1H8ZPpxAI1mc22Dovl9u1xulE0ff1-QK9t7kcGKXwhCJCsj78IxJfwXGPt3iEFRgN35i0qZNQuIGkQQQ6FgcADC8eCKpi7qjroIoEpm2YKhigosJ8mgsCqiTVgQYgfCUIjqKU7Cqiy+osusNFQjC8J0WAXLMoS7LcoK4LYV82K-Es1KNO8vE-FSnFcagLCwAQZQ0gRMjEaRcDkfwAGCrh1CCHAvzyURTZbtmIb4hKsIQgiaw0SZWBmRxzIAPJbPi8Hglyzk6P4zAOh8uGMPhhGKVkynkKpblKnSKx2Q4ABy9gAJo0Vs9gQjCACMCVJTCABMtn4ol1mpU5mGYq5RVKkQmjeXhcn+aIJGBSpamUnSEIAOIuHgzLEnCWAANJYGlHWit1fXZYNYBYE4LUbHZUUDaxaptYVXE6CVy0wF2WgsLQ4zIXYjguEVHIuUoHK0Di7D9OQagaNo1g2GGGKiIk-SsBC6DsE0AAkgi0CGX0lIw2iMBypZKGApaTkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
\item{example-2}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpQGI3OgMpxiEfjpwAB6wqCLungC80TGxsRF2ABa0ojoa8Lg6UDqirGSJcBoEOqhQtIw6RMY6AIIAIra2TgD09V4AMjr8UKTZKSZQTDI9cAHGRBUAwkRBOoxwAObzoqKWEAkA7gXzabRiWf4lmtwA+vCkiQI6MD3kjBhKdEwsHPxhrIyK6-492YZpcFO3V61iUwL+Rg2tAutAg7HBmRASh0tQaTX0RnBGGMzHg7GRKO8tgcdQAmgBJOo6SI6BRgdoOAByAHE6bgCSiagA1GqdGkEdgAFkyAGZMgBGCWZABMMtFUp00rk7IghJ0k0ZXiw1J0AslOn1+oADArjZkTTojcqObUsABZSZUmnGKDqCb41Vq3XsC2G03mgOW83Wz1q6iDODUVL8-FgGr22ps2lxhMAITpXzVIbVXicAA0dS63YwPV7vRaK4G-QbTdmveH6JHo966QAxJN0u0Zm11lHkzW2Quu0jugV0moduOT9N4ZMzzLj6eTiezunz5MruS9nKkRiwhaiGqiVvDibN1u83MEzOoxpODFzeiw-jsep3zJvpoftFOb93m+fve-xQKIJwaPQ9AiK+P43qIhQYHBozsOKAE-gAJP2XiDv8oihFBgEYQOqF3mhNTMkBRi4TAYRwOwcEAI7sAArJkADsLE6Exyo5LQABeug0hAjBEBs0H-pk8xhK6Al2I4TjEU0aEOF4DipgAUpSD6lKI5CxqIgj0Em4qIEJIliU03EEZhtiZHBqA6nSBjdp6BEAArxjUdoPm5HkOlS-x0gA8l4dIEm0nQ4QZcGkKWhKASqapwSI6g6mOYDKapGl1JOWEkhS2Wrimfk5fmk7Wcu5HOSiXwAL5fEoABWRCwicADWcCsKI8K-DY-z8HALrCKQJwEPwKQECcTUte1nXANA8BdeCcgALquBA4UPuCwDAOOdQdHSy2retP6bb8227XeB1HQkAAGXDUDdWToHQsgaCQCQGJ9X3fT9TkQB4OiMkQ5BpIkPSg7o2rEP1gRBKgEzkAE9CsDoN1eJcGw6Nq0z9Y9-BEPsEDAzosKSIIMMXLo4IJKg8wGLTRAEGIqwQAsGA6KSRCCDoULUNQOgQHAoxpEQurzCMENdL80VZKkgxENoOiNuM8wJIwZjKAskvBPDjCI1juoCHADzfCwMAnPMxgjUQ1EPnQOmvvajo6vbMWWw5RWJrOxC2zG45phmW5rWg9n-LC0KxeCOoIgSfBCCIzZx8IYixSipDm8NxBBPMCyp4SDaRh70yzFgiwPHgNoouC80yRdTRspXWSMObxwVPylwyGIJxJb4iPsGl8bFWA3H+0P24ombFsDdbvtN+blsz6gCVeqUuKjalHdM6BPfqEhjcosc1CCHAI2byn8XJu5WCeY6k5X55GYLmAwWhaGhLjzuzC9Ccrcb81W-d0jL3JCaVyrD0yIyBw7R2gf2IJoH+LA-6d23kA3eL40q5jzBVFw4DkyYMfo3GAQ0tAsFoBLGk9hnA9mvEoL4tBqjsFhHcYcWhaJbh0EiT0ohkgQFYDUdA7AQ5oUELQTIQi4KMG0J8JQNUlBgBqstIAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events.Rd b/man/tm_t_events.Rd
index dd0cf908e..271a58efd 100644
--- a/man/tm_t_events.Rd
+++ b/man/tm_t_events.Rd
@@ -161,8 +161,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOzMpyKSssrq9zglAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEyoZHxyeBoeCmkuQBdVwgcgqKk4GAFMEv8+5Ozi6aWudDb+5zm59elGhUEV4tF2A0kjoALw6JK4Bp8IQiUTQnSI4RicEQDIZEp+FZwbRkKYNHE6ahQehwaion78bSMUS6JxE0h2Skie7w7Fk2GhA66GE-d5c0k4lgwPyaFioggxYYEMR+JkidRwfjsAjgh5YACyXJ0Pz1AGFsvc5CkjfqwBaxRlqNQ2TC5QqlSq4GqNXacS6ZGJUdLGLQOXBVvK-VNfk4Ulqfk5bE49Qa49knMaAPJmm22nm8nTuz2y7XNVMZrP9PM5vMxR2y8OK0TK6ke8he3O830NgMsYP0ERh12R94x4tOABCmdyAE1csmHk5cunjeaq3n883C0L5xO8jP7t7V2Savx8URPDSYfZnNy84SKCtSKxUILDSh6aomTo72R9+2Kzp+n6WhjB0dh4nINQNG0awbDSHlRDiCBWEydB2CBAASQRaBSDCmUYBl+h6JQwB6E4gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events_by_grade.Rd b/man/tm_t_events_by_grade.Rd
index a4b5d9972..158dcdced 100644
--- a/man/tm_t_events_by_grade.Rd
+++ b/man/tm_t_events_by_grade.Rd
@@ -137,8 +137,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEPxQpFD6RlzUAPpBIdZKMaGGOgDutKQAFrQQ7Am4OiBKOjoAggAiAMoAMmE6pDAEkXAAHpFQ-KLUhToY1PTUoq1BuknEUdRQ9HD9nPWNLW1QcAFFZcVONXUNzYOLOgCkAHx7XUUwgiHkkbTG7LTiBOksUOqqeVDixs+kRP46AMQAch0kx0BFUISyOiIxh0j00WQA5iYvj9RF1RpFxpNpqsnDYkj0+gMFnAlABfAIAKyIWUiAGs4KxRDlglB8UZ+HBPsJSJECPw7g1qbSGUzgNB4MyEnIALquCBlKo1BLAYAKMCKyrqmVyhWlNbK1mq9W47W6pRoVA1LJpdhdBI6AC8OlyXT4QhEoidOndwjEdogRSKdUivLg2jIA3orEiCOYnIDQaDWKm3pN-G0jFEuicEdIXujOgA4vHdLYJiJ1bgTkGEhLdM6TfqXHga0UWDBIpoWN6HjSwQNsyIXvx2AQ7RqsABZKs6E3TgDCpXVcjy85nYFXbZ01GopF76X7YkiQ7gI8TSaDfZkYm93cYtArcD5h5vzNxeXHJqctic09n36lE4C4APLLpuW6BpeRSniOvYTmsQGgeByyXpB0HpHuB5HoOUxnuQo7bkU14DneLCPn0z4kf6H6gghTgAEJgeUACa5QARqTjlCBC4ruh0E6LBBFppxTEVGx6rbvxSZxm0Dagq+A4nnh55EQpOFkQ+T4vjh7C0V+nG2CBAAaRZYBxazlE4ABqfHVlB0FCXA-AiWsRmmeZYBSTWqEBAE1w6LcKhqBo2jWDYBRQaImQQKwxToOwloACSCLQbzoEl2aMJmARkkoYBkjKQA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events_patyear.Rd b/man/tm_t_events_patyear.Rd
index 4594e2750..354a2b091 100644
--- a/man/tm_t_events_patyear.Rd
+++ b/man/tm_t_events_patyear.Rd
@@ -192,13 +192,13 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeWlTra2TnUNTa3twXCk5DoApAB8sz0lxrTU5IzsAAqlWKUAsgDC5XPZszoE7Apg-YNOAIzXBde3QwBMTzovA0MAzNdyGwLJYQEolGCCULkdi0UTNbRkHQAXh0hwAcpUsMiUQAGIGLZY6CFQuDsCDwiikUTInRQcTZcgAc1UMLhcARpEBSgAvgEAFZEbJRADWcFYolyiRsyX4cGMUGEpCiBH4sKaAqFovFwGg8AleTkAF1XBAKjU6nlgMAXlVqtdDcbTX0fsMZYkrTbXi4wA6TUoAMQ6e4YHQAITpMh0ThasB8cBNaFQdWy6SuoJ0eRpeVwPT4QhE1JReeEYjTYPqMCiSvZlLhqBCrDgLDL5Z01Cg9Dg1Bp3x0WBCulK-D5glE5H4JiIjB0WxCtEpBgAmk3GNTSqQ+7DhXYOyInoSSnldboUZ6Xfv0+WWJXNCwaQQMoKCGIoqIu3B1HB+C3WxdHzIxBpW9GFoXc4GVf9nwlM1qgKS4XiwfZPgQo5ygBOQc0vVs3xET8J1PG5EOOa4Dx0DDSI6fgqyIUJuxRexnEw38azIOFgPvSCXxwj9xx-VsHyfQCUWA0D6BECDBOg507meSAKVYgEmN-HRuLwns5JYqkL2UkxaBaL8aQYlwsJKciTJ0etmEafC-0k193zwvjywEgDCx0W9qEEcCXKg9gKi9WSdj2VDkLAIKDkU0iSlU8d1K9R4wFIgJy2SsilACWhjB0GEVDUDRtGsGwinTUQsggVhSnQdhEwAEkEWgClqt9GG0fweSUMBuUNIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
\item{example-2}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeWlTra2TnUNTa3twXCk5DoApAB8sz0lxrTU5IzsAAqlWKUAsgDC5XPZszoE7Apg-YNOAIzXBde3QwBMTzovA0MAzNdyGwLJYQEolGCCULkdi0UTNbRkHQAXh0hwAcpUsMiUQAGIGLZY6CFQuDsCDwiikUTInRQcTZcgAc1UMLhcARpEBSgAvgEAFZEbJRADWcFYolyiRsyX4cGMUGEpCiBH4sKaAqFovFwGg8AleTkAF1XBAKjU6nlgMAXlVqtdDcbTX0fsMZYkrTbXi4wA6TUoAMQ6N4YHROFqwHy6NKZepQegiHSiHzpHQkIO0xgwKKaFg6HOMWhxkSiE1oVB1bLpK6gnR5Gl5XA9PhCYs05vCMTVsH1LNK9mUuGoEKsOAsLvdnTUONwag0746LAhXSlfh8wSicj8ExERg6LYhWiUgwATVHjGppVIC9hwrsRbgT0JJTyut0KM9LsfNe7LCz+ZpBAZIKBBiFEogznA6hwPw44ThcQEyGINL5oW8ZwMqCEgRKZrVAUlwvFg+yfARRzlMRYCVE4AAaAJyI234TuBIhQVuKL4TchHkZRNFgAEcF0U+tL8PwUSkEQoSzii9jOPRcH9mQcL-mxmGgUxkGbrBE6AcBSEoih94YTp2HOnczyQBSCkArJcGJhBLFzuZ8lUl+NkmLQLTQTS0kuAxJQCb5OhDswjSsfBRlgXZGmCSU2mIdSencII6GxVh7AVF6Zk7HspHkVlBxWdFtnMZuDleo8YCCXxYJVQEAS0MYOgwioagaNo1g2EUNaiFkECsKU6DsGWAAkgi0AUw3gYw2j+DyShgNyhpAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_events_summary.Rd b/man/tm_t_events_summary.Rd
index 8c42f4c2c..47fc8eb87 100644
--- a/man/tm_t_events_summary.Rd
+++ b/man/tm_t_events_summary.Rd
@@ -217,8 +217,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otQ6AKQAfD3FJTowgqHk7EPDOuW2ABIAYrUAvDqyonBRKRkUkxDT0wCEtOLQ7LNzszYAfjoKYACa97hTB-bOOrf33-sHNv09VLpDJRahQehwaiTMCVQT0ABWcHUMzgIQyOgWYIA5vcAtM8WVyqUnHUGk1Wu1gnBXL8MB1+M1tGQosZsaI6qZzBorLEbEVfiVYnUhQDXiVRuM4HsDsNbABZAAKSyilScWB0q2JqvVy1W9yeeDFssVyqwThWZTV5o1esezyNJXlSuqUQA4lgAKway22ADyAA13Ta7mAPfaBW9FSq5QBFAAMAEZvcdTlB2JVY4mAHKlOVyF4R6ZO6PxgBMyZOGDOGbLObzBZljqjAGF40nVimq2nW9ncwT8a9iNRBDAIKDwZD2ck6KJSNLI86VWrvfdKqpLIJ2cTwzKnabrbasJCQnB+Jadwvle6vbbXcx+LovdvDYW7FGa4nvVAxLRxxCobEwDAKumYJnW9wALoQQUgHATCoGVM2kEQfmRrFh+5arN+oi-mC-7Qg8GAAJzEaRREAPQAFpkWRlqVAAkriDYLlEPbtjo2G4ROAEhEB9xseBYBQf2OgiUOf6TrkIRyMA0DwKI7BDiOY54ZOcgQXUUDiAQGQsFA6iqIpRDDqOEnUKIImxEMAC+NIlAAxAA5DoroUKoITZFiOibqoBgPsY2SnjocBMqQJhshgQwVMSdTRSSAI6HS-AMiFFCkCybLxIEtLfu0EDRJoLBTkYcliOwcUybOLCkKIADqwLsKVCkVQU9x7i6uIQUMdI-lEhWMMVOhNeVRJOJVoSMDV9WZI1sBlS1IbFp1SjWQE8JENkUQANZwKwCl5DYyT+VAwjpQQ-AnE062bTte2yXN+2JOpNJoKgdTZOk855N6eTMXwQgiOyqz-cIZWvA0UTpalZCiFEogjjAnjztMqndLapT8NoA26E4oXsrCMCI2wF7THkpUrmAcUk8MLAwH1LDejpG0EGIcOQki5D8MjBxMzIYjev1tDgiIUS8yzCn3BUNTPGs0KlFgcoy5LCvNuUuKoa+JQbCIBlnujCs-DKGsyqyUBYvTjB5WjawZMzrPaxzp7c9MYv86sgvC5srsS5To0y3kfFgD1VsW6IyHG42Du6z9iSB8HUD5aHyHAAm0EOjoO1wKgUREIwD6MN67xOMxJu0C0QWrAspTVKqRoR9Mpvm-17Q-oztt87DUec87wzewLLBC-QIve3Lft4DoAdwT1OFJ0JKElwcXcVxPsdT5xs9QSnaeaxncBZzneeqIXjjF+nAXl3rGLV7Xr71zTyWQ0QoTW0XrwEgEAS0MYOjsNk5BqBobQ1g+RDFEFkCArBSjoHYK9AAJIIWgBQ4EbEYFjAItkIBgGshBIAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_exposure.Rd b/man/tm_t_exposure.Rd
index 6c6f7f5b3..7aec2d4a8 100644
--- a/man/tm_t_exposure.Rd
+++ b/man/tm_t_exposure.Rd
@@ -161,8 +161,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVOABp1DU2t7fytrhAlonCkGDNw-OwAjAUA1tn8OgC8OgpgALKqMxAQcAa2aaLkjPsBJRjUUPRw1KJ1xNFPL2-sFQMFYy0ajUHY6ABipWqlSc916Azq-0GAFIAHzInolfi0a7ZdTsByVBwAIQAUgBJcoFDBrOBwVDtEFg+zOGxojFTEo6GCCULkdiYrkABVKWFKBwAwuUwftbOUHFhyvtcIKSiKxQcZWAAPLaZhMoTMDQkHS5KCsUSKPCqsoANShYNEsB8cHYLUdcAAjisCgAmAAM-rkBVEtAAXrpdjlgzpGPSngRI3ZHLCVZyuXaoQ4teVzaJ9oK2ejBfRNlFGEQUqI-n1+nDPlFvq9q0ibMlHs9m0oAL4BABWRGyUVpFrNoTbRnGxigwlIUQI2NETQHQ5HomA0Hg1bycgAupM0Kg6tl0gLOXkwXk0yU+EIRO9drfhGIzxmGlE561UERRII46+Mx0JtQV2fZyj-EJLCmIhjB0JwWm-X84zsZ4RGVG08k3JN9iRdD0y5VAWFgBcwQIDJB0TUQohmER1EWADAJ0MiKLEMFNG4QQ4HnciZBfPJgGAHDa32XddwKfZ1XFKVlT2MBJIOO5r0YnQaLgOitlAsA5QVJUwBtYMbQbehWCidjGFInjKOo141PIJYbRKZjeIfHQzNoVCuKcyixygAShIGESxJUwR6BmUhSIFMAYX6GScKwBSwDkAz8IzVT1K1aKCxSnRksYisUiiYzTJYCyWKotK7IYwCvNY3Y3I87iyp8vywFwsBRJDEKwoi-YxQlFw8FkrAnAAcXJbUADllliqL7FKWxSmmwb9kyxLcuUirFi1PqBv0pSM0IxhZHC3YavKmz1KqjMzrYjjPMsvjEhatqOtk9UJXm31FIclSLrsnNGEEABzMossY9aMw6fgPyIUIQIhKEYULHp1qBagbjBSJqLobysa6XjIoqGoZsqUpwXBaoZM2jTZIATTuAIAloWD2GyG4oAsbRrBsIpOVELIIFYUp0HYQ8ABJBFoApxZmRg9QCbslDAbtdyAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_logistic.Rd b/man/tm_t_logistic.Rd
index 4978fb7a8..41a8e2bad 100644
--- a/man/tm_t_logistic.Rd
+++ b/man/tm_t_logistic.Rd
@@ -131,8 +131,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVYlXUNTa3t-IyiOgCkAHyTPSXGtNTkjOwACqVYpQCyAMLlU9mTOgTsCmAAQk6V-WsAkucF53cAcgBqTrbncgEAvgEAKyI2SiAGs4KxRLlEjZkvw4MYoMJSFECPxaKImkCQeDIcBoPAoXk5ABdVwQCo1Op5YDAc6U6rnElkil9AZwxK0+lspkspQsGBRRgI1FEGCoOp0USkM4QEqlXa2TZ7A4AXh0Upl8x0wuMOnV9Kw2x0F0e2uI4v1JzOYGVZUeOkNxt23x6clwPTt6s1spKJV1VvOF0QOjW1CgBDg9CIZrlfotEvVp3pIfKjEEAHMdAANB3nXYh3Zi+jZEKWQJgAIlAIBfnoOrZdK+nR5K15D1xvhCEQTdVd4RiZslBpRFHUIgZjEaZNxv0aqD0ODUQNgaoTqcyHRYOAZ4WiUTl2Nzkp5Am6A22nl4bUlAVRTQsK0EDLAyOiKKiJdwdRwfhD4-Pq+YhWg+jC0AuIioi+MiDhU-QFMmtpGnmSEqt87o3n6n4iD+-Arsq5yYRhs5+neuqipa6pkSKCYdseOioCwsBok+0Fvh+X64f+c6ATBvY6A+1CCHAUFAVCcGVE8YAbFsaF4I60mbDs3x0fROjYd+5B4ReVw3JU9yESR1aqTxRCaPej5JmxYgcThWncfG1n8YhlROLm8n0gA4i4HmXNsWAANJYAAjChFz+UFABMKmYSUGm4SurnuUR2pVjoNZKLQersNkKwRho2jWDYRRxqIWQQKwpToOwaCoAAJIItAFLVdWfow2j+EovxKGAvwkkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_mult_events.Rd b/man/tm_t_mult_events.Rd
index 27e43c5da..029f8663a 100644
--- a/man/tm_t_mult_events.Rd
+++ b/man/tm_t_mult_events.Rd
@@ -148,8 +148,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyAYQBZIpKyyur+AhglAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdJRreyenRIoJ2BTBc2wdsgE0ASWznlOeHLkHAAhABSPz+OmemVe2VsLUhz1auScAEVEWBMrYmgBGDFYpoAJnx2IAzCSmgAWZ5DPYQW4zOaeOTAaHNBF4KGY9nPc5Fa4wBmiVwQHIFIpJYCs7kFXmXUXsiWhKVs1pykVoVBFeLRJ4QDJJHQAXh0SVwDT4QhE9xNluEYj1GQyJT86xga3K2jIswaTp01Cg9Dg1GNXKaJGIMGiUDIOhacC2sg0JHu9FYcYTMg8ln1TQDonuMf4OgACoxlqpy8WAHKwOB-X1OpLHXQm1Uc836v06FiCzQsUMEGJjAhiPyiYNwdQJ9iPaFYDtczILpq-MByf6Yhc0zvdnQTgCOfn7jEHw5kY4nImn-CeYGRaMhV6n5GLbfvLRR6M5xloFQTob2M4G6NhkMTUKQZ4jpek43o6e46EO0E2joJ60IGIgbOeo6zDkrQpHOmLYninLQtixKkURTTkpRBLUuuIFdnuz43oOd4EiRm4EhRXFkhS9FDHujF7tQEFQReojjrBr7wXuSESaGaEYXAWHIeweEtARd6tNkThNAA8mucjCQhLGvmxSItLpBlGaBOgmX6NT8K6RCeCGJpAU4u7dnAXrrKQrCoK2XKkOWHjwGQzyNoJ9lKEMtDGDo7DxOQagaNo1g2GkXaiHEECsJk6DsJqAAkgi0CkpUTow2iMEM-RKGA-TnEAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_basic_info.Rd b/man/tm_t_pp_basic_info.Rd
index 7cc0fe4bc..9138d5e51 100644
--- a/man/tm_t_pp_basic_info.Rd
+++ b/man/tm_t_pp_basic_info.Rd
@@ -67,8 +67,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWolAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEyto7u3uBoeD6kuQBdVwgcgqKk4GAFMF38442tiCU0VCL46PZ0nSSdAF5n0NwnviERUTedD9hGJHhAMhkSn4Jug-PQoKIZH54sYiKDweDqFB6HBqADjgAheEyHQASQgKOOXzB6I+nhWunex1OlKe6NQHloFAmxFxjLADlyDnxACkSdkWdT0ZoWP93gQYu0CGI-KIcXB1HB+GiaRl5YqxADpYxaFiRJMFTIQac5FSdRlVSINfwAQRHicsABZSk6JkAcRceB9YFyTgAGt7jgBhADyDgAcvYAJoRsBYTKRgMpY5OaO5XK2WzHZo64vg0vNZq0Yw6djxchqDTaaw2NLU0RxCCsTLodg3AAkgloKX7qsY2kYzQaSjADQ2QA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_laboratory.Rd b/man/tm_t_pp_laboratory.Rd
index 86f271b96..f4d00026c 100644
--- a/man/tm_t_pp_laboratory.Rd
+++ b/man/tm_t_pp_laboratory.Rd
@@ -119,8 +119,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOz8gCEikrLK6v5qeiUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urptaF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NboPzUKD0IjMUgUjgNPE6Un0ODUdGPABq0W4okeiNxdPhoSOujhf0+3NpeNQHloFDWxGZwrADlyDmaACkAJLZMW8umS5ilfjoggxUYEMR+URMuDqOD8HF8vHG01idGaFi0MkidYmmTY-7NFKPAAKmSwmQAsgBhLVgOQ8h0ZS0iG2GhUhsNRmPijJx7M6PWwI0+s2iC1WlP2hNO31ouFuxge+he6sl9j+wNgdMRx65nV8pPW8ipnTB0PdsB53sOjTwVCjMi1nQt80Dit5jLLxf1xvN4t+z4dnIATR78YTq6HLKe2RPE77ObPdKgEAbEGHm7LyaHlYdm9d7s9OBvWdGZ2xHJ4ADksHVCCYync9y0vBVMigmCs3vHR4KfN1-HrIsQM-QdbR-Pk-zrACmyAzc2wPcDMlZTIXljR9+0Q20r3oxjHknFiMigHDBD8PC4Q-C9iPXJc9y3CjdxAmiWkPBj8gcU8JLE4c-iUlS7wdQY6T0zClEGWhjB0dh4nINQNG0awbDSXlRDiCBWEydB2BBAASQRaBSTzLUYbRGEGPolDAPoziAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_medical_history.Rd b/man/tm_t_pp_medical_history.Rd
index 424ce6fbb..0de76f252 100644
--- a/man/tm_t_pp_medical_history.Rd
+++ b/man/tm_t_pp_medical_history.Rd
@@ -89,8 +89,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyAWQAJIpKyyur+GBilAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdVwgcgqKk4GAFMBv8p-PL6+a2xdCHp5zWm8Pko0KgivFouwGkkdABeHRJXANPhCESiOE6FHCMRQiAZDIlPzrdB+eBbWT+OKiUhENi4-H46hQehwagYp5NODk7g6FrbGlsJ5IvEMhGhY66eH-L5ChoM1AsCikCXs555V54OX4hUaJUbIhsqVgBy5BwAIQAUgBJbKykUM3rkRgwDEEGJjAhiPyiVlwdRc+mijJuj1iDGaFi0ZkiDbumQ4gEtFIEKFgVq2JxYJpPORyYVBjI+kT+-iq9OZ7NgLUZPPVzExegCUQzV1xz2ib2+kuBoMh+Po+ERxhR+gxvvt9iJlIclpmgDyeQAmrkc-mC0W-eRS0bWvOlyuq-b8bWjxleltqR5W6GOxvu3Xg22w4PI9G4LGb5OvtO0y1slbclsTJbFXB8dDvLcyz-ACgJAw8gyGBlEJ0IYhloYwdHYeInSgCxtGsGw0hFUQ4ggVhMnQdhQQAEkEWgUhon1GG0Rghn6JQwH6c4gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_pp_prior_medication.Rd b/man/tm_t_pp_prior_medication.Rd
index 6e117e107..2992351ab 100644
--- a/man/tm_t_pp_prior_medication.Rd
+++ b/man/tm_t_pp_prior_medication.Rd
@@ -102,8 +102,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEPxQpFD6RlzUAPpBIdZKMaGGOgDutKQAFrQQ7Am4OiBKOjoAggAiAMIAsmE6pDAEkXAAHpFQ-AQwhSWlAMoAMjV1Dc2t-KLUOgCkAHyTJrTU5IzsDj0OAEIAUgCSpVNZc2VVACSrGzulAUVHlcdVxT22pbbVSTfHD08vXe-3TgByz1eRnexQBQKUAF8AgArIhZSIAazgrFEOWCUBsSX4cGMUGEpEiBH4tFEDThCORqOA0HgaIScgAuko2h0kSjRDUCOwFGBHg5SgBNXa8vK8s5bEV4HS8z4Q6W8qo9JwARVFMrAxVs5QAjOrZdqAEz6zXagDMJq15QALLzYfCIOzUeiQnJgLKKpVLZ7eYyaqyYE7RK4IGV+jUEsB3Zren1fczQ56Ixiox6qvGQ2hUDUsmkeRAigkdABeHS5Lp8IQiTmlyvCMT5opFOqRQnoSKoRiWRiReAk2QaKxdJs6ahQehwCal3kABS7REYOkqcH7wUsEFFw6bCVpumnMfTeC3RVQLAopF3JY1YbjR4LI50p4056JRCnGolF0395Ha8Yk6vAh0nhAgxEiURJzgdQV0bB8iiAkCxCvTQWFoccRCJYCZAbG4xVNbYsCcW85FwY8mwgkRoP4K8DQIojeTIkiyI6HFiGo0sEOw0RwMgqjYLgzjQJrHQUK7dC4EwxC0VwjUqlKJxygAeVKO1SJ-B8KKg8h2Nkyp5KUlSwEYtSBJgLJ2kArChJ4yjtP4h9BKQ0tRLQ+gMMc6TPTwqptkBcpVLIopNKomiwB8vyGPUoomKinQOlEUh+FYSypJsrSYMCuKrKckTUPEySuPYGTZUeIUAtioLeO00K5UFSK4KuJtGoCAJaGMHR2CyJYoAsbRrBsAp71ETIIFYYp0HYLNjkEWg8imiDGG0fwoSUMBIUZIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_shift_by_arm.Rd b/man/tm_t_shift_by_arm.Rd
index 27026c12b..93d7ea80c 100644
--- a/man/tm_t_shift_by_arm.Rd
+++ b/man/tm_t_shift_by_arm.Rd
@@ -145,8 +145,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOynAHEikrLK6v44AHMlAF9FCAArIni-AGs4VlFE0Jtw7uMoYVI-An5aUTLR8amZ4Gh4WaS5AF1XCByCoqTgYAUwa-zHs4urptbF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiOLGNb0VjVRgwHF4vHUKD0ODUdGPXIk0g6clZKl2BkiR6I3G0+GhI66OF-T4Chq0lgwPyaFjoggxMYEMR+URMuDqOD8GnCjKKxi0PlwdaqmTY54pUSCehajlwgiQp5YACyAp0fw9AGFso85HJBYaMlqRLr+Cy3Z6wDK8cH4xlUCxYBtlZb1aJNdrIwbDYrqIJzSq1dbPilHgAFTJYTLu-2BkOh8M68hRiVgAASWEeSZ0iaFtM0W2iCqVzszGtbef7Ru4xYtZdm-2alaeADUAJK5Le2JtznQz9vRqsAeVytgMACFMrknPktwA5Jw6d3Prfuhyx-uDw1QQtx0YDNlxzCN23zYVjVNegRCXK0VwrI97UdaNMifLBnwDMA-xbXMT07dDMKfbDm0NYxaAqPV0XsZxfzIvF6CgcN4nNY0QIQsC2z1SDhxYGC4NLBD2FXW0ULgJ1vTAa8MKwg8h2FY9qM7GTiNIw8KKojs7EcFwFIyXDaUELUn0yaNaGWCBWD7BShgMpQhgsnR2Hicg1A0bRrBsNIhWJeJWEydB2BBAASQRaBSUKtUYbRGCGfolDAfoziAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_shift_by_arm_by_worst.Rd b/man/tm_t_shift_by_arm_by_worst.Rd
index aa87f47fb..4672fa128 100644
--- a/man/tm_t_shift_by_arm_by_worst.Rd
+++ b/man/tm_t_shift_by_arm_by_worst.Rd
@@ -145,8 +145,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOynAHEikrLK6v44AHMlAF9FCAArIni-AGs4VlFE0Jtw7uMoYVI-An5aUTLR8amZ4Gh4WaS5AF1XCByCoqTgYAUwa-zHs4urptbF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiOLGNb0VjVRgwPzkvwRIiMUSkHF4vHUKD0ODUdGPXIk0g6clZKl2DkiR6I3Gs+GhI66OF-T4ShqsljUzQsdEEGJjAhiPyiLlwdRwfgs6UZDWMWhiuDrHUybHPFKiQT0Q0CuEESFPLAAWQlOj+-oAwtlHnI5JKLRlDSITfweb6A2AVXio2mMqgWLANlqHXrRAajQnzRaNdRBHbtbqnZ8Uo8AAqZLCZP1hiPRmNx43kRMKsBOEPNACSADlbI3HpmdBmpaz6Yy1sZ2T0-Fb87Wiz3SzPLSwbfQRPat+x-s0Ut7HgB1ADyWFyAAYAEwAMReeCDYDvD8fAEZ3wjOcYx0Hc+yTH8nzfD8Z2A6VFyZPwVygHpN0dbcSz7MtpQrKsT3Qs96y-SCX0AsA4ItMDTSTABNZV52lYxaAqai4XsZxYK7VUK3XTUvQLfUqLNPcdCtQ9jxrAjz0vH1MgANUyfIQ0DP4xywcdw3IijpSEpN5MU5TUwYjJtIyegoDjeI7Q3fit2LeMsJEsTbXwwtCJaGTHgAIUyXIhxUsAvLUjSgK4nTMNYr8fL8wzOJnQRDTHTIk1oZYIFYacGKGEylCGVKdHYeJyDUDRtGsGw0ilYl4lYTJ0HYEEABJBFoFImsNRhtEYIZ+iUMB+jOIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_shift_by_grade.Rd b/man/tm_t_shift_by_grade.Rd
index de64a0e34..0af0b42f4 100644
--- a/man/tm_t_shift_by_grade.Rd
+++ b/man/tm_t_shift_by_grade.Rd
@@ -165,8 +165,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOz8gCEikrLK6v5qeiUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urptaF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiOLGNb0Vh+ADmzEWOLxeOoUHocGo6MeAHEabp8kyiMxSHzWFl6BA+TBuNEhbYmSJHojcfT4aEjro4X9PnKGvSWDA-JoWOiCDFRgQxH5RCy4Oo4Pw6YqMkaTWJ0frGLQZXB1saZNjnilRIJ6BbSIbIU8sABZOU6P6RgDC2Uecjk8vtGQtImt-DZ4ajYC1eJTBYyqBYsA2hu9ptE5stWbt9sdPrRcP11EEnqb1fY-2aKUeAAVMlhMhGE9HB8PR0nU2mM1byNm1U98rZHsWdEWFfSInzRGtjIzKXqDXCu2b5-WNw6q87Wyx3fQRF6nTNe-7A8HQ48AOrsrD5AA8gAagAYi8eAxmAf4AYB4ETtB-4ABIAJJgRB-aIVgqHwWAyazval6Lt+WFAehSYblu9q7ow+5+IeUDHvEmyyAKjCVq+taZouDaKm2HYvs2PafJhMFkbhVFznWxHLgAmtGxi0BUNrovYziUQReJQBA-gChU1I1J6rocc2XELjavH0ueLY6K6j7PtZwktB+QZwCGZ5hpktiAQAGv+SaSYR0kqR5fzeX5WAzteJhKSFdiOC426FppGT0FAFqEkQ+lcie7FnreNZERZ0XWS6D4eoJ3bvjoAaue5OgEGGzThf5eGBYqRVLg1TUtZFeEpXiinKV1amJfa7UZDU-CZZ4rJwqBmT5LkY2Fg0kmKdQ5B5cUcDcOadDdr4+0+p5eQYVBuSZKBuH+sFXWPPJbVKIMtDGDo7DxFtUAWNo1g2GkCrEvErCZOg7AggAJIItApJDFqMNojCDH0ShgH0ZxAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_smq.Rd b/man/tm_t_smq.Rd
index 843bb2d05..cd211d8ed 100644
--- a/man/tm_t_smq.Rd
+++ b/man/tm_t_smq.Rd
@@ -144,8 +144,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOzMpyKSssrq9zhXCAyMaHhRP3ooUQBrOFJRIoBzRjhUdgUwAD12XIBZAEUAHwBhLbkMACoAOUyNgBJllIGxdhzmuRTNbkFdAF47RydFXp1+rAxH5RMRUGJZvNFssVpstidcntrngdHdRA8mr8Xm9Pt9nH8GhIhiNxpNpuECDEiDJgaI4CJ1HB+Et-hlKdSCBCvq9GLQoPQRH52TT0Y8nClRIJ6HTSDovoDBsNRhMps8Ghk6QzyPw5QC0UrSVMGgT-kSQWCIRSqSKQfS4IzmeqdMLOdNuSw+QK4ELra6Mc0JVKZbqFbSLaI1aydJr7dqQ-rQURwaJcE7jLQKkzdfZnMalABfP4AK2pED8E1Y6KSNnC-DgxigwlIQv4tFBfhL8XLcErwDRiVCcgAuj00KgivFoiyMkldUlU-8+EIRG6dEvhPcnSU-M3RDAAI7TjLH6j8+m65aZfjaRh0nRObRkab0Vg6OF2fkiG5OmehO4XsAxW-KMMhYGA-B5XUXVpO0HSPY9j2g1ceU9QUkIHTxgGAS88nyZYhyHQNpUmKClkArANhuHRllyJwAA1ljkSMEIQmMHQAzIKOWH8dGYlian4HciE8ahdQAMUyfJaIXFidBJFVVySLDljNeSyXwwieMTZM51CZSwDNbSxA0mSWOoahZS+JDbS1Jl4JYpDdRQz9vXQpTsMAzETOjIMSKssjmmyJw9gAeWyRi+Nkti4y+S8nCC0LwrAHi-gQ1LeKUP5aGMHR2Hicg1A0bRrBsNJ-lEOIIFYTJ0HYMdLkEWgUnqulGBvP58yUMB8yHIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_summary.Rd b/man/tm_t_summary.Rd
index d9c1a080e..e0a427b8c 100644
--- a/man/tm_t_summary.Rd
+++ b/man/tm_t_summary.Rd
@@ -125,8 +125,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpQGIdABUZxULKBokOkTGOqQAFrrkoqQ6sqK6RoIJOgAGTgDyAMoAIgCaqTpQEPxpOQDCWVhOAIJZhZostFD0IqJhRDr8cHwQMczkOjC0oqK0EADmXQFQGEr8M-pGXNQA+gukUNbzi4Y6AO60EePsG1C4OiBKOjo1OVkAMkthMASrcAAeq1D8otTXt3uDwAJJlcnlgABGAC6zwAcjVVuNyBNVKslABfRQQABWRHGqwA1nBWKJTjMbHtusYoMJSKsCPwRm88QTiaTgNB4GSznJoa4IHdHs8zsBgAowEKHhLofyIEo0KhnuMjuwAWcdABeaabXAAvhCNpaoYCYRiNUQG43UgwVb00SCGAwFgcAFWnTUFpwajGiU5HpECbMVDhGR2FoiCV6y3unXFWC6bUSqVRt1Wli2xqMY0EcL4ghiVYJETqOD8dgENWSrAAWSjOmTtfKOQlcgujbrYDbaZuP34dqImx92vszmjsZ0DqdTQAXnBVln2trc-nC8W4KXyz2rZWJVknAANesSrA1couPANsAAIRrWAA0lgAEzHsBg-KvipVWpZV81ADiF7djGE67mA+5HpeJ5nkB27AROyRwAivpgLQNIQKwEpptiNzYtiaE6OwyKqFAFjaNYNhXDGoihhhNToOwirAoItAXExCSMNojDYhiShgBi0JAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_summary_by.Rd b/man/tm_t_summary_by.Rd
index de6b90271..91173fea1 100644
--- a/man/tm_t_summary_by.Rd
+++ b/man/tm_t_summary_by.Rd
@@ -156,8 +156,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOz8gCEikrLK6v5qeiUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urptaF0PvHnJbXu8lGhUEV4tF2A0kjoALw6JK4Bp8IQiUSwnTI4RiSEQDIZEp+NaiQQwGAsVh+egcBp4nTUKD0ODUdGPXIkslsHRUnRYIgRHQAcUYREEqDRtgZIkeiNxtPhoSOujhf0+0ppeJYMD8mhY6IIMVGBDEflETLg6jg-Bxcrx+sNYnROsYtElcHWBpk2OeKQIkKeWAAstKdH9AwBhbKPORyGU2jKmkQW-gs-1BsDqjIxjM6Gr8QlETzMuH2ZyxuVU7UsNFwu2e0Qms1J61x2tG6s6J0u+gid32mb-Zo+v0ABUyWEyaZSfwAagBJXKz2xRrOym0J83kZM1v2ZOcLpdgQY2ldr9ksWgALzdTvbreN66b2Yyd-bnddvbr7AHQ5nmReeBDMAwwACQFZcyzXRtNz1Hdpz-KNsxPOVBFNAA5TIU1oZYIFYNVVzxVAWFgDY9Q9NsG0TTdmxtF9HW4QQ3RfL9PinMBR3HAMI2DR52InKMILlB9oOVJ58gPRD1SPHRBkGLCdHYeJyDUDRtGsGw0llUQ4hwzJ0HYEEABJBFoFJDNNRhtEYQY+iUMA+jOIA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
diff --git a/man/tm_t_tte.Rd b/man/tm_t_tte.Rd
index 4bc35695b..508c01531 100644
--- a/man/tm_t_tte.Rd
+++ b/man/tm_t_tte.Rd
@@ -205,8 +205,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOzbWycikrLK6v5SciUAX0UIACsieL8AazhWUUTQm3D+OGMoYVI-An5aUTKRscnp4Gh4GaS5AF1XCByCoqTgYAUwa-zHs4urppbb0PvHnOaXGA3pcWDA-IwlusiDBUEU6KJSOwGpkAMK2TJYACyKOyOgAvDp4YiGhkIcZ8To-lidAAhR64Ek6YgwikEJFPamZemUjmYnQox6DDJyBkQDIYvkEolIsUZHRkimPGmIHQABWoUAIcHoRHpjOZsIJbL+KuyjEEAHMdAANbmPFEqlHQ+jxDyWCCChqDQZKNCw8LxaIyjJJClJUUZPhCESiClR4RiYNykp+NY9OBJuWEqD0ODURVgWy0eB2Ig6JzaMh2HMiPWyrNJI66Al-T6AiNZnSgvyaFismKjLWiPyiPNwdRwfiZzu9xi0GtwdYDmSJ54pY28u28nFb1HorE7sByEWMrNUzGPU86E-1uXdslQlkE++Qg0drOoFiwDb9wdiEdjhOU5XhkvbUIIi4EMuQ7sP8LQpI8qoYpk2LZFuSFYChgrvp2jwAPK5Jet7CjhGQIswng9n2RrQf+o4iEB05ZrO870CIS5-jMa5MuyuROLaeA8jSmJYAA0lgABMgo3p2cqPHxAlXjJnYaPAfioKMZCxjRnEAQx5BTmyACMAAcEkpBJAAsADMIo6KZEnKVmcCVmsizbFRjC-iuw70eOBlMXKLELhxPmwW2CFgE4ABqABytjZE4uQCkepFyVFcUJUlKVpRkxi0BUk4UvYzhKYyQrXkogy0OS7DxOQagaNo1g2GksqiHEECsJk6DsH6AAkgi0CkA2jow2iMIMfRKGAfRnEAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
From 2a447e4514ec88612875b492276dac042ffb15d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Thu, 5 Dec 2024 19:32:25 +0000
Subject: [PATCH 55/86] docs: minor typo gg -> ggplot2
---
R/tm_g_forest_rsp.R | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/R/tm_g_forest_rsp.R b/R/tm_g_forest_rsp.R
index fdd81c2ed..a7b59a28e 100644
--- a/R/tm_g_forest_rsp.R
+++ b/R/tm_g_forest_rsp.R
@@ -246,7 +246,7 @@ template_forest_rsp <- function(dataname = "ANL",
#' @section Decorating Module:
#'
#' This module generates the following objects, which can be modified in place using decorators:
-#' - `plot` (`gg`)
+#' - `plot` (`ggplot2`)
#'
#' For additional details and examples of decorators, refer to the vignette
#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
From 4829c00505e4dc2933d88484ce3368a2ee86d59c Mon Sep 17 00:00:00 2001
From: "27856297+dependabot-preview[bot]@users.noreply.github.com"
<27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Thu, 5 Dec 2024 22:34:39 +0000
Subject: [PATCH 56/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_g_forest_rsp.Rd | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/man/tm_g_forest_rsp.Rd b/man/tm_g_forest_rsp.Rd
index 9fe3cd162..1472b09f3 100644
--- a/man/tm_g_forest_rsp.Rd
+++ b/man/tm_g_forest_rsp.Rd
@@ -135,7 +135,7 @@ This module produces a grid-style forest plot for response data with ADaM struct
This module generates the following objects, which can be modified in place using decorators:
\itemize{
-\item \code{plot} (\code{gg})
+\item \code{plot} (\code{ggplot2})
}
For additional details and examples of decorators, refer to the vignette
From a6e730c80ad5738b92629d6e45861a192a56440f Mon Sep 17 00:00:00 2001
From: Marcin <133694481+m7pr@users.noreply.github.com>
Date: Mon, 9 Dec 2024 14:16:47 +0100
Subject: [PATCH 57/86] introduce decorators for `tm_g_pp_adverse_events`
(#1269)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Part of https://github.com/insightsengineering/teal/issues/1371
Working Example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
library(nestcolor)
library(dplyr)
data <- teal_data()
data <- within(data, {
ADAE <- tmc_ex_adae
ADSL <- tmc_ex_adsl %>%
filter(USUBJID %in% ADAE$USUBJID)
ADAE$ASTDY <- structure(
as.double(ADAE$ASTDY, unit = attr(ADAE$ASTDY, "units", exact = TRUE)),
label = attr(ADAE$ASTDY, "label", exact = TRUE)
)
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADAE <- data[["ADAE"]]
caption_decorator <- function(default_caption = "I am a good decorator", .var_to_replace = "plot") {
teal_transform_module(
label = "Caption",
ui = function(id) shiny::textInput(shiny::NS(id, "footnote"), "Footnote", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- .var_to_replace + ggplot2::labs(caption = footnote)
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
head_decorator <- function(default_value = 6, .var_to_replace = "object") {
teal_transform_module(
label = "Head",
ui = function(id) shiny::numericInput(shiny::NS(id, "n"), "N rows", value = default_value),
server = make_teal_transform_server(
substitute({
.var_to_replace <- utils::head(.var_to_replace, n = n)
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
app <- init(
data = data,
modules = modules(
tm_g_pp_adverse_events(
label = "Adverse Events",
dataname = "ADAE",
parentname = "ADSL",
patient_col = "USUBJID",
plot_height = c(600L, 200L, 2000L),
aeterm = choices_selected(
choices = variable_choices(ADAE, "AETERM"),
selected = "AETERM"
),
tox_grade = choices_selected(
choices = variable_choices(ADAE, "AETOXGR"),
selected = "AETOXGR"
),
causality = choices_selected(
choices = variable_choices(ADAE, "AEREL"),
selected = "AEREL"
),
outcome = choices_selected(
choices = variable_choices(ADAE, "AEOUT"),
selected = "AEOUT"
),
action = choices_selected(
choices = variable_choices(ADAE, "AEACN"),
selected = "AEACN"
),
time = choices_selected(
choices = variable_choices(ADAE, "ASTDY"),
selected = "ASTDY"
),
decod = NULL,
decorators = list(plot = caption_decorator('Marcin', 'plot'), table = head_decorator(2, 'table'))
)
)
) |> shiny::runApp()
```
---------
Signed-off-by: Marcin <133694481+m7pr@users.noreply.github.com>
Co-authored-by: André VerÃssimo <211358+averissimo@users.noreply.github.com>
---
R/tm_g_pp_adverse_events.R | 90 +++++++++++++++++++++++++++--------
man/tm_g_pp_adverse_events.Rd | 37 +++++++++++++-
2 files changed, 106 insertions(+), 21 deletions(-)
diff --git a/R/tm_g_pp_adverse_events.R b/R/tm_g_pp_adverse_events.R
index 95f1356da..38e69e67f 100644
--- a/R/tm_g_pp_adverse_events.R
+++ b/R/tm_g_pp_adverse_events.R
@@ -47,7 +47,7 @@ template_adverse_events <- function(dataname = "ANL",
list(),
substitute(
expr = {
- table <- dataname %>%
+ table_data <- dataname %>%
dplyr::select(
aeterm, tox_grade, causality, outcome, action, time, decod
) %>%
@@ -63,9 +63,7 @@ template_adverse_events <- function(dataname = "ANL",
key_cols = NULL,
default_formatting = list(all = fmt_config(align = "left"))
)
- main_title(table) <- paste("Patient ID:", patient_id)
-
- table
+ main_title(table_output) <- paste("Patient ID:", patient_id)
},
env = list(
dataname = as.name(dataname),
@@ -110,7 +108,7 @@ template_adverse_events <- function(dataname = "ANL",
chart_list <- add_expr(
list(),
substitute(
- expr = plot <- dataname %>%
+ expr = plot_output <- dataname %>%
dplyr::select(aeterm, time, tox_grade, causality) %>%
dplyr::mutate(ATOXGR = as.character(tox_grade)) %>%
dplyr::arrange(dplyr::desc(ATOXGR)) %>%
@@ -156,11 +154,6 @@ template_adverse_events <- function(dataname = "ANL",
)
)
- chart_list <- add_expr(
- expr_ls = chart_list,
- new_expr = quote(plot)
- )
-
y$table <- bracket_expr(table_list)
y$chart <- bracket_expr(chart_list)
@@ -187,9 +180,35 @@ template_adverse_events <- function(dataname = "ANL",
#' available choices and preselected option for the `ASTDY` variable from `dataname`.
#' @param decod ([teal.transform::choices_selected()])\cr object with all
#' available choices and preselected option for the `AEDECOD` variable from `dataname`.
+#' @param decorators `r roxygen_decorators_param("tm_g_pp_adverse_events")`
#'
#' @inherit module_arguments return
#'
+#' @section Decorating `tm_g_pp_adverse_events`:
+#'
+#' This module generates the following objects, which can be modified in place using decorators::
+#' - `plot` (`ggplot2`)
+#' - `table` (`listing_df` - output of `rlistings::as_listing`)
+#'
+#' Decorators can be applied to all outputs or only to specific objects using a
+#' named list of `teal_transform_module` objects.
+#' The `"default"` name is reserved for decorators that are applied to all outputs.
+#' See code snippet below:
+#'
+#' ```
+#' tm_g_pp_adverse_events(
+#' ..., # arguments for module
+#' decorators = list(
+#' default = list(teal_transform_module(...)), # applied to all outputs
+#' plot = list(teal_transform_module(...)), # applied only to `plot` output
+#' table = list(teal_transform_module(...)) # applied only to `table` output
+#' )
+#' )
+#' ```
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -268,7 +287,8 @@ tm_g_pp_adverse_events <- function(label,
plot_width = NULL,
pre_output = NULL,
post_output = NULL,
- ggplot2_args = teal.widgets::ggplot2_args()) {
+ ggplot2_args = teal.widgets::ggplot2_args(),
+ decorators = NULL) {
message("Initializing tm_g_pp_adverse_events")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -293,6 +313,8 @@ tm_g_pp_adverse_events <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(ggplot2_args, "ggplot2_args")
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, names = c("plot", "table"), null.ok = TRUE)
args <- as.list(environment())
data_extract_list <- list(
@@ -319,7 +341,8 @@ tm_g_pp_adverse_events <- function(label,
patient_col = patient_col,
plot_height = plot_height,
plot_width = plot_width,
- ggplot2_args = ggplot2_args
+ ggplot2_args = ggplot2_args,
+ decorators = decorators
)
),
datanames = c(dataname, parentname)
@@ -408,6 +431,8 @@ ui_g_adverse_events <- function(id, ...) {
is_single_dataset = is_single_dataset_value
)
),
+ ui_decorate_teal_data(ns("d_table"), decorators = select_decorators(ui_args$decorators, "table")),
+ ui_decorate_teal_data(ns("d_plot"), decorators = select_decorators(ui_args$decorators, "plot")),
teal.widgets::panel_item(
title = "Plot settings",
collapsed = TRUE,
@@ -445,7 +470,8 @@ srv_g_adverse_events <- function(id,
plot_height,
plot_width,
label,
- ggplot2_args) {
+ ggplot2_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -564,14 +590,29 @@ srv_g_adverse_events <- function(id,
paste("Patient ID:", all_q()[["pt_id"]], "
")
})
- output$table <- DT::renderDataTable(
- expr = teal.code::dev_suppress(all_q()[["table"]]),
- options = list(pageLength = input$table_rows)
+ # Allow for the table and plot qenv to be joined
+ table_q <- reactive(within(all_q(), table <- table_output))
+ plot_q <- reactive(within(all_q(), plot <- plot_output))
+
+ decorated_all_q_table <- srv_decorate_teal_data(
+ "d_table",
+ data = table_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
+ decorated_all_q_plot <- srv_decorate_teal_data(
+ "d_plot",
+ data = plot_q,
+ decorators = select_decorators(decorators, "plot"),
+ expr = print(plot)
)
+ table_r <- reactive(teal.code::dev_suppress(decorated_all_q_table()[["table"]]))
+
plot_r <- reactive({
req(iv_r()$is_valid())
- all_q()[["plot"]]
+ decorated_all_q_plot()[["plot"]]
})
pws <- teal.widgets::plot_with_settings_srv(
@@ -581,9 +622,18 @@ srv_g_adverse_events <- function(id,
width = plot_width
)
+ output$table <- DT::renderDataTable(
+ expr = table_r(),
+ options = list(pageLength = input$table_rows)
+ )
+
+ decorated_all_q <- reactive(
+ c(decorated_all_q_table(), decorated_all_q_plot())
+ )
+
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
title = label
)
@@ -597,14 +647,14 @@ srv_g_adverse_events <- function(id,
filter_panel_api = filter_panel_api
)
card$append_text("Table", "header3")
- card$append_table(teal.code::dev_suppress(all_q()[["table"]]))
+ card$append_table(teal.code::dev_suppress(table_r()))
card$append_text("Plot", "header3")
card$append_plot(plot_r(), dim = pws$dim())
if (!comment == "") {
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(teal.code::get_code(req(decorated_all_q())))
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_g_pp_adverse_events.Rd b/man/tm_g_pp_adverse_events.Rd
index a5e56dd54..8182768b0 100644
--- a/man/tm_g_pp_adverse_events.Rd
+++ b/man/tm_g_pp_adverse_events.Rd
@@ -21,7 +21,8 @@ tm_g_pp_adverse_events(
plot_width = NULL,
pre_output = NULL,
post_output = NULL,
- ggplot2_args = teal.widgets::ggplot2_args()
+ ggplot2_args = teal.widgets::ggplot2_args(),
+ decorators = NULL
)
}
\arguments{
@@ -72,6 +73,12 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
for the module plot. The argument is merged with option \code{teal.ggplot2_args} and with default module arguments
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating \code{tm_g_pp_adverse_events}" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -79,6 +86,34 @@ a \code{teal_module} object.
\description{
This module produces an adverse events table and \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type plot using ADaM datasets.
}
+\section{Decorating \code{tm_g_pp_adverse_events}}{
+
+
+This module generates the following objects, which can be modified in place using decorators::
+\itemize{
+\item \code{plot} (\code{ggplot2})
+\item \code{table} (\code{listing_df} - output of \code{rlistings::as_listing})
+}
+
+Decorators can be applied to all outputs or only to specific objects using a
+named list of \code{teal_transform_module} objects.
+The \code{"default"} name is reserved for decorators that are applied to all outputs.
+See code snippet below:
+
+\if{html}{\out{}}\preformatted{tm_g_pp_adverse_events(
+ ..., # arguments for module
+ decorators = list(
+ default = list(teal_transform_module(...)), # applied to all outputs
+ plot = list(teal_transform_module(...)), # applied only to `plot` output
+ table = list(teal_transform_module(...)) # applied only to `table` output
+ )
+)
+}\if{html}{\out{
}}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
library(nestcolor)
library(dplyr)
From a55de1f1ee0964cc7ca9c053f7369bdac23b805c Mon Sep 17 00:00:00 2001
From: "27856297+dependabot-preview[bot]@users.noreply.github.com"
<27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 9 Dec 2024 13:26:32 +0000
Subject: [PATCH 58/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_g_pp_adverse_events.Rd | 6 +-----
man/tm_g_pp_patient_timeline.Rd | 9 +--------
2 files changed, 2 insertions(+), 13 deletions(-)
diff --git a/man/tm_g_pp_adverse_events.Rd b/man/tm_g_pp_adverse_events.Rd
index 8182768b0..90625071f 100644
--- a/man/tm_g_pp_adverse_events.Rd
+++ b/man/tm_g_pp_adverse_events.Rd
@@ -74,11 +74,7 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
-
-Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-
-See section "Decorating \code{tm_g_pp_adverse_events}" below for more details.}
+\item{decorators}{\verb{r roxygen_decorators_param("tm_g_pp_adverse_events")}}
}
\value{
a \code{teal_module} object.
diff --git a/man/tm_g_pp_patient_timeline.Rd b/man/tm_g_pp_patient_timeline.Rd
index 45175ce25..41d9d4026 100644
--- a/man/tm_g_pp_patient_timeline.Rd
+++ b/man/tm_g_pp_patient_timeline.Rd
@@ -89,14 +89,7 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
-" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
-if not \code{NULL}, decorator for tables or plots included in the module.
-When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
-
-Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-
-See section "Decorating Module" below for more details.}
+\item{decorators}{\verb{r roxygen_decorators_param("tm_g_pp_adverse_events")}}
}
\value{
a \code{teal_module} object.
From bd975e5c07e6db594e7817af0d766e29df7a35de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Mon, 9 Dec 2024 14:20:33 +0000
Subject: [PATCH 59/86] Adds decorators to `tm_t_pp_medical_history` (#1289)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
rlisting_footer <- function(default_footer = "I am a good footer", .var_to_replace = "table_listing") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "footer"), "footer", value = default_footer),
server = make_teal_transform_server(
substitute({
rlistings::main_footer(.var_to_replace) <- footer
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADMH <- tmc_ex_admh
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADMH <- data[["ADMH"]]
app <- init(
data = data,
modules = modules(
tm_t_pp_medical_history(
label = "Medical History",
dataname = "ADMH",
parentname = "ADSL",
patient_col = "USUBJID",
mhterm = choices_selected(
choices = variable_choices(ADMH, c("MHTERM")),
selected = "MHTERM"
),
mhbodsys = choices_selected(
choices = variable_choices(ADMH, "MHBODSYS"),
selected = "MHBODSYS"
),
mhdistat = choices_selected(
choices = variable_choices(ADMH, "MHDISTAT"),
selected = "MHDISTAT"
),
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---------
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_t_pp_medical_history.R | 45 ++++++++++++++++++++++--------
man/tm_t_pp_medical_history.Rd | 50 ++++++++++++++++++++++++++++++++--
2 files changed, 81 insertions(+), 14 deletions(-)
diff --git a/R/tm_t_pp_medical_history.R b/R/tm_t_pp_medical_history.R
index b73235d39..881e77725 100644
--- a/R/tm_t_pp_medical_history.R
+++ b/R/tm_t_pp_medical_history.R
@@ -40,7 +40,7 @@ template_medical_history <- function(dataname = "ANL",
dplyr::distinct() %>%
`colnames<-`(labels)
- result <- rtables::basic_table() %>%
+ table <- rtables::basic_table() %>%
rtables::split_cols_by_multivar(colnames(result_raw)[2:3]) %>%
rtables::split_rows_by(
colnames(result_raw)[1],
@@ -54,9 +54,7 @@ template_medical_history <- function(dataname = "ANL",
rtables::analyze_colvars(function(x) x[seq_along(x)]) %>%
rtables::build_table(result_raw)
- main_title(result) <- paste("Patient ID:", patient_id)
-
- result
+ main_title(table) <- paste("Patient ID:", patient_id)
}, env = list(
dataname = as.name(dataname),
mhbodsys = as.name(mhbodsys),
@@ -88,6 +86,13 @@ template_medical_history <- function(dataname = "ANL",
#' available choices and preselected option for the `MHDISTAT` variable from `dataname`.
#'
#' @inherit module_arguments return
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
#'
#' @examplesShinylive
#' library(teal.modules.clinical)
@@ -141,7 +146,8 @@ tm_t_pp_medical_history <- function(label,
mhbodsys = NULL,
mhdistat = NULL,
pre_output = NULL,
- post_output = NULL) {
+ post_output = NULL,
+ decorators = NULL) {
message("Initializing tm_t_pp_medical_history")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -152,6 +158,8 @@ tm_t_pp_medical_history <- function(label,
checkmate::assert_class(mhdistat, "choices_selected", null.ok = TRUE)
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
data_extract_list <- list(
@@ -171,7 +179,8 @@ tm_t_pp_medical_history <- function(label,
dataname = dataname,
parentname = parentname,
label = label,
- patient_col = patient_col
+ patient_col = patient_col,
+ decorators = decorators
)
),
datanames = c(dataname, parentname)
@@ -221,7 +230,8 @@ ui_t_medical_history <- function(id, ...) {
label = "Select MHDISTAT variable:",
data_extract_spec = ui_args$mhdistat,
is_single_dataset = is_single_dataset_value
- )
+ ),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(ui_args$decorators, "table"))
),
forms = tagList(
teal.widgets::verbatim_popup_ui(ns("rcode"), button_label = "Show R code")
@@ -242,7 +252,8 @@ srv_t_medical_history <- function(id,
mhterm,
mhbodsys,
mhdistat,
- label) {
+ label,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -303,6 +314,7 @@ srv_t_medical_history <- function(id,
teal.code::eval_code(as.expression(anl_inputs()$expr))
})
+ # Generate r code for the analysis.
all_q <- reactive({
teal::validate_inputs(iv_r())
@@ -335,16 +347,27 @@ srv_t_medical_history <- function(id,
teal.code::eval_code(as.expression(unlist(my_calls)))
})
- table_r <- reactive(all_q()[["result"]])
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
+ # Outputs to render.
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
table_r = table_r
)
+ # Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -363,7 +386,7 @@ srv_t_medical_history <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_pp_medical_history.Rd b/man/tm_t_pp_medical_history.Rd
index 0de76f252..4b07402ec 100644
--- a/man/tm_t_pp_medical_history.Rd
+++ b/man/tm_t_pp_medical_history.Rd
@@ -13,7 +13,8 @@ tm_t_pp_medical_history(
mhbodsys = NULL,
mhdistat = NULL,
pre_output = NULL,
- post_output = NULL
+ post_output = NULL,
+ decorators = NULL
)
}
\arguments{
@@ -39,6 +40,15 @@ For example a title.}
\item{post_output}{(\code{shiny.tag}) optional,\cr with text placed after the output to put the output into context.
For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are useful.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -46,6 +56,40 @@ a \code{teal_module} object.
\description{
This module produces a patient profile medical history report using ADaM datasets.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table_listing} (\code{listing_df} - output of \code{rlistings::as_listing})
+\itemize{
+\item Only used in reporter
+}
+\item \code{table_dt} (\code{datatable} - output of \code{DT::datatable})
+\itemize{
+\item Not used in reporter
+}
+}
+
+Decorators can be applied to all outputs or only to specific objects using a
+named list of \code{teal_transform_module} objects.
+The \code{"default"} name is reserved for decorators that are applied to all outputs.
+See code snippet below:
+
+\if{html}{\out{}}\preformatted{tm_t_pp_laboratory(
+ ..., # arguments for module
+ decorators = list(
+ default = list(teal_transform_module(...)), # applied to all outputs
+ table_listing = list(teal_transform_module(...)), # applied only to `table_listing` output
+ table_dt = list(teal_transform_module(...)) # applied only to `table_dt` output
+ )
+)
+}\if{html}{\out{
}}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
@@ -89,8 +133,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyAWQAJIpKyyur+GBilAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdVwgcgqKk4GAFMBv8p-PL6+a2xdCHp5zWm8Pko0KgivFouwGkkdABeHRJXANPhCESiOE6FHCMRQiAZDIlPzrdB+eBbWT+OKiUhENi4-H46hQehwagYp5NODk7g6FrbGlsJ5IvEMhGhY66eH-L5ChoM1AsCikCXs555V54OX4hUaJUbIhsqVgBy5BwAIQAUgBJbKykUM3rkRgwDEEGJjAhiPyiVlwdRc+mijJuj1iDGaFi0ZkiDbumQ4gEtFIEKFgVq2JxYJpPORyYVBjI+kT+-iq9OZ7NgLUZPPVzExegCUQzV1xz2ib2+kuBoMh+Po+ERxhR+gxvvt9iJlIclpmgDyeQAmrkc-mC0W-eRS0bWvOlyuq-b8bWjxleltqR5W6GOxvu3Xg22w4PI9G4LGb5OvtO0y1slbclsTJbFXB8dDvLcyz-ACgJAw8gyGBlEJ0IYhloYwdHYeInSgCxtGsGw0hFUQ4ggVhMnQdhQQAEkEWgUhon1GG0Rghn6JQwH6c4gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
From 4d6de2de96011198303b6add7b3061bdb63781a7 Mon Sep 17 00:00:00 2001
From: "27856297+dependabot-preview[bot]@users.noreply.github.com"
<27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 9 Dec 2024 14:29:52 +0000
Subject: [PATCH 60/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_t_pp_medical_history.Rd | 28 +++-------------------------
1 file changed, 3 insertions(+), 25 deletions(-)
diff --git a/man/tm_t_pp_medical_history.Rd b/man/tm_t_pp_medical_history.Rd
index 4b07402ec..6e6dc2ce9 100644
--- a/man/tm_t_pp_medical_history.Rd
+++ b/man/tm_t_pp_medical_history.Rd
@@ -61,30 +61,8 @@ This module produces a patient profile medical history report using ADaM dataset
This module generates the following objects, which can be modified in place using decorators:
\itemize{
-\item \code{table_listing} (\code{listing_df} - output of \code{rlistings::as_listing})
-\itemize{
-\item Only used in reporter
-}
-\item \code{table_dt} (\code{datatable} - output of \code{DT::datatable})
-\itemize{
-\item Not used in reporter
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
}
-}
-
-Decorators can be applied to all outputs or only to specific objects using a
-named list of \code{teal_transform_module} objects.
-The \code{"default"} name is reserved for decorators that are applied to all outputs.
-See code snippet below:
-
-\if{html}{\out{}}\preformatted{tm_t_pp_laboratory(
- ..., # arguments for module
- decorators = list(
- default = list(teal_transform_module(...)), # applied to all outputs
- table_listing = list(teal_transform_module(...)), # applied only to `table_listing` output
- table_dt = list(teal_transform_module(...)) # applied only to `table_dt` output
- )
-)
-}\if{html}{\out{
}}
For additional details and examples of decorators, refer to the vignette
\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
@@ -133,8 +111,8 @@ if (interactive()) {
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpfyiko+o12oB9d09rNw8vQx0Ad1pSAAtaCHZAqFwdECUdHQBBABEAZQAZbx1SGAI-OAAPPyh+UWp0rOyAWQAJIpKyyur+GBilAF9FCAArIni-AGs4VlFE0Jtw-jhjKGFSPwJ+WlEy0fGpmeBoeFmkuQBdVwgcgqKk4GAFMBv8p-PL6+a2xdCHp5zWm8Pko0KgivFouwGkkdABeHRJXANPhCESiOE6FHCMRQiAZDIlPzrdB+eBbWT+OKiUhENi4-H46hQehwagYp5NODk7g6FrbGlsJ5IvEMhGhY66eH-L5ChoM1AsCikCXs555V54OX4hUaJUbIhsqVgBy5BwAIQAUgBJbKykUM3rkRgwDEEGJjAhiPyiVlwdRc+mijJuj1iDGaFi0ZkiDbumQ4gEtFIEKFgVq2JxYJpPORyYVBjI+kT+-iq9OZ7NgLUZPPVzExegCUQzV1xz2ib2+kuBoMh+Po+ERxhR+gxvvt9iJlIclpmgDyeQAmrkc-mC0W-eRS0bWvOlyuq-b8bWjxleltqR5W6GOxvu3Xg22w4PI9G4LGb5OvtO0y1slbclsTJbFXB8dDvLcyz-ACgJAw8gyGBlEJ0IYhloYwdHYeInSgCxtGsGw0hFUQ4ggVhMnQdhQQAEkEWgUhon1GG0Rghn6JQwH6c4gA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
From 59960ba0ea2e86bfa552ad8e4633c313651ffed6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 12:52:12 +0000
Subject: [PATCH 61/86] Adds decorators to `tm_t_logistic` (#1290)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
library(dplyr)
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADRS <- tmc_ex_adrs %>%
filter(PARAMCD %in% c("BESRSPI", "INVET"))
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADRS <- data[["ADRS"]]
arm_ref_comp <- list(
ACTARMCD = list(
ref = "ARM B",
comp = c("ARM A", "ARM C")
),
ARM = list(
ref = "B: Placebo",
comp = c("A: Drug X", "C: Combination")
)
)
init(
data = data,
modules = modules(
tm_t_logistic(
label = "Logistic Regression",
dataname = "ADRS",
arm_var = choices_selected(
choices = variable_choices(ADRS, c("ARM", "ARMCD")),
selected = "ARM"
),
arm_ref_comp = arm_ref_comp,
paramcd = choices_selected(
choices = value_choices(ADRS, "PARAMCD", "PARAM"),
selected = "BESRSPI"
),
cov_var = choices_selected(
choices = c("SEX", "AGE", "BMRKR1", "BMRKR2"),
selected = "SEX"
),
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---
R/tm_t_logistic.R | 42 +++++++++++++++++++++++++++++++++---------
man/tm_t_logistic.Rd | 28 +++++++++++++++++++++++++---
2 files changed, 58 insertions(+), 12 deletions(-)
diff --git a/R/tm_t_logistic.R b/R/tm_t_logistic.R
index b0101dd1b..40563a000 100644
--- a/R/tm_t_logistic.R
+++ b/R/tm_t_logistic.R
@@ -186,14 +186,13 @@ template_logistic <- function(dataname,
y$table <- substitute(
expr = {
- result <- expr_basic_table_args %>%
+ table <- expr_basic_table_args %>%
summarize_logistic(
conf_level = conf_level,
drop_and_remove_str = "_NA_"
) %>%
rtables::append_topleft(topleft) %>%
rtables::build_table(df = mod)
- result
},
env = list(
expr_basic_table_args = parsed_basic_table_args,
@@ -222,6 +221,14 @@ template_logistic <- function(dataname,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`ElementaryTable` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -297,7 +304,8 @@ tm_t_logistic <- function(label,
conf_level = teal.transform::choices_selected(c(0.95, 0.9, 0.8), 0.95, keep_order = TRUE),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
message("Initializing tm_t_logistic")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -311,6 +319,8 @@ tm_t_logistic <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(basic_table_args, "basic_table_args")
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
@@ -333,7 +343,8 @@ tm_t_logistic <- function(label,
label = label,
dataname = dataname,
parentname = parentname,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -424,7 +435,8 @@ ui_t_logistic <- function(id, ...) {
a$conf_level$selected,
multiple = FALSE,
fixed = a$conf_level$fixed
- )
+ ),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table"))
),
forms = tagList(
teal.widgets::verbatim_popup_ui(ns("rcode"), button_label = "Show R code")
@@ -447,7 +459,8 @@ srv_t_logistic <- function(id,
avalc_var,
cov_var,
label,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -659,6 +672,7 @@ srv_t_logistic <- function(id,
)
})
+ # Generate r code for the analysis.
all_q <- reactive({
validate_checks()
@@ -696,16 +710,26 @@ srv_t_logistic <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(calls))
})
- table_r <- reactive(all_q()[["result"]])
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
table_r = table_r
)
+ # Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -724,7 +748,7 @@ srv_t_logistic <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_logistic.Rd b/man/tm_t_logistic.Rd
index 41a8e2bad..8034558e5 100644
--- a/man/tm_t_logistic.Rd
+++ b/man/tm_t_logistic.Rd
@@ -19,7 +19,8 @@ tm_t_logistic(
TRUE),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -63,6 +64,15 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -71,6 +81,18 @@ a \code{teal_module} object.
This module produces a multi-variable logistic regression table consistent with the TLG Catalog template
\code{LGRT02} available \href{https://insightsengineering.github.io/tlg-catalog/stable/tables/efficacy/lgrt02.html}{here}.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{ElementaryTable} - output of \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
library(dplyr)
@@ -131,8 +153,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVYlXUNTa3t-IyiOgCkAHyTPSXGtNTkjOwACqVYpQCyAMLlU9mTOgTsCmAAQk6V-WsAkucF53cAcgBqTrbncgEAvgEAKyI2SiAGs4KxRLlEjZkvw4MYoMJSFECPxaKImkCQeDIcBoPAoXk5ABdVwQCo1Op5YDAc6U6rnElkil9AZwxK0+lspkspQsGBRRgI1FEGCoOp0USkM4QEqlXa2TZ7A4AXh0Upl8x0wuMOnV9Kw2x0F0e2uI4v1JzOYGVZUeOkNxt23x6clwPTt6s1spKJV1VvOF0QOjW1CgBDg9CIZrlfotEvVp3pIfKjEEAHMdAANB3nXYh3Zi+jZEKWQJgAIlAIBfnoOrZdK+nR5K15D1xvhCEQTdVd4RiZslBpRFHUIgZjEaZNxv0aqD0ODUQNgaoTqcyHRYOAZ4WiUTl2Nzkp5Am6A22nl4bUlAVRTQsK0EDLAyOiKKiJdwdRwfhD4-Pq+YhWg+jC0AuIioi+MiDhU-QFMmtpGnmSEqt87o3n6n4iD+-Arsq5yYRhs5+neuqipa6pkSKCYdseOioCwsBok+0Fvh+X64f+c6ATBvY6A+1CCHAUFAVCcGVE8YAbFsaF4I60mbDs3x0fROjYd+5B4ReVw3JU9yESR1aqTxRCaPej5JmxYgcThWncfG1n8YhlROLm8n0gA4i4HmXNsWAANJYAAjChFz+UFABMKmYSUGm4SurnuUR2pVjoNZKLQersNkKwRho2jWDYRRxqIWQQKwpToOwaCoAAJIItAFLVdWfow2j+EovxKGAvwkkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
From 3e98e8169365b51e024e9fdda01a4e1f8aa4eaf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 12:56:47 +0000
Subject: [PATCH 62/86] Adds decorators to `tm_t_summary` (#1293)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
# Preparation of the test case - use `EOSDY` and `DCSREAS` variables to demonstrate missing data.
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADSL$EOSDY[1] <- NA_integer_
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
app <- init(
data = data,
modules = modules(
tm_t_summary(
label = "Demographic Table",
dataname = "ADSL",
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
add_total = TRUE,
summarize_vars = choices_selected(
c("SEX", "RACE", "BMRKR2", "EOSDY", "DCSREAS", "AGE"),
c("SEX", "RACE")
),
useNA = "ifany",
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---------
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_t_summary.R | 45 ++++++++++++++++++++++++++++++++++-----------
man/tm_t_summary.Rd | 24 +++++++++++++++++++++++-
2 files changed, 57 insertions(+), 12 deletions(-)
diff --git a/R/tm_t_summary.R b/R/tm_t_summary.R
index 239558ada..c1f7b9f7d 100644
--- a/R/tm_t_summary.R
+++ b/R/tm_t_summary.R
@@ -199,8 +199,7 @@ template_summary <- function(dataname,
y$table <- substitute(
expr = {
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
},
env = list(parent = as.name(parentname))
)
@@ -223,6 +222,14 @@ template_summary <- function(dataname,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -281,7 +288,8 @@ tm_t_summary <- function(label,
drop_arm_levels = TRUE,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
message("Initializing tm_t_summary")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -297,6 +305,8 @@ tm_t_summary <- function(label,
checkmate::assert_flag(add_total)
checkmate::assert_flag(show_arm_var_labels)
checkmate::assert_string(total_label)
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
useNA <- match.arg(useNA) # nolint: object_name.
denominator <- match.arg(denominator)
@@ -323,7 +333,8 @@ tm_t_summary <- function(label,
show_arm_var_labels = show_arm_var_labels,
total_label = total_label,
na_level = na_level,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = c(dataname, parentname)
@@ -404,7 +415,8 @@ ui_summary <- function(id, ...) {
)
}
)
- )
+ ),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table"))
),
forms = tagList(
teal.widgets::verbatim_popup_ui(ns("rcode"), button_label = "Show R code")
@@ -429,7 +441,8 @@ srv_summary <- function(id,
na_level,
drop_arm_levels,
label,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -496,7 +509,7 @@ srv_summary <- function(id,
}
})
- # validate inputs
+ # Validate inputs.
validate_checks <- reactive({
teal::validate_inputs(iv_r())
adsl_filtered <- merged$anl_q()[[parentname]]
@@ -539,7 +552,7 @@ srv_summary <- function(id,
)
})
- # generate r code for the analysis
+ # Generate r code for the analysis.
all_q <- reactive({
validate_checks()
@@ -572,14 +585,24 @@ srv_summary <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(unlist(my_calls)))
})
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
# Outputs to render.
- table_r <- reactive(all_q()[["result"]])
+ table_r <- reactive(decorated_table_q()[["table"]])
+
teal.widgets::table_with_settings_srv(id = "table", table_r = table_r)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -598,7 +621,7 @@ srv_summary <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_summary.Rd b/man/tm_t_summary.Rd
index e0a427b8c..912584a41 100644
--- a/man/tm_t_summary.Rd
+++ b/man/tm_t_summary.Rd
@@ -22,7 +22,8 @@ tm_t_summary(
drop_arm_levels = TRUE,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -78,6 +79,15 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -85,6 +95,18 @@ a \code{teal_module} object.
\description{
This module produces a table to summarize variables.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
# Preparation of the test case - use `EOSDY` and `DCSREAS` variables to demonstrate missing data.
data <- teal_data()
From 015a9641edb1e0192b0b6388df54bb55b7cf4bf2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 13:00:52 +0000
Subject: [PATCH 63/86] Adds decorators to `tm_t_smq` (#1292)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADAE <- tmc_ex_adae
.names_baskets <- grep("^(SMQ|CQ).*NAM$", names(ADAE), value = TRUE)
.names_scopes <- grep("^SMQ.*SC$", names(ADAE), value = TRUE)
.cs_baskets <- choices_selected(
choices = variable_choices(ADAE, subset = .names_baskets),
selected = .names_baskets
)
.cs_scopes <- choices_selected(
choices = variable_choices(ADAE, subset = .names_scopes),
selected = .names_scopes,
fixed = TRUE
)
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
app <- init(
data = data,
modules = modules(
tm_t_smq(
label = "Adverse Events by SMQ Table",
dataname = "ADAE",
arm_var = choices_selected(
choices = variable_choices(data[["ADSL"]], subset = c("ARM", "SEX")),
selected = "ARM"
),
add_total = FALSE,
baskets = data[[".cs_baskets"]],
scopes = data[[".cs_scopes"]],
llt = choices_selected(
choices = variable_choices(data[["ADAE"]], subset = c("AEDECOD")),
selected = "AEDECOD"
),
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---------
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_t_smq.R | 40 +++++++++++++++++++++++++++++++---------
man/tm_t_smq.Rd | 24 +++++++++++++++++++++++-
2 files changed, 54 insertions(+), 10 deletions(-)
diff --git a/R/tm_t_smq.R b/R/tm_t_smq.R
index e1081cdec..b79251aca 100644
--- a/R/tm_t_smq.R
+++ b/R/tm_t_smq.R
@@ -290,8 +290,7 @@ template_smq <- function(dataname,
all_zero <- function(tr) {
!inherits(tr, "ContentRow") && rtables::all_zero_or_na(tr)
}
- pruned_and_sorted_result <- sorted_result %>% rtables::trim_rows(criteria = all_zero)
- pruned_and_sorted_result
+ table <- sorted_result %>% rtables::trim_rows(criteria = all_zero)
}
)
@@ -316,6 +315,14 @@ template_smq <- function(dataname,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -391,7 +398,8 @@ tm_t_smq <- function(label,
scopes,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
message("Initializing tm_t_smq")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -408,6 +416,8 @@ tm_t_smq <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(basic_table_args, "basic_table_args")
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
@@ -432,7 +442,8 @@ tm_t_smq <- function(label,
na_level = na_level,
label = label,
total_label = total_label,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -444,7 +455,6 @@ ui_t_smq <- function(id, ...) {
ns <- NS(id)
a <- list(...) # module args
-
is_single_dataset_value <- teal.transform::is_single_dataset(
a$arm_var,
a$id_var,
@@ -482,6 +492,7 @@ ui_t_smq <- function(id, ...) {
data_extract_spec = a$baskets,
is_single_dataset = is_single_dataset_value
),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table")),
teal.widgets::panel_group(
teal.widgets::panel_item(
"Additional Variables Info",
@@ -540,7 +551,8 @@ srv_t_smq <- function(id,
na_level,
label,
total_label,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -621,6 +633,7 @@ srv_t_smq <- function(id,
)
})
+ # Generate r code for the analysis.
all_q <- reactive({
validate_checks()
@@ -642,8 +655,16 @@ srv_t_smq <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(unlist(my_calls)))
})
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
# Outputs to render.
- table_r <- reactive(all_q()[["pruned_and_sorted_result"]])
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
@@ -651,9 +672,10 @@ srv_t_smq <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -672,7 +694,7 @@ srv_t_smq <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_smq.Rd b/man/tm_t_smq.Rd
index cd211d8ed..5169323c1 100644
--- a/man/tm_t_smq.Rd
+++ b/man/tm_t_smq.Rd
@@ -23,7 +23,8 @@ tm_t_smq(
scopes,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -82,6 +83,15 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -89,6 +99,18 @@ a \code{teal_module} object.
\description{
This module produces an adverse events table by Standardized MedDRA Query.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
From d29d166ca0b77b7f0e6871a08a56a2b3f830cfc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 13:04:13 +0000
Subject: [PATCH 64/86] Adds decorators to `tm_t_shift_by_grade` (#1285)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADLB <- tmc_ex_adlb
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADLB <- data[["ADLB"]]
init(
data = data,
modules = modules(
tm_t_shift_by_grade(
label = "Grade Laboratory Abnormality Table",
dataname = "ADLB",
arm_var = choices_selected(
choices = variable_choices(ADSL, subset = c("ARM", "ARMCD")),
selected = "ARM"
),
paramcd = choices_selected(
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = "ALT"
),
worst_flag_var = choices_selected(
choices = variable_choices(ADLB, subset = c("WGRLOVFL", "WGRLOFL", "WGRHIVFL", "WGRHIFL")),
selected = c("WGRLOVFL")
),
worst_flag_indicator = choices_selected(
value_choices(ADLB, "WGRLOVFL"),
selected = "Y", fixed = TRUE
),
anl_toxgrade_var = choices_selected(
choices = variable_choices(ADLB, subset = c("ATOXGR")),
selected = c("ATOXGR"),
fixed = TRUE
),
base_toxgrade_var = choices_selected(
choices = variable_choices(ADLB, subset = c("BTOXGR")),
selected = c("BTOXGR"),
fixed = TRUE
),
add_total = FALSE,
decorators = list(insert_rrow_decorator())
)
),
filter = teal_slices(teal_slice("ADSL", "SAFFL", selected = "Y"))
) |> shiny::runApp()
```
---------
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_t_shift_by_grade.R | 39 ++++++++++++++++++++++++++++++--------
man/tm_t_shift_by_grade.Rd | 24 ++++++++++++++++++++++-
2 files changed, 54 insertions(+), 9 deletions(-)
diff --git a/R/tm_t_shift_by_grade.R b/R/tm_t_shift_by_grade.R
index f45ec5372..97256f3f6 100644
--- a/R/tm_t_shift_by_grade.R
+++ b/R/tm_t_shift_by_grade.R
@@ -449,9 +449,8 @@ template_shift_by_grade <- function(parentname,
y$table <- substitute(
expr = {
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent) %>%
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent) %>%
rtables::prune_table()
- result
},
env = list(parent = as.name(parentname))
)
@@ -472,6 +471,14 @@ template_shift_by_grade <- function(parentname,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -572,7 +579,8 @@ tm_t_shift_by_grade <- function(label,
post_output = NULL,
na_level = default_na_str(),
code_missing_baseline = FALSE,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
message("Initializing tm_t_shift_by_grade")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -593,6 +601,8 @@ tm_t_shift_by_grade <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(basic_table_args, "basic_table_args")
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
@@ -619,7 +629,8 @@ tm_t_shift_by_grade <- function(label,
label = label,
total_label = total_label,
na_level = na_level,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -704,6 +715,7 @@ ui_t_shift_by_grade <- function(id, ...) {
)
)
),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table")),
teal.widgets::panel_group(
teal.widgets::panel_item(
"Additional Variables Info",
@@ -751,7 +763,8 @@ srv_t_shift_by_grade <- function(id,
drop_arm_levels,
na_level,
label,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -840,6 +853,7 @@ srv_t_shift_by_grade <- function(id,
)
})
+ # Generate r code for the analysis.
all_q <- reactive({
validate_checks()
@@ -865,8 +879,16 @@ srv_t_shift_by_grade <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(unlist(my_calls)))
})
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
# Outputs to render.
- table_r <- reactive(all_q()[["result"]])
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
@@ -874,9 +896,10 @@ srv_t_shift_by_grade <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -895,7 +918,7 @@ srv_t_shift_by_grade <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_shift_by_grade.Rd b/man/tm_t_shift_by_grade.Rd
index 0af0b42f4..059adb022 100644
--- a/man/tm_t_shift_by_grade.Rd
+++ b/man/tm_t_shift_by_grade.Rd
@@ -34,7 +34,8 @@ tm_t_shift_by_grade(
post_output = NULL,
na_level = default_na_str(),
code_missing_baseline = FALSE,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -97,6 +98,15 @@ default \code{na_level} to apply in all modules, run \code{set_default_na_str("n
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -104,6 +114,18 @@ a \code{teal_module} object.
\description{
This module produces a summary table of worst grades per subject by visit and parameter.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
From ab0c15c00b6dc8d722b41f29f28c221835917b7c Mon Sep 17 00:00:00 2001
From: "27856297+dependabot-preview[bot]@users.noreply.github.com"
<27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue, 10 Dec 2024 13:15:03 +0000
Subject: [PATCH 65/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_t_logistic.Rd | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/man/tm_t_logistic.Rd b/man/tm_t_logistic.Rd
index 8034558e5..a40e45660 100644
--- a/man/tm_t_logistic.Rd
+++ b/man/tm_t_logistic.Rd
@@ -153,8 +153,8 @@ apps implementing this module can be found.
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAGwEsAjAJykYE8AKcqajGIgEwCu1OAGcMBOhFoFuASgA60snGYFStAG5wABAB4AtDoBmgiOtol2cnQBUsAVQCiSpXSYsO-VNVaNFEEr8UKRQ+kZc1AD6waHWQSFhhjoA7rSkABa0EOyxULg6IEo6OgCCACIAygAy4TqkMARRcAAeUVD8otTFZeVYlXUNTa3t-IyiOgCkAHyTPSXGtNTkjOwACqVYpQCyAMLlU9mTOgTsCmAAQk6V-WsAkucF53cAcgBqTrbncgEAvgEAKyI2SiAGs4KxRLlEjZkvw4MYoMJSFECPxaKImkCQeDIcBoPAoXk5ABdVwQCo1Op5YDAc6U6rnElkil9AZwxK0+lspkspQsGBRRgI1FEGCoOp0USkM4QEqlXa2TZ7A4AXh0Upl8x0wuMOnV9Kw2x0F0e2uI4v1JzOYGVZUeOkNxt23x6clwPTt6s1spKJV1VvOF0QOjW1CgBDg9CIZrlfotEvVp3pIfKjEEAHMdAANB3nXYh3Zi+jZEKWQJgAIlAIBfnoOrZdK+nR5K15D1xvhCEQTdVd4RiZslBpRFHUIgZjEaZNxv0aqD0ODUQNgaoTqcyHRYOAZ4WiUTl2Nzkp5Am6A22nl4bUlAVRTQsK0EDLAyOiKKiJdwdRwfhD4-Pq+YhWg+jC0AuIioi+MiDhU-QFMmtpGnmSEqt87o3n6n4iD+-Arsq5yYRhs5+neuqipa6pkSKCYdseOioCwsBok+0Fvh+X64f+c6ATBvY6A+1CCHAUFAVCcGVE8YAbFsaF4I60mbDs3x0fROjYd+5B4ReVw3JU9yESR1aqTxRCaPej5JmxYgcThWncfG1n8YhlROLm8n0gA4i4HmXNsWAANJYAAjChFz+UFABMKmYSUGm4SurnuUR2pVjoNZKLQersNkKwRho2jWDYRRxqIWQQKwpToOwaCoAAJIItAFLVdWfow2j+EovxKGAvwkkAA}{Open in Shinylive}
- \if{html}{\out{}}
- \if{html}{\out{}}
+ \if{html}{\out{}}
+ \if{html}{\out{}}
}
}
}
From 8986e274dd69bd9bc2c418b5b3d4929a55bd412d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 16:41:26 +0000
Subject: [PATCH 66/86] Adds decorators to `tm_t_summary_by` (#1294)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADLB <- tmc_ex_adlb
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADLB <- data[["ADLB"]]
app <- init(
data = data,
modules = modules(
tm_t_summary_by(
label = "Summary by Row Groups Table",
dataname = "ADLB",
arm_var = choices_selected(
choices = variable_choices(ADSL, c("ARM", "ARMCD")),
selected = "ARM"
),
add_total = TRUE,
by_vars = choices_selected(
choices = variable_choices(ADLB, c("PARAM", "AVISIT")),
selected = c("AVISIT")
),
summarize_vars = choices_selected(
choices = variable_choices(ADLB, c("AVAL", "CHG")),
selected = c("AVAL")
),
useNA = "ifany",
paramcd = choices_selected(
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = "ALT"
),
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---------
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_t_summary_by.R | 44 +++++++++++++++++++++++++++++++-----------
man/tm_t_summary_by.Rd | 24 ++++++++++++++++++++++-
2 files changed, 56 insertions(+), 12 deletions(-)
diff --git a/R/tm_t_summary_by.R b/R/tm_t_summary_by.R
index e9163901b..49d1df798 100644
--- a/R/tm_t_summary_by.R
+++ b/R/tm_t_summary_by.R
@@ -285,20 +285,18 @@ template_summary_by <- function(parentname,
rvs <- unlist(unname(row_values(tr)))
isTRUE(all(rvs == 0))
}
- result <- rtables::build_table(
+ table <- rtables::build_table(
lyt = lyt,
df = anl,
alt_counts_df = parent
) %>% rtables::trim_rows(criteria = all_zero)
- result
},
env = list(parent = as.name(parentname))
)
} else {
y$table <- substitute(
expr = {
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
},
env = list(parent = as.name(parentname))
)
@@ -321,6 +319,14 @@ template_summary_by <- function(parentname,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -396,7 +402,8 @@ tm_t_summary_by <- function(label,
drop_zero_levels = TRUE,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
message("Initializing tm_t_summary_by")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -424,6 +431,9 @@ tm_t_summary_by <- function(label,
numeric_stats_choices <- c("n", "mean_sd", "mean_ci", "geom_mean", "median", "median_ci", "quantiles", "range")
numeric_stats <- match.arg(numeric_stats, numeric_stats_choices, several.ok = TRUE)
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
+
args <- c(as.list(environment()))
data_extract_list <- list(
@@ -451,7 +461,8 @@ tm_t_summary_by <- function(label,
label = label,
total_label = total_label,
na_level = na_level,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -558,6 +569,7 @@ ui_summary_by <- function(id, ...) {
}
)
),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table")),
teal.widgets::panel_group(
teal.widgets::panel_item(
"Additional Variables Info",
@@ -596,7 +608,8 @@ srv_summary_by <- function(id,
drop_arm_levels,
drop_zero_levels,
label,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -685,7 +698,7 @@ srv_summary_by <- function(id,
}
})
- # The R-code corresponding to the analysis.
+ # Generate r code for the analysis.
all_q <- reactive({
validate_checks()
summarize_vars <- as.vector(merged$anl_input_r()$columns_source$summarize_vars)
@@ -715,8 +728,16 @@ srv_summary_by <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(unlist(my_calls)))
})
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
# Outputs to render.
- table_r <- reactive(all_q()[["result"]])
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
@@ -724,9 +745,10 @@ srv_summary_by <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -745,7 +767,7 @@ srv_summary_by <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_summary_by.Rd b/man/tm_t_summary_by.Rd
index 91173fea1..44bf42ceb 100644
--- a/man/tm_t_summary_by.Rd
+++ b/man/tm_t_summary_by.Rd
@@ -28,7 +28,8 @@ tm_t_summary_by(
drop_zero_levels = TRUE,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -98,6 +99,15 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -105,6 +115,18 @@ a \code{teal_module} object.
\description{
This module produces a table to summarize variables by row groups.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
From 772c14bafd7d23e81c928cb349d3c43462f34813 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 16:47:02 +0000
Subject: [PATCH 67/86] Adds decorators to `tm_t_shift_by_arm` (#1287)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADEG <- tmc_ex_adeg
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADEG <- data[["ADEG"]]
init(
data = data,
modules = modules(
tm_t_shift_by_arm(
label = "Shift by Arm Table",
dataname = "ADEG",
arm_var = choices_selected(
variable_choices(ADSL, subset = c("ARM", "ARMCD")),
selected = "ARM"
),
paramcd = choices_selected(
value_choices(ADEG, "PARAMCD"),
selected = "HR"
),
visit_var = choices_selected(
value_choices(ADEG, "AVISIT"),
selected = "POST-BASELINE MINIMUM"
),
aval_var = choices_selected(
variable_choices(ADEG, subset = "ANRIND"),
selected = "ANRIND",
fixed = TRUE
),
baseline_var = choices_selected(
variable_choices(ADEG, subset = "BNRIND"),
selected = "BNRIND",
fixed = TRUE
),
useNA = "ifany",
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---
R/tm_t_shift_by_arm.R | 42 ++++++++++++++++++++++++++++++----------
man/tm_t_shift_by_arm.Rd | 24 ++++++++++++++++++++++-
2 files changed, 55 insertions(+), 11 deletions(-)
diff --git a/R/tm_t_shift_by_arm.R b/R/tm_t_shift_by_arm.R
index f3a2a03fb..678bb81d0 100644
--- a/R/tm_t_shift_by_arm.R
+++ b/R/tm_t_shift_by_arm.R
@@ -173,8 +173,7 @@ template_shift_by_arm <- function(dataname,
# Full table.
y$table <- substitute(
expr = {
- result <- rtables::build_table(lyt = lyt, df = dataname)
- result
+ table <- rtables::build_table(lyt = lyt, df = dataname)
},
env = list(dataname = as.name(dataname))
)
@@ -191,6 +190,14 @@ template_shift_by_arm <- function(dataname,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -268,7 +275,8 @@ tm_t_shift_by_arm <- function(label,
total_label = default_total_label(),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
if (lifecycle::is_present(base_var)) {
baseline_var <- base_var
warning(
@@ -297,6 +305,8 @@ tm_t_shift_by_arm <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(basic_table_args, "basic_table_args")
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
@@ -323,7 +333,8 @@ tm_t_shift_by_arm <- function(label,
total_label = total_label,
na_level = na_level,
treatment_flag = treatment_flag,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -393,6 +404,7 @@ ui_shift_by_arm <- function(id, ...) {
choices = c("ifany", "no"),
selected = a$useNA
),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table")),
teal.widgets::panel_group(
teal.widgets::panel_item(
"Additional Variables Info",
@@ -437,7 +449,8 @@ srv_shift_by_arm <- function(id,
na_level,
add_total,
total_label,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -509,7 +522,7 @@ srv_shift_by_arm <- function(id,
anl_q = anl_q
)
- # validate inputs
+ # Validate inputs.
validate_checks <- reactive({
teal::validate_inputs(iv_r())
@@ -540,7 +553,7 @@ srv_shift_by_arm <- function(id,
)
})
- # generate r code for the analysis
+ # Generate r code for the analysis.
all_q <- reactive({
validate_checks()
@@ -563,8 +576,16 @@ srv_shift_by_arm <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(unlist(my_calls)))
})
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
# Outputs to render.
- table_r <- reactive(all_q()[["result"]])
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
@@ -572,9 +593,10 @@ srv_shift_by_arm <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -593,7 +615,7 @@ srv_shift_by_arm <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_shift_by_arm.Rd b/man/tm_t_shift_by_arm.Rd
index 93d7ea80c..d3123be14 100644
--- a/man/tm_t_shift_by_arm.Rd
+++ b/man/tm_t_shift_by_arm.Rd
@@ -25,7 +25,8 @@ tm_t_shift_by_arm(
total_label = default_total_label(),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -82,6 +83,15 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -89,6 +99,18 @@ a \code{teal_module} object.
\description{
This module produces a summary table of analysis indicator levels by arm.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
From 582ceb39df6c604c0af83d7db0d46aaee4c15368 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 16:50:06 +0000
Subject: [PATCH 68/86] Adds decorators to `tm_t_shift_by_arm_by_worst` (#1286)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADEG <- tmc_ex_adeg
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADEG <- data[["ADEG"]]
init(
data = data,
modules = modules(
tm_t_shift_by_arm_by_worst(
label = "Shift by Arm Table",
dataname = "ADEG",
arm_var = choices_selected(
variable_choices(ADSL, subset = c("ARM", "ARMCD")),
selected = "ARM"
),
paramcd = choices_selected(
value_choices(ADEG, "PARAMCD"),
selected = "ECGINTP"
),
worst_flag_var = choices_selected(
variable_choices(ADEG, c("WORS02FL", "WORS01FL")),
selected = "WORS02FL"
),
worst_flag = choices_selected(
value_choices(ADEG, "WORS02FL"),
selected = "Y",
fixed = TRUE
),
aval_var = choices_selected(
variable_choices(ADEG, c("AVALC", "ANRIND")),
selected = "AVALC"
),
baseline_var = choices_selected(
variable_choices(ADEG, c("BASEC", "BNRIND")),
selected = "BASEC"
),
useNA = "ifany",
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---------
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_t_shift_by_arm_by_worst.R | 42 +++++++++++++++++++++++--------
man/tm_t_shift_by_arm_by_worst.Rd | 24 +++++++++++++++++-
2 files changed, 55 insertions(+), 11 deletions(-)
diff --git a/R/tm_t_shift_by_arm_by_worst.R b/R/tm_t_shift_by_arm_by_worst.R
index a1a813d29..005d86bd0 100644
--- a/R/tm_t_shift_by_arm_by_worst.R
+++ b/R/tm_t_shift_by_arm_by_worst.R
@@ -179,8 +179,7 @@ template_shift_by_arm_by_worst <- function(dataname,
# Full table.
y$table <- substitute(
expr = {
- result <- rtables::build_table(lyt = lyt, df = dataname)
- result
+ table <- rtables::build_table(lyt = lyt, df = dataname)
},
env = list(dataname = as.name(dataname))
)
@@ -197,6 +196,14 @@ template_shift_by_arm_by_worst <- function(dataname,
#'
#' @inherit module_arguments return
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` - output of `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -278,7 +285,8 @@ tm_t_shift_by_arm_by_worst <- function(label,
total_label = default_total_label(),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
if (lifecycle::is_present(base_var)) {
baseline_var <- base_var
warning(
@@ -307,8 +315,10 @@ tm_t_shift_by_arm_by_worst <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(basic_table_args, "basic_table_args")
- args <- as.list(environment())
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
+ args <- as.list(environment())
data_extract_list <- list(
arm_var = cs_to_des_select(arm_var, dataname = parentname),
@@ -334,7 +344,8 @@ tm_t_shift_by_arm_by_worst <- function(label,
treatment_flag = treatment_flag,
total_label = total_label,
na_level = na_level,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -412,6 +423,7 @@ ui_shift_by_arm_by_worst <- function(id, ...) {
choices = c("ifany", "no"),
selected = a$useNA
),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table")),
teal.widgets::panel_group(
teal.widgets::panel_item(
"Additional Variables Info",
@@ -456,7 +468,8 @@ srv_shift_by_arm_by_worst <- function(id,
na_level,
add_total,
total_label,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -572,7 +585,7 @@ srv_shift_by_arm_by_worst <- function(id,
)
})
- # generate r code for the analysis
+ # Generate r code for the analysis.
all_q <- reactive({
validate_checks()
@@ -597,8 +610,16 @@ srv_shift_by_arm_by_worst <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(unlist(my_calls)))
})
+ # Decoration of table output
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
# Outputs to render.
- table_r <- reactive(all_q()[["result"]])
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
@@ -606,9 +627,10 @@ srv_shift_by_arm_by_worst <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -627,7 +649,7 @@ srv_shift_by_arm_by_worst <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_shift_by_arm_by_worst.Rd b/man/tm_t_shift_by_arm_by_worst.Rd
index 4672fa128..6d7823f39 100644
--- a/man/tm_t_shift_by_arm_by_worst.Rd
+++ b/man/tm_t_shift_by_arm_by_worst.Rd
@@ -25,7 +25,8 @@ tm_t_shift_by_arm_by_worst(
total_label = default_total_label(),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -83,6 +84,15 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -90,6 +100,18 @@ a \code{teal_module} object.
\description{
This module produces a summary table of worst analysis indicator variable level per subject by arm.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} - output of \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
From 66e7b3615b266e4374c0eacd25888f76ee0e4dfa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 10 Dec 2024 18:56:23 +0000
Subject: [PATCH 69/86] feat: pass qenv.error to module when template code
fails
---
R/utils.R | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/R/utils.R b/R/utils.R
index 72657f370..d2af241ed 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -975,14 +975,19 @@ srv_decorate_teal_data <- function(id, data, decorators, expr, expr_is_reactive
decorated_output <- srv_transform_teal_data("inner", data = data, transformators = decorators)
reactive({
- # ensure original errors are displayed and `eval_code` is never executed with NULL
- req(data(), decorated_output())
- if (missing_expr) {
- decorated_output()
- } else if (expr_is_reactive) {
- teal.code::eval_code(decorated_output(), expr())
+ data_out <- try(data(), silent = TRUE)
+ if (inherits(data_out, "qenv.error")) {
+ data()
} else {
- teal.code::eval_code(decorated_output(), expr)
+ # ensure original errors are displayed and `eval_code` is never executed with NULL
+ req(data(), decorated_output())
+ if (missing_expr) {
+ decorated_output()
+ } else if (expr_is_reactive) {
+ teal.code::eval_code(decorated_output(), expr())
+ } else {
+ teal.code::eval_code(decorated_output(), expr)
+ }
}
})
})
From d1d8df8518e46ebd3901b8a9e0185bfb6287170b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Llu=C3=ADs=20Revilla?=
<185338939+llrs-roche@users.noreply.github.com>
Date: Wed, 11 Dec 2024 10:01:36 +0100
Subject: [PATCH 70/86] Introduce decorators for `tm_t_exposure` (#1279)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Part of https://github.com/insightsengineering/teal/issues/1371
Example with decorator
```r
devtools::load_all("../teal")
devtools::load_all("../tern")
devtools::load_all(".")
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
library(dplyr)
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADEX <- tmc_ex_adex
set.seed(1, kind = "Mersenne-Twister")
.labels <- col_labels(ADEX, fill = FALSE)
ADEX <- ADEX %>%
distinct(USUBJID, .keep_all = TRUE) %>%
mutate(
PARAMCD = "TDURD",
PARAM = "Overall duration (days)",
AVAL = sample(x = seq(1, 200), size = n(), replace = TRUE),
AVALU = "Days"
) %>%
bind_rows(ADEX)
col_labels(ADEX) <- .labels
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
app <- init(
data = data,
modules = modules(
tm_t_exposure(
label = "Duration of Exposure Table",
dataname = "ADEX",
paramcd = choices_selected(
choices = value_choices(data[["ADEX"]], "PARAMCD", "PARAM"),
selected = "TDURD"
),
col_by_var = choices_selected(
choices = variable_choices(data[["ADEX"]], subset = c("SEX", "ARM")),
selected = "SEX"
),
row_by_var = choices_selected(
choices = variable_choices(data[["ADEX"]], subset = c("RACE", "REGION1", "STRATA1", "SEX")),
selected = "RACE"
),
parcat = choices_selected(
choices = value_choices(data[["ADEX"]], "PARCAT2"),
selected = "Drug A"
),
add_total = FALSE,
decorators = list(insert_rrow_decorator())
)
),
filter = teal_slices(teal_slice("ADSL", "SAFFL", selected = "Y"))
)
shinyApp(app$ui, app$server)
```
Note: I placed the decorated right above some options to add additional
columns and rows.
Perhaps we need to review where to place it. I would group these three
options in a single panel
---------
Signed-off-by: LluÃs Revilla <185338939+llrs-roche@users.noreply.github.com>
Co-authored-by: André VerÃssimo <211358+averissimo@users.noreply.github.com>
---
R/tm_t_exposure.R | 42 ++++++++++++++++++++++++++++++++----------
man/tm_t_exposure.Rd | 21 ++++++++++++++++++++-
2 files changed, 52 insertions(+), 11 deletions(-)
diff --git a/R/tm_t_exposure.R b/R/tm_t_exposure.R
index c53521795..30c191dca 100644
--- a/R/tm_t_exposure.R
+++ b/R/tm_t_exposure.R
@@ -189,8 +189,7 @@ template_exposure <- function(parentname,
y$table <- substitute(
expr = {
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
},
env = list(parent = as.name(parentname))
)
@@ -198,8 +197,8 @@ template_exposure <- function(parentname,
if (drop_levels) {
y$table <- substitute(
expr = {
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
- rtables::prune_table(result)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = parent)
+ table <- rtables::prune_table(table)
},
env = list(parent = as.name(parentname))
)
@@ -224,9 +223,18 @@ template_exposure <- function(parentname,
#' parameter category values.
#' @param paramcd_label (`character`)\cr the column from the dataset where the value will be used to
#' label the argument `paramcd`.
+#' @param decorators `r roxygen_decorators_param("tm_t_exposure")`
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating `tm_t_exposure`:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` as created from `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -324,7 +332,8 @@ tm_t_exposure <- function(label,
na_level = default_na_str(),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
message("Initializing tm_t_exposure")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -344,6 +353,8 @@ tm_t_exposure <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(basic_table_args, "basic_table_args")
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, "table", null.ok = TRUE)
data_extract_list <- list(
paramcd = cs_to_des_filter(paramcd, dataname = dataname),
@@ -371,7 +382,8 @@ tm_t_exposure <- function(label,
total_row_label = total_row_label,
na_level = na_level,
basic_table_args = basic_table_args,
- paramcd_label = paramcd_label
+ paramcd_label = paramcd_label,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -430,6 +442,7 @@ ui_t_exposure <- function(id, ...) {
),
checkboxInput(ns("add_total_row"), "Add Total row", value = a$add_total_row),
checkboxInput(ns("add_total"), "Add All Patients column", value = a$add_total),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table")),
teal.widgets::panel_group(
teal.widgets::panel_item(
"Additional Variables Info",
@@ -481,7 +494,8 @@ srv_t_exposure <- function(id,
label,
total_label,
total_row_label,
- basic_table_args = basic_table_args) {
+ basic_table_args = basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -631,7 +645,14 @@ srv_t_exposure <- function(id,
})
# Outputs to render.
- table_r <- reactive(all_q()[["result"]])
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
+ table_r <- reactive(decorated_table_q()[["table"]])
teal.widgets::table_with_settings_srv(
id = "table",
@@ -639,9 +660,10 @@ srv_t_exposure <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -660,7 +682,7 @@ srv_t_exposure <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_exposure.Rd b/man/tm_t_exposure.Rd
index 7aec2d4a8..2fc9a6ec1 100644
--- a/man/tm_t_exposure.Rd
+++ b/man/tm_t_exposure.Rd
@@ -28,7 +28,8 @@ tm_t_exposure(
na_level = default_na_str(),
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -91,6 +92,12 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating \code{tm_t_exposure}" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -98,6 +105,18 @@ a \code{teal_module} object.
\description{
The module produces an exposure table for risk management plan.
}
+\section{Decorating \code{tm_t_exposure}}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} as created from \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
library(dplyr)
From c146b1112e4a8c97d2108e315d4de7493751db8e Mon Sep 17 00:00:00 2001
From: "27856297+dependabot-preview[bot]@users.noreply.github.com"
<27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 11 Dec 2024 09:08:44 +0000
Subject: [PATCH 71/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_t_exposure.Rd | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/man/tm_t_exposure.Rd b/man/tm_t_exposure.Rd
index 2fc9a6ec1..8505eddbe 100644
--- a/man/tm_t_exposure.Rd
+++ b/man/tm_t_exposure.Rd
@@ -93,11 +93,7 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
-
-Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-
-See section "Decorating \code{tm_t_exposure}" below for more details.}
+\item{decorators}{\verb{r roxygen_decorators_param("tm_t_exposure")}}
}
\value{
a \code{teal_module} object.
From 83d9fb0868cf0f300b2b551e03c222f3e18f1e97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Wed, 11 Dec 2024 12:09:37 +0000
Subject: [PATCH 72/86] Adds decorators to `tm_t_pp_laboratory` (#1291)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
rlisting_footer <- function(default_footer = "I am a good footer", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "footer"), "footer", value = default_footer),
server = make_teal_transform_server(
substitute({
rlistings::main_footer(.var_to_replace) <- footer
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
dt_decorator <- function(.color1 = "#f9f9f9", .color2 = "#f0f0f0", .var_to_replace = "table") {
teal_transform_module(
label = "Table color",
ui = function(id) {
selectInput(
NS(id, "style"),
"Table Style",
choices = c("Default", "Color1", "Color2"),
selected = "Default"
)
},
server = function(id, data) {
moduleServer(id, function(input, output, session) {
logger::log_info("🔵 Table row color called to action!", namespace = "teal.modules.general")
reactive({
req(data(), input$style)
logger::log_info("changing the Table row color '{input$style}'", namespace = "teal.modules.general")
teal.code::eval_code(data(), substitute({
.var_to_replace <- switch(
style,
"Color1" = DT::formatStyle(
.var_to_replace,
columns = attr(.var_to_replace$x, "colnames")[-1],
target = "row",
backgroundColor = .color1
),
"Color2" = DT::formatStyle(
.var_to_replace,
columns = attr(.var_to_replace$x, "colnames")[-1],
target = "row",
backgroundColor = .color2
),
.var_to_replace
)
}, env = list(
style = input$style,
.var_to_replace = as.name(.var_to_replace),
.color1 = .color1,
.color2 = .color2
)))
})
})
}
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADLB <- tmc_ex_adlb
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADLB <- data[["ADLB"]]
init(
data = data,
modules = modules(
tm_t_pp_laboratory(
label = "Vitals",
dataname = "ADLB",
patient_col = "USUBJID",
paramcd = choices_selected(
choices = variable_choices(ADLB, "PARAMCD"),
selected = "PARAMCD"
),
param = choices_selected(
choices = variable_choices(ADLB, "PARAM"),
selected = "PARAM"
),
timepoints = choices_selected(
choices = variable_choices(ADLB, "ADY"),
selected = "ADY"
),
anrind = choices_selected(
choices = variable_choices(ADLB, "ANRIND"),
selected = "ANRIND"
),
aval_var = choices_selected(
choices = variable_choices(ADLB, "AVAL"),
selected = "AVAL"
),
avalu_var = choices_selected(
choices = variable_choices(ADLB, "AVALU"),
selected = "AVALU"
),
decorators = list(
table_listing = rlisting_footer()
)
)
)
) |> shiny::runApp()
```
---
R/tm_t_pp_laboratory.R | 96 +++++++++++++++++++++++++--------------
man/tm_t_pp_laboratory.Rd | 24 +++++++++-
2 files changed, 84 insertions(+), 36 deletions(-)
diff --git a/R/tm_t_pp_laboratory.R b/R/tm_t_pp_laboratory.R
index 153d52a59..c0a268e8a 100644
--- a/R/tm_t_pp_laboratory.R
+++ b/R/tm_t_pp_laboratory.R
@@ -70,7 +70,7 @@ template_laboratory <- function(dataname = "ANL",
dplyr::mutate(aval_anrind = paste(aval_var, anrind)) %>%
dplyr::select(-c(aval_var, anrind))
- labor_table_raw <- labor_table_base %>%
+ result <- labor_table_base %>%
as.data.frame() %>%
stats::reshape(
direction = "wide",
@@ -78,18 +78,18 @@ template_laboratory <- function(dataname = "ANL",
v.names = "aval_anrind",
timevar = "INDEX"
)
- colnames(labor_table_raw)[-c(1:3)] <- unique(labor_table_base$INDEX)
+ colnames(result)[-c(1:3)] <- unique(labor_table_base$INDEX)
- labor_table_raw[[param_char]] <- clean_description(labor_table_raw[[param_char]])
+ result[[param_char]] <- clean_description(result[[param_char]])
- labor_table_raw <- rlistings::as_listing(
- labor_table_raw,
+ table <- rlistings::as_listing(
+ result,
key_cols = NULL,
default_formatting = list(all = fmt_config(align = "left"))
)
- main_title(labor_table_raw) <- paste("Patient ID:", patient_id)
+ main_title(table) <- paste("Patient ID:", patient_id)
- labor_table_html <- labor_table_base %>%
+ table_html <- labor_table_base %>%
dplyr::mutate(aval_anrind_col = color_lab_values(aval_anrind)) %>%
dplyr::select(-aval_anrind) %>%
as.data.frame() %>%
@@ -99,15 +99,21 @@ template_laboratory <- function(dataname = "ANL",
v.names = "aval_anrind_col",
timevar = "INDEX"
)
- colnames(labor_table_html)[-c(1:3)] <- unique(labor_table_base$INDEX)
- labor_table_html[[param_char]] <- clean_description(labor_table_html[[param_char]])
-
- labor_table_html_dt <- DT::datatable(labor_table_html, escape = FALSE)
- labor_table_html_dt$dependencies <- c(
- labor_table_html_dt$dependencies,
+ colnames(table_html)[-c(1:3)] <- unique(labor_table_base$INDEX)
+ table_html[[param_char]] <- clean_description(table_html[[param_char]])
+
+ table_dt <- DT::datatable(
+ table_html,
+ escape = FALSE,
+ options = list(
+ lengthMenu = list(list(-1, 5, 10, 25), list("All", "5", "10", "25")),
+ scrollX = TRUE
+ )
+ )
+ table_dt$dependencies <- c(
+ table_dt$dependencies,
list(rmarkdown::html_dependency_bootstrap("default"))
)
- labor_table_html_dt
},
env = list(
dataname = as.name(dataname),
@@ -147,6 +153,14 @@ template_laboratory <- function(dataname = "ANL",
#'
#' @inherit module_arguments return
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`listing_df` - output of `rlistings::as_listing`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -215,7 +229,8 @@ tm_t_pp_laboratory <- function(label,
paramcd = NULL,
anrind = NULL,
pre_output = NULL,
- post_output = NULL) {
+ post_output = NULL,
+ decorators = NULL) {
if (lifecycle::is_present(aval)) {
aval_var <- aval
warning(
@@ -251,6 +266,8 @@ tm_t_pp_laboratory <- function(label,
checkmate::assert_class(anrind, "choices_selected", null.ok = TRUE)
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
data_extract_list <- list(
@@ -273,7 +290,8 @@ tm_t_pp_laboratory <- function(label,
dataname = dataname,
parentname = parentname,
label = label,
- patient_col = patient_col
+ patient_col = patient_col,
+ decorators = decorators
)
),
datanames = c(dataname, parentname)
@@ -350,7 +368,8 @@ ui_g_laboratory <- function(id, ...) {
inputId = ns("round_value"),
label = "Select number of decimal places for rounding:",
choices = NULL
- )
+ ),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(ui_args$decorators, "table"))
),
forms = tagList(
teal.widgets::verbatim_popup_ui(ns("rcode"), button_label = "Show R code")
@@ -374,7 +393,8 @@ srv_g_laboratory <- function(id,
param,
paramcd,
anrind,
- label) {
+ label,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -458,6 +478,7 @@ srv_g_laboratory <- function(id,
teal.code::eval_code(as.expression(anl_inputs()$expr))
})
+ # Generate r code for the analysis.
all_q <- reactive({
teal::validate_inputs(iv_r())
@@ -488,30 +509,35 @@ srv_g_laboratory <- function(id,
teal.code::eval_code(as.expression(labor_calls))
})
- output$title <- renderText({
- paste("Patient ID:", all_q()[["pt_id"]], "
")
- })
+ # Decoration of raw table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+ # Outputs to render.
table_r <- reactive({
- q <- all_q()
+ q <- decorated_table_q()
list(
- html = q[["labor_table_html"]],
- raw = q[["labor_table_raw"]]
+ html = q[["table_dt"]],
+ listing = q[["table"]]
)
})
- output$lab_values_table <- DT::renderDataTable(
- expr = table_r()$html,
- escape = FALSE,
- options = list(
- lengthMenu = list(list(-1, 5, 10, 25), list("All", "5", "10", "25")),
- scrollX = TRUE
- )
- )
+ output$title <- renderText({
+ req(decorated_table_q())
+ paste("Patient ID:", decorated_table_q()[["pt_id"]], "
")
+ })
+
+ output$lab_values_table <- DT::renderDataTable(expr = table_r()$html)
+ # Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -525,12 +551,12 @@ srv_g_laboratory <- function(id,
filter_panel_api = filter_panel_api
)
card$append_text("Table", "header3")
- card$append_table(table_r()$raw)
+ card$append_table(table_r()$listing)
if (!comment == "") {
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_pp_laboratory.Rd b/man/tm_t_pp_laboratory.Rd
index f4d00026c..c2d32a50f 100644
--- a/man/tm_t_pp_laboratory.Rd
+++ b/man/tm_t_pp_laboratory.Rd
@@ -18,7 +18,8 @@ tm_t_pp_laboratory(
paramcd = NULL,
anrind = NULL,
pre_output = NULL,
- post_output = NULL
+ post_output = NULL,
+ decorators = NULL
)
}
\arguments{
@@ -58,6 +59,15 @@ For example a title.}
\item{post_output}{(\code{shiny.tag}) optional,\cr with text placed after the output to put the output into context.
For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are useful.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -65,6 +75,18 @@ a \code{teal_module} object.
\description{
This module produces a patient profile laboratory table using ADaM datasets.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{listing_df} - output of \code{rlistings::as_listing})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
From 95f11f328b351cd2a8f31d3a8893bc1d5f4787f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Wed, 11 Dec 2024 14:39:34 +0000
Subject: [PATCH 73/86] Adds decorators to `tm_t_pp_basic_info` (#1282)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
# Load packages
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rlisting_footer_decorator <- function(default_caption = "I am a good new footer", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_footer"), "New footer", value = default_caption),
server = make_teal_transform_server(
substitute({
rlistings::main_footer(.var_to_replace) <- new_footer
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
init(
data = data,
modules = modules(
tm_t_pp_basic_info(
label = "Basic Info",
dataname = "ADSL",
patient_col = "USUBJID",
vars = choices_selected(choices = variable_choices(ADSL), selected = c("ARM", "AGE", "SEX", "COUNTRY", "RACE", "EOSSTT")),
decorators = list(
table = insert_rlisting_footer_decorator(.var_to_replace = "table")
)
)
)
) |> shiny::runApp()
```
---
R/tm_t_pp_basic_info.R | 44 ++++++++++++++++++++++++++++-----------
man/tm_t_pp_basic_info.Rd | 24 ++++++++++++++++++++-
2 files changed, 55 insertions(+), 13 deletions(-)
diff --git a/R/tm_t_pp_basic_info.R b/R/tm_t_pp_basic_info.R
index 7f61d4148..7a6f2bcfa 100644
--- a/R/tm_t_pp_basic_info.R
+++ b/R/tm_t_pp_basic_info.R
@@ -36,13 +36,11 @@ template_basic_info <- function(dataname = "ANL",
dplyr::select(var, key, value) %>%
dplyr::rename(` ` = var, ` ` = key, ` ` = value)
- result <- rlistings::as_listing(
+ table <- rlistings::as_listing(
result,
default_formatting = list(all = fmt_config(align = "left"))
)
- main_title(result) <- paste("Patient ID:", patient_id)
-
- result
+ main_title(table) <- paste("Patient ID:", patient_id)
}, env = list(
dataname = as.name(dataname),
vars = vars,
@@ -66,6 +64,14 @@ template_basic_info <- function(dataname = "ANL",
#'
#' @inherit module_arguments return
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`listing_df` - output of `rlistings::as_listing`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -104,7 +110,8 @@ tm_t_pp_basic_info <- function(label,
patient_col = "USUBJID",
vars = NULL,
pre_output = NULL,
- post_output = NULL) {
+ post_output = NULL,
+ decorators = NULL) {
message("Initializing tm_t_pp_basic_info")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -112,6 +119,8 @@ tm_t_pp_basic_info <- function(label,
checkmate::assert_class(vars, "choices_selected", null.ok = TRUE)
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
data_extract_list <- list(
@@ -128,7 +137,8 @@ tm_t_pp_basic_info <- function(label,
list(
dataname = dataname,
label = label,
- patient_col = patient_col
+ patient_col = patient_col,
+ decorators = decorators
)
),
datanames = dataname
@@ -163,7 +173,8 @@ ui_t_basic_info <- function(id, ...) {
label = "Select variable:",
data_extract_spec = ui_args$vars,
is_single_dataset = is_single_dataset_value
- )
+ ),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(ui_args$decorators, "table")),
),
forms = tagList(
teal.widgets::verbatim_popup_ui(ns("rcode"), button_label = "Show R code")
@@ -181,7 +192,8 @@ srv_t_basic_info <- function(id,
dataname,
patient_col,
vars,
- label) {
+ label,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -265,11 +277,18 @@ srv_t_basic_info <- function(id,
teal.code::eval_code(as.expression(unlist(my_calls)))
})
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
+
output$title <- renderText({
paste("Patient ID:", all_q()[["pt_id"]], "
")
})
- table_r <- reactive(all_q()[["result"]])
+ table_r <- reactive(decorated_table_q()[["table"]])
output$basic_info_table <- DT::renderDataTable(
expr = table_r(),
@@ -278,9 +297,10 @@ srv_t_basic_info <- function(id,
)
)
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -294,12 +314,12 @@ srv_t_basic_info <- function(id,
filter_panel_api = filter_panel_api
)
card$append_text("Table", "header3")
- card$append_table(table_r())
+ card$append_table(decorated_table_q()[["table"]])
if (!comment == "") {
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_pp_basic_info.Rd b/man/tm_t_pp_basic_info.Rd
index 9138d5e51..817a27fdd 100644
--- a/man/tm_t_pp_basic_info.Rd
+++ b/man/tm_t_pp_basic_info.Rd
@@ -10,7 +10,8 @@ tm_t_pp_basic_info(
patient_col = "USUBJID",
vars = NULL,
pre_output = NULL,
- post_output = NULL
+ post_output = NULL,
+ decorators = NULL
)
}
\arguments{
@@ -28,6 +29,15 @@ For example a title.}
\item{post_output}{(\code{shiny.tag}) optional,\cr with text placed after the output to put the output into context.
For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are useful.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -35,6 +45,18 @@ a \code{teal_module} object.
\description{
This module produces a patient profile basic info report using ADaM datasets.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{listing_df} - output of \code{rlistings::as_listing})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
data <- teal_data()
data <- within(data, {
From b85523cccc8a735f0589124a41e2bf589c7bee6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Wed, 11 Dec 2024 14:40:08 +0000
Subject: [PATCH 74/86] Adds decorators to `tm_t_pp_prior_medication` (#1288)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
# Load packages
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
rlisting_footer <- function(default_footer = "I am a good footer", .var_to_replace = "table_listing") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "footer"), "footer", value = default_footer),
server = make_teal_transform_server(
substitute({
rlistings::main_footer(.var_to_replace) <- footer
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
library(dplyr)
data <- teal_data()
data <- within(data, {
ADCM <- tmc_ex_adcm
ADSL <- tmc_ex_adsl %>% filter(USUBJID %in% ADCM$USUBJID)
ADCM$CMASTDTM <- ADCM$ASTDTM
ADCM$CMAENDTM <- ADCM$AENDTM
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", "ATC4")
join_keys(data)["ADCM", "ADCM"] <- adcm_keys
ADSL <- data[["ADSL"]]
ADCM <- data[["ADCM"]]
init(
data = data,
modules = modules(
tm_t_pp_prior_medication(
label = "Prior Medication",
dataname = "ADCM",
parentname = "ADSL",
patient_col = "USUBJID",
atirel = choices_selected(
choices = variable_choices(ADCM, "ATIREL"),
selected = "ATIREL"
),
cmdecod = choices_selected(
choices = variable_choices(ADCM, "CMDECOD"),
selected = "CMDECOD"
),
cmindc = choices_selected(
choices = variable_choices(ADCM, "CMINDC"),
selected = "CMINDC"
),
cmstdy = choices_selected(
choices = variable_choices(ADCM, "ASTDY"),
selected = "ASTDY"
),
decorators = list(
table = rlisting_footer(.var_to_replace = "table")
)
)
)
) |> shiny::runApp()
```
---
R/tm_t_pp_prior_medication.R | 67 ++++++++++++++++++++++++++-------
man/tm_t_pp_prior_medication.Rd | 24 +++++++++++-
2 files changed, 76 insertions(+), 15 deletions(-)
diff --git a/R/tm_t_pp_prior_medication.R b/R/tm_t_pp_prior_medication.R
index 605664e18..dfd75dc7f 100644
--- a/R/tm_t_pp_prior_medication.R
+++ b/R/tm_t_pp_prior_medication.R
@@ -33,7 +33,14 @@ template_prior_medication <- function(dataname = "ANL",
dplyr::filter(!is.na(cmdecod)) %>%
dplyr::distinct() %>%
`colnames<-`(col_labels(dataname, fill = TRUE)[c(cmindc_char, cmdecod_char, cmstdy_char)])
- result
+
+ table <- result %>%
+ dplyr::mutate( # Exception for columns of type difftime that is not supported by as_listing
+ dplyr::across(
+ dplyr::where(~ inherits(., what = "difftime")), ~ as.double(., units = "auto")
+ )
+ ) %>%
+ rlistings::as_listing()
}, env = list(
dataname = as.name(dataname),
atirel = as.name(atirel),
@@ -61,6 +68,14 @@ template_prior_medication <- function(dataname = "ANL",
#'
#' @inherit module_arguments return
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`listing_df` - output of `rlistings::as_listing`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -123,7 +138,8 @@ tm_t_pp_prior_medication <- function(label,
cmindc = NULL,
cmstdy = NULL,
pre_output = NULL,
- post_output = NULL) {
+ post_output = NULL,
+ decorators = NULL) {
message("Initializing tm_t_pp_prior_medication")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -135,6 +151,8 @@ tm_t_pp_prior_medication <- function(label,
checkmate::assert_class(cmstdy, "choices_selected", null.ok = TRUE)
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, null.ok = TRUE, "table")
args <- as.list(environment())
data_extract_list <- list(
@@ -155,7 +173,8 @@ tm_t_pp_prior_medication <- function(label,
dataname = dataname,
parentname = parentname,
label = label,
- patient_col = patient_col
+ patient_col = patient_col,
+ decorators = decorators
)
),
datanames = c(dataname, parentname)
@@ -212,7 +231,8 @@ ui_t_prior_medication <- function(id, ...) {
label = "Select CMSTDY variable:",
data_extract_spec = ui_args$cmstdy,
is_single_dataset = is_single_dataset_value
- )
+ ),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(ui_args$decorators, "table")),
),
forms = tagList(
teal.widgets::verbatim_popup_ui(ns("rcode"), button_label = "Show R code")
@@ -234,7 +254,8 @@ srv_t_prior_medication <- function(id,
cmdecod,
cmindc,
cmstdy,
- label) {
+ label,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -303,6 +324,7 @@ srv_t_prior_medication <- function(id,
teal.code::eval_code(as.expression(anl_inputs()$expr))
})
+ # Generate r code for the analysis.
all_q <- reactive({
teal::validate_inputs(iv_r())
@@ -328,18 +350,35 @@ srv_t_prior_medication <- function(id,
teal.code::eval_code(as.expression(unlist(my_calls)))
})
- table_r <- reactive(all_q()[["result"]])
+ # Decoration of table output.
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = all_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
- output$prior_medication_table <- DT::renderDataTable(
- expr = table_r(),
- options = list(
- lengthMenu = list(list(-1, 5, 10, 25), list("All", "5", "10", "25"))
+ # Outputs to render.
+ table_r <- reactive({
+ q <- decorated_table_q()
+ list(
+ html = DT::datatable(
+ q[["result"]],
+ options = list(
+ lengthMenu = list(list(-1, 5, 10, 25), list("All", "5", "10", "25"))
+ )
+ ),
+ listing = q[["table"]]
)
- )
+ })
+
+ output$prior_medication_table <- DT::renderDataTable(expr = table_r()$html)
+ # Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
title = label
)
@@ -352,12 +391,12 @@ srv_t_prior_medication <- function(id,
filter_panel_api = filter_panel_api
)
card$append_text("Table", "header3")
- card$append_table(table_r())
+ card$append_table(table_r()$listing)
if (!comment == "") {
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_pp_prior_medication.Rd b/man/tm_t_pp_prior_medication.Rd
index 2992351ab..0dff80898 100644
--- a/man/tm_t_pp_prior_medication.Rd
+++ b/man/tm_t_pp_prior_medication.Rd
@@ -14,7 +14,8 @@ tm_t_pp_prior_medication(
cmindc = NULL,
cmstdy = NULL,
pre_output = NULL,
- post_output = NULL
+ post_output = NULL,
+ decorators = NULL
)
}
\arguments{
@@ -43,6 +44,15 @@ For example a title.}
\item{post_output}{(\code{shiny.tag}) optional,\cr with text placed after the output to put the output into context.
For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are useful.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -50,6 +60,18 @@ a \code{teal_module} object.
\description{
This module produces a patient profile prior medication report using ADaM datasets.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{listing_df} - output of \code{rlistings::as_listing})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
library(dplyr)
data <- teal_data()
From eb42bae901729c4b76961ba94bd22286f9a9dad1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Llu=C3=ADs=20Revilla?=
<185338939+llrs-roche@users.noreply.github.com>
Date: Wed, 11 Dec 2024 15:57:31 +0100
Subject: [PATCH 75/86] Introduce decorators for `tm_t events by grade` (#1276)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Part of https://github.com/insightsengineering/teal/issues/1371
Example with decorators
```r
load_all("../teal")
load_all(".")
library(dplyr)
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
.lbls_adae <- col_labels(tmc_ex_adae)
ADAE <- tmc_ex_adae %>%
mutate_if(is.character, as.factor) #' be certain of having factors
col_labels(ADAE) <- .lbls_adae
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADAE <- data[["ADAE"]]
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
app <- init(
data = data,
modules = modules(
tm_t_events_by_grade(
label = "Adverse Events by Grade Table",
dataname = "ADAE",
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
llt = choices_selected(
choices = variable_choices(ADAE, c("AETERM", "AEDECOD")),
selected = c("AEDECOD")
),
hlt = choices_selected(
choices = variable_choices(ADAE, c("AEBODSYS", "AESOC")),
selected = "AEBODSYS"
),
grade = choices_selected(
choices = variable_choices(ADAE, c("AETOXGR", "AESEV")),
selected = "AETOXGR"
),
decorators = list(insert_rrow_decorator())
)
)
)
shinyApp(app$ui, app$server)
```
---------
Signed-off-by: LluÃs Revilla <185338939+llrs-roche@users.noreply.github.com>
Co-authored-by: André VerÃssimo <211358+averissimo@users.noreply.github.com>
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_t_events_by_grade.R | 48 ++++++++++++++++++++++++-------------
man/tm_t_events_by_grade.Rd | 21 +++++++++++++++-
2 files changed, 51 insertions(+), 18 deletions(-)
diff --git a/R/tm_t_events_by_grade.R b/R/tm_t_events_by_grade.R
index f0b01a543..b6e28ab6d 100644
--- a/R/tm_t_events_by_grade.R
+++ b/R/tm_t_events_by_grade.R
@@ -332,7 +332,6 @@ template_events_by_grade <- function(dataname,
expr = {
pruned_and_sorted_result <- pruned_result %>%
sort_at_path(path = term_var, scorefun = scorefun, decreasing = TRUE)
- pruned_and_sorted_result
},
env = list(
term_var = term_var,
@@ -356,11 +355,6 @@ template_events_by_grade <- function(dataname,
)
)
)
-
- sort_list <- add_expr(
- sort_list,
- quote(pruned_and_sorted_result)
- )
}
y$sort <- bracket_expr(sort_list)
@@ -769,11 +763,6 @@ template_events_col_by_grade <- function(dataname,
prune_list,
prune_pipe
)
- prune_list <- add_expr(
- prune_list,
- quote(pruned_and_sorted_result)
- )
-
y$prune <- bracket_expr(prune_list)
y
@@ -791,6 +780,14 @@ template_events_col_by_grade <- function(dataname,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `table` (`TableTree` as created from `rtables::build_table`)
+#'
+#' For additional details and examples of decorators, refer to the vignette
+#' `vignette("decorate-modules-output", package = "teal")` or the [`teal_transform_module()`] documentation.
+#'
#' @export
#'
#' @examplesShinylive
@@ -865,7 +862,8 @@ tm_t_events_by_grade <- function(label,
drop_arm_levels = TRUE,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()) {
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL) {
message("Initializing tm_t_events_by_grade")
checkmate::assert_string(label)
checkmate::assert_string(dataname)
@@ -883,6 +881,8 @@ tm_t_events_by_grade <- function(label,
checkmate::assert_class(pre_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(post_output, classes = "shiny.tag", null.ok = TRUE)
checkmate::assert_class(basic_table_args, "basic_table_args")
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(decorators, "table", null.ok = TRUE)
args <- as.list(environment())
@@ -907,7 +907,8 @@ tm_t_events_by_grade <- function(label,
total_label = total_label,
grading_groups = grading_groups,
na_level = na_level,
- basic_table_args = basic_table_args
+ basic_table_args = basic_table_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -962,6 +963,7 @@ ui_t_events_by_grade <- function(id, ...) {
"Display grade groupings in nested columns",
value = a$col_by_grade
),
+ ui_decorate_teal_data(ns("decorator"), decorators = select_decorators(a$decorators, "table")),
teal.widgets::panel_group(
teal.widgets::panel_item(
"Additional table settings",
@@ -1017,7 +1019,8 @@ srv_t_events_by_grade <- function(id,
drop_arm_levels,
total_label,
na_level,
- basic_table_args) {
+ basic_table_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -1202,9 +1205,20 @@ srv_t_events_by_grade <- function(id,
teal.code::eval_code(merged$anl_q(), as.expression(unlist(my_calls)))
})
+
+ table_renamed_q <- reactive({
+ within(table_q(), {table <- pruned_and_sorted_result})
+ })
+
+ decorated_table_q <- srv_decorate_teal_data(
+ id = "decorator",
+ data = table_renamed_q,
+ decorators = select_decorators(decorators, "table"),
+ expr = table
+ )
# Outputs to render.
table_r <- reactive({
- table_q()[["pruned_and_sorted_result"]]
+ decorated_table_q()[["table"]]
})
teal.widgets::table_with_settings_srv(
@@ -1215,7 +1229,7 @@ srv_t_events_by_grade <- function(id,
# Render R code.
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(table_q())),
+ verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
title = label
)
@@ -1234,7 +1248,7 @@ srv_t_events_by_grade <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(table_q()))
+ card$append_src(teal.code::get_code(req(decorated_table_q())))
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_t_events_by_grade.Rd b/man/tm_t_events_by_grade.Rd
index 158dcdced..e2ff4a1bd 100644
--- a/man/tm_t_events_by_grade.Rd
+++ b/man/tm_t_events_by_grade.Rd
@@ -24,7 +24,8 @@ tm_t_events_by_grade(
drop_arm_levels = TRUE,
pre_output = NULL,
post_output = NULL,
- basic_table_args = teal.widgets::basic_table_args()
+ basic_table_args = teal.widgets::basic_table_args(),
+ decorators = NULL
)
}
\arguments{
@@ -80,6 +81,12 @@ For example the \code{\link[shiny:helpText]{shiny::helpText()}} elements are use
with settings for the module table. The argument is merged with option \code{teal.basic_table_args} and with default
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating \code{tm_t_events_by_grade}" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -87,6 +94,18 @@ a \code{teal_module} object.
\description{
This module produces a table to summarize events by grade.
}
+\section{Decorating \code{tm_t_events_by_grade}}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{table} (\code{TableTree} as created from \code{rtables::build_table})
+}
+
+For additional details and examples of decorators, refer to the vignette
+\code{vignette("decorate-modules-output", package = "teal")} or the \code{\link[=teal_transform_module]{teal_transform_module()}} documentation.
+}
+
\examples{
library(dplyr)
data <- teal_data()
From b2919f6c7c34b295501d2154bf1ecade63f348c0 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 11 Dec 2024 15:06:23 +0000
Subject: [PATCH 76/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_t_events_by_grade.Rd | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/man/tm_t_events_by_grade.Rd b/man/tm_t_events_by_grade.Rd
index e2ff4a1bd..ab31a139b 100644
--- a/man/tm_t_events_by_grade.Rd
+++ b/man/tm_t_events_by_grade.Rd
@@ -82,11 +82,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or \code{NULL}) optional, if not \code{NULL}, decorator for tables or plots included in the module. When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
-See section "Decorating \code{tm_t_events_by_grade}" below for more details.}
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -94,7 +97,7 @@ a \code{teal_module} object.
\description{
This module produces a table to summarize events by grade.
}
-\section{Decorating \code{tm_t_events_by_grade}}{
+\section{Decorating Module}{
This module generates the following objects, which can be modified in place using decorators:
From 5c90ece97713be9608335849cecf940e58afaf45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Wed, 11 Dec 2024 16:22:40 +0000
Subject: [PATCH 77/86] docs: remove roxygen inline call
---
R/tm_g_pp_adverse_events.R | 3 +--
R/tm_t_exposure.R | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/R/tm_g_pp_adverse_events.R b/R/tm_g_pp_adverse_events.R
index 38e69e67f..df494bdd7 100644
--- a/R/tm_g_pp_adverse_events.R
+++ b/R/tm_g_pp_adverse_events.R
@@ -180,11 +180,10 @@ template_adverse_events <- function(dataname = "ANL",
#' available choices and preselected option for the `ASTDY` variable from `dataname`.
#' @param decod ([teal.transform::choices_selected()])\cr object with all
#' available choices and preselected option for the `AEDECOD` variable from `dataname`.
-#' @param decorators `r roxygen_decorators_param("tm_g_pp_adverse_events")`
#'
#' @inherit module_arguments return
#'
-#' @section Decorating `tm_g_pp_adverse_events`:
+#' @section Decorating Modules:
#'
#' This module generates the following objects, which can be modified in place using decorators::
#' - `plot` (`ggplot2`)
diff --git a/R/tm_t_exposure.R b/R/tm_t_exposure.R
index 30c191dca..0ac3a4d93 100644
--- a/R/tm_t_exposure.R
+++ b/R/tm_t_exposure.R
@@ -223,11 +223,10 @@ template_exposure <- function(parentname,
#' parameter category values.
#' @param paramcd_label (`character`)\cr the column from the dataset where the value will be used to
#' label the argument `paramcd`.
-#' @param decorators `r roxygen_decorators_param("tm_t_exposure")`
#'
#' @inherit module_arguments return seealso
#'
-#' @section Decorating `tm_t_exposure`:
+#' @section Decorating Modules:
#'
#' This module generates the following objects, which can be modified in place using decorators:
#' - `table` (`TableTree` as created from `rtables::build_table`)
From f439cd4aa809f976171b5ce4e1d8c1b7f03bde4d Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 11 Dec 2024 16:31:24 +0000
Subject: [PATCH 78/86] [skip roxygen] [skip vbump] Roxygen Man Pages Auto
Update
---
man/tm_g_pp_adverse_events.Rd | 11 +++++++++--
man/tm_g_pp_patient_timeline.Rd | 9 ++++++++-
man/tm_t_exposure.Rd | 11 +++++++++--
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/man/tm_g_pp_adverse_events.Rd b/man/tm_g_pp_adverse_events.Rd
index 90625071f..3c5f45e4b 100644
--- a/man/tm_g_pp_adverse_events.Rd
+++ b/man/tm_g_pp_adverse_events.Rd
@@ -74,7 +74,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\verb{r roxygen_decorators_param("tm_g_pp_adverse_events")}}
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -82,7 +89,7 @@ a \code{teal_module} object.
\description{
This module produces an adverse events table and \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} type plot using ADaM datasets.
}
-\section{Decorating \code{tm_g_pp_adverse_events}}{
+\section{Decorating Modules}{
This module generates the following objects, which can be modified in place using decorators::
diff --git a/man/tm_g_pp_patient_timeline.Rd b/man/tm_g_pp_patient_timeline.Rd
index 41d9d4026..45175ce25 100644
--- a/man/tm_g_pp_patient_timeline.Rd
+++ b/man/tm_g_pp_patient_timeline.Rd
@@ -89,7 +89,14 @@ for the module plot. The argument is merged with option \code{teal.ggplot2_args}
(hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
-\item{decorators}{\verb{r roxygen_decorators_param("tm_g_pp_adverse_events")}}
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
diff --git a/man/tm_t_exposure.Rd b/man/tm_t_exposure.Rd
index 8505eddbe..1899db3c0 100644
--- a/man/tm_t_exposure.Rd
+++ b/man/tm_t_exposure.Rd
@@ -93,7 +93,14 @@ with settings for the module table. The argument is merged with option \code{tea
module arguments (hard coded in the module body).
For more details, see the vignette: \code{vignette("custom-basic-table-arguments", package = "teal.widgets")}.}
-\item{decorators}{\verb{r roxygen_decorators_param("tm_t_exposure")}}
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -101,7 +108,7 @@ a \code{teal_module} object.
\description{
The module produces an exposure table for risk management plan.
}
-\section{Decorating \code{tm_t_exposure}}{
+\section{Decorating Modules}{
This module generates the following objects, which can be modified in place using decorators:
From 00c8c0be31e41b514c90596c9ef2accfd91f1c3f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Wed, 11 Dec 2024 16:50:06 +0000
Subject: [PATCH 79/86] fix: linter error
---
R/tm_t_events_by_grade.R | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/R/tm_t_events_by_grade.R b/R/tm_t_events_by_grade.R
index b6e28ab6d..29aacd14a 100644
--- a/R/tm_t_events_by_grade.R
+++ b/R/tm_t_events_by_grade.R
@@ -1207,7 +1207,7 @@ srv_t_events_by_grade <- function(id,
table_renamed_q <- reactive({
- within(table_q(), {table <- pruned_and_sorted_result})
+ within(table_q(), table <- pruned_and_sorted_result)
})
decorated_table_q <- srv_decorate_teal_data(
From a855989138b5cc5e4ca11697e32da763e0a1b246 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Thu, 12 Dec 2024 14:10:20 +0000
Subject: [PATCH 80/86] Adds decorators to `tm_a_mmrm` (#1300)
Part of https://github.com/insightsengineering/teal/issues/1371
Working example
```r
# Load packages
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
add_title_decorator <- function(default_check = TRUE, .var_to_replace = "plot") {
teal_transform_module(
label = "Theme",
ui = function(id) shiny::checkboxInput(NS(id, "flag"), "Add title?", TRUE),
server = make_teal_transform_server(
substitute({
if (flag) .var_to_replace <-
.var_to_replace + ggplot2::ggtitle("Title added by decorator")
},
env = list(.var_to_replace = as.name(.var_to_replace))
)
)
)
}
library(dplyr)
arm_ref_comp <- list(
ARMCD = list(
ref = "ARM B",
comp = c("ARM A", "ARM C")
)
)
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADQS <- tmc_ex_adqs %>%
filter(ABLFL != "Y" & ABLFL2 != "Y") %>%
filter(AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 3 DAY 22")) %>%
mutate(
AVISIT = as.factor(AVISIT),
AVISITN = rank(AVISITN) %>%
as.factor() %>%
as.numeric() %>%
as.factor() #' making consecutive numeric factor
)
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
init(
data = data,
modules = modules(
tm_a_mmrm(
label = "MMRM",
dataname = "ADQS",
aval_var = choices_selected(c("AVAL", "CHG"), "AVAL"),
id_var = choices_selected(c("USUBJID", "SUBJID"), "USUBJID"),
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
visit_var = choices_selected(c("AVISIT", "AVISITN"), "AVISIT"),
arm_ref_comp = arm_ref_comp,
paramcd = choices_selected(
choices = value_choices(data[["ADQS"]], "PARAMCD", "PARAM"),
selected = "FKSI-FWB"
),
cov_var = choices_selected(c("BASE", "AGE", "SEX", "BASE:AVISIT"), NULL),
decorators = list(
lsmeans_table = insert_rrow_decorator("A", .var_to_replace = "lsmeans_table")
, lsmeans_plot = add_title_decorator("B", .var_to_replace = "lsmeans_plot")
, covariance_table = insert_rrow_decorator("C", .var_to_replace = "covariance_table")
, fixed_effects_table = insert_rrow_decorator("D", .var_to_replace = "fixed_effects_table")
, diagnostic_table = insert_rrow_decorator(.var_to_replace = "diagnostic_table")
, diagnostic_plot = add_title_decorator(.var_to_replace = "diagnostic_plot")
)
)
)
) |> shiny::runApp()
```
---------
Co-authored-by: Marcin <133694481+m7pr@users.noreply.github.com>
---
R/tm_a_mmrm.R | 163 ++++++++++++++++++++++++++++++++++++++---------
man/tm_a_mmrm.Rd | 45 ++++++++++++-
2 files changed, 177 insertions(+), 31 deletions(-)
diff --git a/R/tm_a_mmrm.R b/R/tm_a_mmrm.R
index 59039b41c..02b18b96f 100644
--- a/R/tm_a_mmrm.R
+++ b/R/tm_a_mmrm.R
@@ -273,7 +273,6 @@ template_mmrm_tables <- function(parentname,
df = df_explicit_na(broom::tidy(fit_mmrm), na_level = default_na_str()),
alt_counts_df = parentname
)
- lsmeans_table
},
env = list(
parentname = as.name(parentname),
@@ -284,9 +283,8 @@ template_mmrm_tables <- function(parentname,
t_mmrm_cov = {
y$cov_matrix <- substitute(
expr = {
- cov_matrix <- tern.mmrm::as.rtable(fit_mmrm, type = "cov")
- subtitles(cov_matrix) <- st
- cov_matrix
+ covariance_table <- tern.mmrm::as.rtable(fit_mmrm, type = "cov")
+ subtitles(covariance_table) <- st
},
env = list(
fit_mmrm = as.name(fit_name),
@@ -297,9 +295,8 @@ template_mmrm_tables <- function(parentname,
t_mmrm_fixed = {
y$fixed_effects <- substitute(
expr = {
- fixed_effects <- tern.mmrm::as.rtable(fit_mmrm, type = "fixed")
- subtitles(fixed_effects) <- st
- fixed_effects
+ fixed_effects_table <- tern.mmrm::as.rtable(fit_mmrm, type = "fixed")
+ subtitles(fixed_effects_table) <- st
},
env = list(
fit_mmrm = as.name(fit_name),
@@ -312,7 +309,6 @@ template_mmrm_tables <- function(parentname,
expr = {
diagnostic_table <- tern.mmrm::as.rtable(fit_mmrm, type = "diagnostic")
subtitles(diagnostic_table) <- st
- diagnostic_table
},
env = list(
fit_mmrm = as.name(fit_name),
@@ -462,6 +458,35 @@ template_mmrm_plots <- function(fit_name,
#'
#' @inherit module_arguments return seealso
#'
+#' @section Decorating Module:
+#'
+#' This module generates the following objects, which can be modified in place using decorators:
+#' - `lsmeans_plot` (`ggplot2`)
+#' - `diagnostic_plot` (`TableTree`- output from `rtables::build_table`)
+#' - `lsmeans_table` (`TableTree`- output from `rtables::build_table`)
+#' - `covariance_table` (`TableTree`- output from `rtables::build_table`)
+#' - `fixed_effects_table` (`TableTree`- output from `rtables::build_table`)
+#' - `diagnostic_table` (`TableTree`- output from `rtables::build_table`)
+#'
+#' Decorators can be applied to all outputs or only to specific objects using a
+#' named list of `teal_transform_module` objects.
+#' The `"default"` name is reserved for decorators that are applied to all outputs.
+#' See code snippet below:
+#'
+#' ```
+#' tm_a_mrmm(
+#' ..., # arguments for module
+#' decorators = list(
+#' default = list(teal_transform_module(...)), # applied to all outputs
+#' lsmeans_plot = list(teal_transform_module(...)) # applied only to `lsmeans_plot` output
+#' diagnostic_plot = list(teal_transform_module(...)) # applied only to `diagnostic_plot` output
+#' lsmeans_table = list(teal_transform_module(...)) # applied only to `lsmeans_table` output
+#' covariance_table = list(teal_transform_module(...)) # applied only to `covariance_table` output
+#' fixed_effects_table = list(teal_transform_module(...)) # applied only to `fixed_effects_table` output
+#' diagnostic_table = list(teal_transform_module(...)) # applied only to `diagnostic_table` output
+#' )
+#' )
+#' ```
#' @examplesShinylive
#' library(teal.modules.clinical)
#' interactive <- function() TRUE
@@ -543,7 +568,8 @@ tm_a_mmrm <- function(label,
pre_output = NULL,
post_output = NULL,
basic_table_args = teal.widgets::basic_table_args(),
- ggplot2_args = teal.widgets::ggplot2_args()) {
+ ggplot2_args = teal.widgets::ggplot2_args(),
+ decorators = NULL) {
message("Initializing tm_a_mmrm")
cov_var <- teal.transform::add_no_selected_choices(cov_var, multiple = TRUE)
checkmate::assert_string(label)
@@ -572,6 +598,20 @@ tm_a_mmrm <- function(label,
checkmate::assert_list(ggplot2_args, types = "ggplot2_args")
checkmate::assert_subset(names(ggplot2_args), c("default", plot_choices))
+ decorators <- normalize_decorators(decorators)
+ assert_decorators(
+ decorators,
+ c(
+ "lsmeans_table",
+ "lsmeans_plot",
+ "covariance_table",
+ "fixed_effects_table",
+ "diagnostic_table",
+ "diagnostic_plot"
+ ),
+ null.ok = TRUE
+ )
+
args <- as.list(environment())
data_extract_list <- list(
@@ -600,7 +640,8 @@ tm_a_mmrm <- function(label,
plot_height = plot_height,
plot_width = plot_width,
basic_table_args = basic_table_args,
- ggplot2_args = ggplot2_args
+ ggplot2_args = ggplot2_args,
+ decorators = decorators
)
),
datanames = teal.transform::get_extract_datanames(data_extract_list)
@@ -754,6 +795,32 @@ ui_mmrm <- function(id, ...) {
),
selected = "t_mmrm_lsmeans"
),
+ # Decorators ---
+ conditionalPanel(
+ condition = sprintf("input['%s'] == '%s'", ns("output_function"), "t_mmrm_lsmeans"),
+ ui_decorate_teal_data(ns("d_lsmeans_table"), select_decorators(a$decorators, "lsmeans_table"))
+ ),
+ conditionalPanel(
+ condition = sprintf("input['%s'] == '%s'", ns("output_function"), "g_mmrm_lsmeans"),
+ ui_decorate_teal_data(ns("d_lsmeans_plot"), select_decorators(a$decorators, "lsmeans_plot"))
+ ),
+ conditionalPanel(
+ condition = sprintf("input['%s'] == '%s'", ns("output_function"), "t_mmrm_cov"),
+ ui_decorate_teal_data(ns("d_covariance_table"), select_decorators(a$decorators, "covariance_table"))
+ ),
+ conditionalPanel(
+ condition = sprintf("input['%s'] == '%s'", ns("output_function"), "t_mmrm_fixed"),
+ ui_decorate_teal_data(ns("d_fixed_effects_table"), select_decorators(a$decorators, "fixed_effects_table"))
+ ),
+ conditionalPanel(
+ condition = sprintf("input['%s'] == '%s'", ns("output_function"), "t_mmrm_diagnostic"),
+ ui_decorate_teal_data(ns("d_diagnostic_table"), select_decorators(a$decorators, "diagnostic_table"))
+ ),
+ conditionalPanel(
+ condition = sprintf("input['%s'] == '%s'", ns("output_function"), "g_mmrm_diagnostic"),
+ ui_decorate_teal_data(ns("d_diagnostic_plot"), select_decorators(a$decorators, "diagnostic_plot"))
+ ),
+ # End of Decorators ---
conditionalPanel(
condition = paste0(
"input['", ns("output_function"), "'] == 't_mmrm_lsmeans'", " || ",
@@ -843,7 +910,8 @@ srv_mmrm <- function(id,
plot_height,
plot_width,
basic_table_args,
- ggplot2_args) {
+ ggplot2_args,
+ decorators) {
with_reporter <- !missing(reporter) && inherits(reporter, "Reporter")
with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, "FilterPanelAPI")
checkmate::assert_class(data, "reactive")
@@ -1399,30 +1467,62 @@ srv_mmrm <- function(id,
teal.code::eval_code(qenv, as.expression(mmrm_plot_expr))
})
- all_q <- reactive({
- if (!is.null(plot_q()) && !is.null(table_q())) {
- c(plot_q(), table_q())
- } else if (!is.null(plot_q())) {
- plot_q()
- } else {
- table_q()
+ decorated_tables_q <- lapply(
+ rlang::set_names(
+ c("lsmeans_table", "diagnostic_table", "fixed_effects_table", "covariance_table")
+ ),
+ function(output_function) {
+ srv_decorate_teal_data(
+ id = sprintf("d_%s", output_function),
+ data = table_q,
+ decorators = select_decorators(decorators, output_function),
+ expr = reactive(bquote(.(as.name(output_function)))),
+ expr_is_reactive = TRUE
+ )
}
- })
+ )
- table_r <- reactive({
+ decorated_objs_q <- c(
+ decorated_tables_q,
+ lapply(
+ rlang::set_names(c("lsmeans_plot", "diagnostic_plot")),
+ function(output_function) {
+ srv_decorate_teal_data(
+ id = sprintf("d_%s", output_function),
+ data = plot_q,
+ decorators = select_decorators(decorators, output_function),
+ expr = reactive(bquote(.(as.name(output_function)))),
+ expr_is_reactive = TRUE
+ )
+ }
+ )
+ )
+
+ obj_ix_r <- reactive({
switch(input$output_function,
- t_mmrm_lsmeans = table_q()[["lsmeans_table"]],
- t_mmrm_diagnostic = table_q()[["diagnostic_table"]],
- t_mmrm_fixed = table_q()[["fixed_effects"]],
- t_mmrm_cov = table_q()[["cov_matrix"]]
+ t_mmrm_lsmeans = "lsmeans_table",
+ t_mmrm_diagnostic = "diagnostic_table",
+ t_mmrm_fixed = "fixed_effects_table",
+ t_mmrm_cov = "covariance_table",
+ g_mmrm_lsmeans = "lsmeans_plot",
+ g_mmrm_diagnostic = "diagnostic_plot"
)
})
plot_r <- reactive({
- switch(input$output_function,
- g_mmrm_lsmeans = plot_q()[["lsmeans_plot"]],
- g_mmrm_diagnostic = plot_q()[["diagnostic_plot"]]
- )
+ if (is.null(plot_q())) {
+ NULL
+ } else {
+ decorated_objs_q[[obj_ix_r()]]()[[obj_ix_r()]]
+ }
+ })
+
+ table_r <- reactive({
+ if (is.null(table_q())) {
+ NULL
+ } else {
+ decorated_objs_q[[obj_ix_r()]]()[[obj_ix_r()]]
+ }
})
pws <- teal.widgets::plot_with_settings_srv(
@@ -1440,9 +1540,12 @@ srv_mmrm <- function(id,
)
# Show R code once button is pressed.
+ source_code_r <- reactive(
+ teal.code::get_code(req(decorated_objs_q[[obj_ix_r()]]()))
+ )
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(all_q())),
+ verbatim_content = source_code_r,
disabled = disable_r_code,
title = "R Code for the Current MMRM Analysis"
)
@@ -1472,7 +1575,7 @@ srv_mmrm <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(all_q()))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/man/tm_a_mmrm.Rd b/man/tm_a_mmrm.Rd
index 58225572c..24a9ba960 100644
--- a/man/tm_a_mmrm.Rd
+++ b/man/tm_a_mmrm.Rd
@@ -26,7 +26,8 @@ tm_a_mmrm(
pre_output = NULL,
post_output = NULL,
basic_table_args = teal.widgets::basic_table_args(),
- ggplot2_args = teal.widgets::ggplot2_args()
+ ggplot2_args = teal.widgets::ggplot2_args(),
+ decorators = NULL
)
}
\arguments{
@@ -94,6 +95,15 @@ with settings for all the plots or named list of \code{ggplot2_args} objects for
List names should match the following: \code{c("default", "lsmeans", "diagnostic")}. The argument is merged
with option \code{teal.ggplot2_args} and with default module arguments (hard coded in the module body).
For more details, see the help vignette: \code{vignette("custom-ggplot2-arguments", package = "teal.widgets")}.}
+
+\item{decorators}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}}
+" (\code{list} of \code{teal_transform_module}, named \code{list} of \code{teal_transform_module} or" \code{NULL}) optional,
+if not \code{NULL}, decorator for tables or plots included in the module.
+When a named list of \code{teal_transform_module}, the decorators are applied to the respective output objects.
+
+Otherwise, the decorators are applied to all objects, which is equivalent as using the name \code{default}.
+
+See section "Decorating Module" below for more details.}
}
\value{
a \code{teal_module} object.
@@ -107,6 +117,39 @@ different convergence behavior. This is a known observation with the used packag
\code{lme4}. However, once convergence is achieved, the results are reliable up to
numerical precision.
}
+\section{Decorating Module}{
+
+
+This module generates the following objects, which can be modified in place using decorators:
+\itemize{
+\item \code{lsmeans_plot} (\code{ggplot2})
+\item \code{diagnostic_plot} (\code{TableTree}- output from \code{rtables::build_table})
+\item \code{lsmeans_table} (\code{TableTree}- output from \code{rtables::build_table})
+\item \code{covariance_table} (\code{TableTree}- output from \code{rtables::build_table})
+\item \code{fixed_effects_table} (\code{TableTree}- output from \code{rtables::build_table})
+\item \code{diagnostic_table} (\code{TableTree}- output from \code{rtables::build_table})
+}
+
+Decorators can be applied to all outputs or only to specific objects using a
+named list of \code{teal_transform_module} objects.
+The \code{"default"} name is reserved for decorators that are applied to all outputs.
+See code snippet below:
+
+\if{html}{\out{}}\preformatted{tm_a_mrmm(
+ ..., # arguments for module
+ decorators = list(
+ default = list(teal_transform_module(...)), # applied to all outputs
+ lsmeans_plot = list(teal_transform_module(...)) # applied only to `lsmeans_plot` output
+ diagnostic_plot = list(teal_transform_module(...)) # applied only to `diagnostic_plot` output
+ lsmeans_table = list(teal_transform_module(...)) # applied only to `lsmeans_table` output
+ covariance_table = list(teal_transform_module(...)) # applied only to `covariance_table` output
+ fixed_effects_table = list(teal_transform_module(...)) # applied only to `fixed_effects_table` output
+ diagnostic_table = list(teal_transform_module(...)) # applied only to `diagnostic_table` output
+ )
+)
+}\if{html}{\out{
}}
+}
+
\examples{
library(dplyr)
From 0a06fbba7a0b3148b65c35ba43f060fad22f1865 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Thu, 12 Dec 2024 17:41:30 +0000
Subject: [PATCH 81/86] fix: tm_t_coxreg bug
---
R/tm_t_coxreg.R | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/R/tm_t_coxreg.R b/R/tm_t_coxreg.R
index bde44f002..e9507c438 100644
--- a/R/tm_t_coxreg.R
+++ b/R/tm_t_coxreg.R
@@ -1054,7 +1054,7 @@ srv_t_coxreg <- function(id,
)
merged$anl_q() %>%
- teal.code::eval_code(quote(result <- list())) %>%
+ teal.code::eval_code(quote(table <- list())) %>%
teal.code::eval_code(
as.expression(unlist(lapply(
unlist(input$buckets$Comp),
@@ -1066,19 +1066,18 @@ srv_t_coxreg <- function(id,
teal.code::eval_code(
substitute(
expr = {
- result <- lapply(result, function(x) {
- rtables::col_info(x) <- rtables::col_info(result[[1]])
+ table <- lapply(table, function(x) {
+ rtables::col_info(x) <- rtables::col_info(table[[1]])
x
})
- result <- rtables::rbindl_rtables(result, check_headers = TRUE)
- rtables::main_title(result) <- title
- rtables::main_footer(result) <- c(
+ table <- rtables::rbindl_rtables(table, check_headers = TRUE)
+ rtables::main_title(table) <- title
+ rtables::main_footer(table) <- c(
paste("p-value method for Coxph (Hazard Ratio):", control$pval_method),
paste("Ties for Coxph (Hazard Ratio):", control$ties)
)
- rtables::prov_footer(result) <- p_footer
- rtables::subtitles(result) <- subtitle
- result
+ rtables::prov_footer(table) <- p_footer
+ rtables::subtitles(table) <- subtitle
},
env = list(
title = all_basic_table_args$title,
From 6d4ce5b2ac5f6520d5fdf2ec64476b81881f74c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Fri, 13 Dec 2024 15:40:43 +0000
Subject: [PATCH 82/86] fix: adverse events error
---
R/tm_g_pp_adverse_events.R | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/R/tm_g_pp_adverse_events.R b/R/tm_g_pp_adverse_events.R
index df494bdd7..2690f463f 100644
--- a/R/tm_g_pp_adverse_events.R
+++ b/R/tm_g_pp_adverse_events.R
@@ -58,8 +58,8 @@ template_adverse_events <- function(dataname = "ANL",
dplyr::where(~ inherits(., what = "difftime")), ~ as.double(., units = "auto")
)
)
- table <- rlistings::as_listing(
- table,
+ table_output <- rlistings::as_listing(
+ table_data,
key_cols = NULL,
default_formatting = list(all = fmt_config(align = "left"))
)
From 8a9edd239f4d5d32fbcf839661fe6118f219108b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Mon, 16 Dec 2024 13:39:31 +0000
Subject: [PATCH 83/86] Uses same code for source code generation in modules
(#1301)
Part of https://github.com/insightsengineering/teal/issues/1371
### Example app with all modules / decorators
Example app
```r
# Load packages
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Decorators ------------------------------------------------------------------
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New rtables row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
add_title_decorator <- function(default_check = TRUE, .var_to_replace = "plot") {
teal_transform_module(
label = "Title",
ui = function(id) shiny::checkboxInput(NS(id, "flag"), "Add title?", TRUE),
server = make_teal_transform_server(
substitute({
if (flag) .var_to_replace <-
.var_to_replace + ggplot2::ggtitle("Title added by decorator")
},
env = list(.var_to_replace = as.name(.var_to_replace))
)
)
)
}
caption_decorator <- function(default_caption = "I am a good decorator", .var_to_replace = "plot") {
teal_transform_module(
label = "Caption",
ui = function(id) shiny::textInput(shiny::NS(id, "footnote"), "Footnote", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- .var_to_replace + ggplot2::labs(caption = footnote)
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
change_theme_decorator <- function(default_check = TRUE, .var_to_replace = "plot") {
teal_transform_module(
label = "Theme",
ui = function(id) shiny::checkboxInput(NS(id, "flag"), "Apply dark theme?", TRUE),
server = make_teal_transform_server(
substitute({
if (flag) .var_to_replace <- .var_to_replace + ggplot2::theme_dark()
},
env = list(.var_to_replace = as.name(.var_to_replace))
)
)
)
}
add_cowplot_title_decorator <- function(default_check = TRUE, .var_to_replace = "plot") {
teal_transform_module(
label = "Cowplot title",
ui = function(id) shiny::checkboxInput(NS(id, "flag"), "Add title?", TRUE),
server = make_teal_transform_server(
substitute({
if (flag) .var_to_replace <-
.var_to_replace +
ggplot2::ggtitle("Title added by decorator") +
cowplot::theme_cowplot()
},
env = list(.var_to_replace = as.name(.var_to_replace))
)
)
)
}
rlisting_footer <- function(default_footer = "I am a good footer", .var_to_replace = "table_listing") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "footer"), "footer", value = default_footer),
server = make_teal_transform_server(
substitute({
rlistings::main_footer(.var_to_replace) <- footer
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
# End of decorators -----------------------------------------------------------
library(dplyr)
# arm_ref_comp <- list(ARMCD = list(ref = "ARM B", comp = c("ARM A", "ARM C")))
arm_ref_comp <- list(
ACTARMCD = list(ref = "ARM B", comp = c("ARM A", "ARM C")),
ARM = list(ref = "B: Placebo", comp = c("A: Drug X", "C: Combination"))
)
data <- within(teal_data(), {
ADSL <- tmc_ex_adsl |>
mutate(ITTFL = factor("Y") |> with_label("Intent-To-Treat Population Flag")) |>
mutate(DTHFL = case_when(!is.na(DTHDT) ~ "Y", TRUE ~ "") |> with_label("Subject Death Flag"))
ADAE <- tmc_ex_adae |>
filter(!((AETOXGR == 1) & (AESEV == "MILD") & (ARM == "A: Drug X")))
ADAE$ASTDY <- structure(
as.double(ADAE$ASTDY, unit = attr(ADAE$ASTDY, "units", exact = TRUE)),
label = attr(ADAE$ASTDY, "label", exact = TRUE)
)
.lbls_adae <- col_labels(tmc_ex_adae)
ADAE <- tmc_ex_adae %>%
mutate_if(is.character, as.factor) #' be certain of having factors
col_labels(ADAE) <- .lbls_adae
ADTTE <- tmc_ex_adtte
ADLB <- tmc_ex_adlb |>
mutate(AVISIT == forcats::fct_reorder(AVISIT, AVISITN, min)) |>
mutate(
ONTRTFL = case_when(
AVISIT %in% c("SCREENING", "BASELINE") ~ "",
TRUE ~ "Y"
) |> with_label("On Treatment Record Flag")
)
ADVS <- tmc_ex_advs
ADRS <- tmc_ex_adrs |>
mutate(
AVALC = d_onco_rsp_label(AVALC) |>
with_label("Character Result/Finding")
) |>
filter(PARAMCD != "OVRINV" | AVISIT == "FOLLOW UP") |>
filter(PARAMCD %in% c("BESRSPI", "INVET"))
ADAETTE <- tmc_ex_adaette %>%
filter(PARAMCD %in% c("AETTE1", "AETTE2", "AETTE3")) %>%
mutate(is_event = CNSR == 0) %>%
mutate(n_events = as.integer(is_event))
.add_event_flags <- function(dat) {
dat <- dat %>%
mutate(
TMPFL_SER = AESER == "Y",
TMPFL_REL = AEREL == "Y",
TMPFL_GR5 = AETOXGR == "5",
TMP_SMQ01 = !is.na(SMQ01NAM),
TMP_SMQ02 = !is.na(SMQ02NAM),
TMP_CQ01 = !is.na(CQ01NAM)
)
column_labels <- list(
TMPFL_SER = "Serious AE",
TMPFL_REL = "Related AE",
TMPFL_GR5 = "Grade 5 AE",
TMP_SMQ01 = aesi_label(dat[["SMQ01NAM"]], dat[["SMQ01SC"]]),
TMP_SMQ02 = aesi_label("Y.9.9.9.9/Z.9.9.9.9 AESI"),
TMP_CQ01 = aesi_label(dat[["CQ01NAM"]])
)
col_labels(dat)[names(column_labels)] <- as.character(column_labels)
dat
}
ADEX <- tmc_ex_adex
set.seed(1, kind = "Mersenne-Twister")
.labels <- col_labels(ADEX, fill = FALSE)
ADEX <- ADEX %>%
distinct(USUBJID, .keep_all = TRUE) %>%
mutate(
PARAMCD = "TDURD",
PARAM = "Overall duration (days)",
AVAL = sample(x = seq(1, 200), size = n(), replace = TRUE),
AVALU = "Days"
) %>%
bind_rows(ADEX)
col_labels(ADEX) <- .labels
ADCM <- tmc_ex_adcm
ADMH <- tmc_ex_admh
ADCM$CMASTDTM <- ADCM$ASTDTM
ADCM$CMAENDTM <- ADCM$AENDTM
ADEG <- tmc_ex_adeg
# smq
.names_baskets <- grep("^(SMQ|CQ).*NAM$", names(ADAE), value = TRUE)
.names_scopes <- grep("^SMQ.*SC$", names(ADAE), value = TRUE)
.cs_baskets <- choices_selected(
choices = variable_choices(ADAE, subset = .names_baskets),
selected = .names_baskets
)
.cs_scopes <- choices_selected(
choices = variable_choices(ADAE, subset = .names_scopes),
selected = .names_scopes,
fixed = TRUE
)
# summary
ADSL$EOSDY[1] <- NA_integer_
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", "ATC4")
join_keys(data)["ADCM", "ADCM"] <- adcm_keys
# Use in choices selected -----------------------------------------------------
ADSL <- data[["ADSL"]]
ADQS <- data[["ADQS"]]
ADAE <- data[["ADAE"]]
ADTTE <- data[["ADTTE"]]
ADLB <- data[["ADLB"]]
ADAE <- data[["ADAE"]]
ADVS <- data[["ADVS"]]
ADRS <- data[["ADRS"]]
ADAETTE <- data[["ADAETTE"]]
ADEX <- data[["ADEX"]]
ADCM <- data[["ADCM"]]
ADMH <- data[["ADMH"]]
ADEG <- data[["ADEG"]]
# Init ------------------------------------------------------------------------
init(
data = data,
modules = modules(
# -------------------------------------------------------------------------
tm_t_summary_by(
label = "Summary by Row Groups Table",
dataname = "ADLB",
arm_var = choices_selected(
choices = variable_choices(ADSL, c("ARM", "ARMCD")),
selected = "ARM"
),
add_total = TRUE,
by_vars = choices_selected(
choices = variable_choices(ADLB, c("PARAM", "AVISIT")),
selected = c("AVISIT")
),
summarize_vars = choices_selected(
choices = variable_choices(ADLB, c("AVAL", "CHG")),
selected = c("AVAL")
),
useNA = "ifany",
paramcd = choices_selected(
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = "ALT"
),
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_smq(
label = "Adverse Events by SMQ Table",
dataname = "ADAE",
arm_var = choices_selected(
choices = variable_choices(data[["ADSL"]], subset = c("ARM", "SEX")),
selected = "ARM"
),
add_total = FALSE,
baskets = data[[".cs_baskets"]],
scopes = data[[".cs_scopes"]],
llt = choices_selected(
choices = variable_choices(data[["ADAE"]], subset = c("AEDECOD")),
selected = "AEDECOD"
),
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_shift_by_grade(
label = "Grade Laboratory Abnormality Table",
dataname = "ADLB",
arm_var = choices_selected(
choices = variable_choices(ADSL, subset = c("ARM", "ARMCD")),
selected = "ARM"
),
paramcd = choices_selected(
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = "ALT"
),
worst_flag_var = choices_selected(
choices = variable_choices(ADLB, subset = c("WGRLOVFL", "WGRLOFL", "WGRHIVFL", "WGRHIFL")),
selected = c("WGRLOVFL")
),
worst_flag_indicator = choices_selected(
value_choices(ADLB, "WGRLOVFL"),
selected = "Y", fixed = TRUE
),
anl_toxgrade_var = choices_selected(
choices = variable_choices(ADLB, subset = c("ATOXGR")),
selected = c("ATOXGR"),
fixed = TRUE
),
base_toxgrade_var = choices_selected(
choices = variable_choices(ADLB, subset = c("BTOXGR")),
selected = c("BTOXGR"),
fixed = TRUE
),
add_total = FALSE,
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_shift_by_arm(
label = "Shift by Arm Table",
dataname = "ADEG",
arm_var = choices_selected(
variable_choices(ADSL, subset = c("ARM", "ARMCD")),
selected = "ARM"
),
paramcd = choices_selected(
value_choices(ADEG, "PARAMCD"),
selected = "HR"
),
visit_var = choices_selected(
value_choices(ADEG, "AVISIT"),
selected = "POST-BASELINE MINIMUM"
),
aval_var = choices_selected(
variable_choices(ADEG, subset = "ANRIND"),
selected = "ANRIND",
fixed = TRUE
),
baseline_var = choices_selected(
variable_choices(ADEG, subset = "BNRIND"),
selected = "BNRIND",
fixed = TRUE
),
useNA = "ifany",
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_shift_by_arm_by_worst(
label = "Shift by Arm Table (by worst)",
dataname = "ADEG",
arm_var = choices_selected(
variable_choices(ADSL, subset = c("ARM", "ARMCD")),
selected = "ARM"
),
paramcd = choices_selected(
value_choices(ADEG, "PARAMCD"),
selected = "ECGINTP"
),
worst_flag_var = choices_selected(
variable_choices(ADEG, c("WORS02FL", "WORS01FL")),
selected = "WORS02FL"
),
worst_flag = choices_selected(
value_choices(ADEG, "WORS02FL"),
selected = "Y",
fixed = TRUE
),
aval_var = choices_selected(
variable_choices(ADEG, c("AVALC", "ANRIND")),
selected = "AVALC"
),
baseline_var = choices_selected(
variable_choices(ADEG, c("BASEC", "BNRIND")),
selected = "BASEC"
),
useNA = "ifany",
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_pp_prior_medication(
label = "Prior Medication",
dataname = "ADCM",
parentname = "ADSL",
patient_col = "USUBJID",
atirel = choices_selected(
choices = variable_choices(ADCM, "ATIREL"),
selected = "ATIREL"
),
cmdecod = choices_selected(
choices = variable_choices(ADCM, "CMDECOD"),
selected = "CMDECOD"
),
cmindc = choices_selected(
choices = variable_choices(ADCM, "CMINDC"),
selected = "CMINDC"
),
cmstdy = choices_selected(
choices = variable_choices(ADCM, "ASTDY"),
selected = "ASTDY"
),
decorators = list(
table = rlisting_footer(.var_to_replace = "table")
)
),
# -------------------------------------------------------------------------
tm_t_pp_medical_history(
label = "Medical History",
dataname = "ADMH",
parentname = "ADSL",
patient_col = "USUBJID",
mhterm = choices_selected(
choices = variable_choices(ADMH, c("MHTERM")),
selected = "MHTERM"
),
mhbodsys = choices_selected(
choices = variable_choices(ADMH, "MHBODSYS"),
selected = "MHBODSYS"
),
mhdistat = choices_selected(
choices = variable_choices(ADMH, "MHDISTAT"),
selected = "MHDISTAT"
),
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_pp_laboratory(
label = "Vitals",
dataname = "ADLB",
patient_col = "USUBJID",
paramcd = choices_selected(
choices = variable_choices(ADLB, "PARAMCD"),
selected = "PARAMCD"
),
param = choices_selected(
choices = variable_choices(ADLB, "PARAM"),
selected = "PARAM"
),
timepoints = choices_selected(
choices = variable_choices(ADLB, "ADY"),
selected = "ADY"
),
anrind = choices_selected(
choices = variable_choices(ADLB, "ANRIND"),
selected = "ANRIND"
),
aval_var = choices_selected(
choices = variable_choices(ADLB, "AVAL"),
selected = "AVAL"
),
avalu_var = choices_selected(
choices = variable_choices(ADLB, "AVALU"),
selected = "AVALU"
),
decorators = list(table = rlisting_footer(.var_to_replace = "table"))
),
# -------------------------------------------------------------------------
tm_t_pp_basic_info(
label = "Basic Info",
dataname = "ADSL",
patient_col = "USUBJID",
vars = choices_selected(choices = variable_choices(ADSL), selected = c("ARM", "AGE", "SEX", "COUNTRY", "RACE", "EOSSTT"))
, decorators = list(
table = rlisting_footer(.var_to_replace = "table")
)
),
# -------------------------------------------------------------------------
tm_t_mult_events(
label = "Concomitant Medications by Medication Class and Preferred Name",
dataname = "ADCM",
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
seq_var = choices_selected("CMSEQ", selected = "CMSEQ", fixed = TRUE),
hlt = choices_selected(
choices = variable_choices(ADCM, c("ATC1", "ATC2", "ATC3", "ATC4")),
selected = c("ATC1", "ATC2", "ATC3", "ATC4")
),
llt = choices_selected(choices = variable_choices(ADCM, c("CMDECOD")), selected = c("CMDECOD")),
add_total = TRUE,
event_type = "treatment",
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_logistic(
label = "Logistic Regression",
dataname = "ADRS",
arm_var = choices_selected(
choices = variable_choices(ADRS, c("ARM", "ARMCD")),
selected = "ARM"
),
arm_ref_comp = arm_ref_comp,
paramcd = choices_selected(
choices = value_choices(ADRS, "PARAMCD", "PARAM"),
selected = "BESRSPI"
),
cov_var = choices_selected(
choices = c("SEX", "AGE", "BMRKR1", "BMRKR2"),
selected = "SEX"
),
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_exposure(
label = "Duration of Exposure Table",
dataname = "ADEX",
paramcd = choices_selected(
choices = value_choices(data[["ADEX"]], "PARAMCD", "PARAM"),
selected = "TDURD"
),
col_by_var = choices_selected(
choices = variable_choices(data[["ADEX"]], subset = c("SEX", "ARM")),
selected = "SEX"
),
row_by_var = choices_selected(
choices = variable_choices(data[["ADEX"]], subset = c("RACE", "REGION1", "STRATA1", "SEX")),
selected = "RACE"
),
parcat = choices_selected(
choices = value_choices(data[["ADEX"]], "PARCAT2"),
selected = "Drug A"
),
add_total = FALSE,
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_events(
label = "Adverse Event Table",
dataname = "ADAE",
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
llt = choices_selected(
choices = variable_choices(ADAE, c("AETERM", "AEDECOD")),
selected = c("AEDECOD")
),
hlt = choices_selected(
choices = variable_choices(ADAE, c("AEBODSYS", "AESOC")),
selected = "AEBODSYS"
),
add_total = TRUE,
event_type = "adverse event",
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_events_patyear(
label = "AE Rate Adjusted for Patient-Years At Risk Table",
dataname = "ADAETTE",
arm_var = choices_selected(
choices = variable_choices(ADSL, c("ARM", "ARMCD")),
selected = "ARMCD"
),
add_total = TRUE,
events_var = choices_selected(
choices = variable_choices(ADAETTE, "n_events"),
selected = "n_events",
fixed = TRUE
),
paramcd = choices_selected(
choices = value_choices(ADAETTE, "PARAMCD", "PARAM"),
selected = "AETTE1"
),
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_events_by_grade(
label = "Adverse Events by Grade Table",
dataname = "ADAE",
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
llt = choices_selected(
choices = variable_choices(ADAE, c("AETERM", "AEDECOD")),
selected = c("AEDECOD")
),
hlt = choices_selected(
choices = variable_choices(ADAE, c("AEBODSYS", "AESOC")),
selected = "AEBODSYS"
),
grade = choices_selected(
choices = variable_choices(ADAE, c("AETOXGR", "AESEV")),
selected = "AETOXGR"
),
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_coxreg(
label = "Cox Reg.",
dataname = "ADTTE",
arm_var = choices_selected(c("ARM", "ARMCD", "ACTARMCD"), "ARM"),
arm_ref_comp = arm_ref_comp,
paramcd = choices_selected(
value_choices(ADTTE, "PARAMCD", "PARAM"), "OS"
),
strata_var = choices_selected(
c("COUNTRY", "STRATA1", "STRATA2"), "STRATA1"
),
cov_var = choices_selected(
c("AGE", "BMRKR1", "BMRKR2", "REGION1"), "AGE"
),
multivariate = TRUE,
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_abnormality(
label = "Abnormality Table",
dataname = "ADLB",
arm_var = choices_selected(
choices = variable_choices(ADSL, subset = c("ARM", "ARMCD")),
selected = "ARM"
),
add_total = FALSE,
by_vars = choices_selected(
choices = variable_choices(ADLB, subset = c("LBCAT", "PARAM", "AVISIT")),
selected = c("LBCAT", "PARAM"),
keep_order = TRUE
),
baseline_var = choices_selected(
variable_choices(ADLB, subset = "BNRIND"),
selected = "BNRIND", fixed = TRUE
),
grade = choices_selected(
choices = variable_choices(ADLB, subset = "ANRIND"),
selected = "ANRIND",
fixed = TRUE
),
abnormal = list(low = "LOW", high = "HIGH"),
exclude_base_abn = FALSE,
decorators = list(insert_rrow_decorator("I am a good new row"))
),
# -------------------------------------------------------------------------
tm_g_pp_vitals(
label = "Vitals",
dataname = "ADVS",
parentname = "ADSL",
patient_col = "USUBJID",
plot_height = c(600L, 200L, 2000L),
paramcd = choices_selected(
choices = variable_choices(ADVS, "PARAMCD"),
selected = "PARAMCD"
),
xaxis = choices_selected(
choices = variable_choices(ADVS, "ADY"),
selected = "ADY"
),
aval_var = choices_selected(
choices = variable_choices(ADVS, "AVAL"),
selected = "AVAL"
),
decorators = list(plot = add_title_decorator("plot"))
),
# -------------------------------------------------------------------------
tm_g_pp_adverse_events(
label = "Adverse Events",
dataname = "ADAE",
parentname = "ADSL",
patient_col = "USUBJID",
plot_height = c(600L, 200L, 2000L),
aeterm = choices_selected(
choices = variable_choices(ADAE, "AETERM"),
selected = "AETERM"
),
tox_grade = choices_selected(
choices = variable_choices(ADAE, "AETOXGR"),
selected = "AETOXGR"
),
causality = choices_selected(
choices = variable_choices(ADAE, "AEREL"),
selected = "AEREL"
),
outcome = choices_selected(
choices = variable_choices(ADAE, "AEOUT"),
selected = "AEOUT"
),
action = choices_selected(
choices = variable_choices(ADAE, "AEACN"),
selected = "AEACN"
),
time = choices_selected(
choices = variable_choices(ADAE, "ASTDY"),
selected = "ASTDY"
),
decod = NULL,
decorators = list(
plot = caption_decorator('I am a good caption', 'plot'),
table = rlisting_footer(.var_to_replace = 'table')
)
),
# -------------------------------------------------------------------------
tm_g_lineplot(
label = "Line Plot",
dataname = "ADLB",
strata = choices_selected(
variable_choices(ADSL, c("ARM", "ARMCD", "ACTARMCD")),
"ARM"
),
y = choices_selected(
variable_choices(ADLB, c("AVAL", "BASE", "CHG", "PCHG")),
"AVAL"
),
param = choices_selected(
value_choices(ADLB, "PARAMCD", "PARAM"),
"ALT"
),
decorators = list(add_cowplot_title_decorator("plot"))
),
# -------------------------------------------------------------------------
tm_g_km(
label = "Kaplan-Meier Plot",
dataname = "ADTTE",
arm_var = choices_selected(
variable_choices(ADSL, c("ARM", "ARMCD", "ACTARMCD")),
"ARM"
),
paramcd = choices_selected(
value_choices(ADTTE, "PARAMCD", "PARAM"),
"OS"
),
arm_ref_comp = arm_ref_comp,
strata_var = choices_selected(
variable_choices(ADSL, c("SEX", "BMRKR2")),
"SEX"
),
facet_var = choices_selected(
variable_choices(ADSL, c("SEX", "BMRKR2")),
NULL
),
decorators = list(plot = add_cowplot_title_decorator(TRUE, "plot"))
),
# -------------------------------------------------------------------------
tm_g_barchart_simple(
label = "ADAE Analysis",
x = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(
ADSL,
c(
"ARM", "ACTARM", "SEX",
"RACE", "ITTFL", "SAFFL", "STRATA2"
)
),
selected = "ACTARM",
multiple = FALSE
)
),
fill = list(
data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(
ADSL,
c(
"ARM", "ACTARM", "SEX",
"RACE", "ITTFL", "SAFFL", "STRATA2"
)
),
selected = "SEX",
multiple = FALSE
)
),
data_extract_spec(
dataname = "ADAE",
select = select_spec(
choices = variable_choices(ADAE, c("AETOXGR", "AESEV", "AESER")),
selected = NULL,
multiple = FALSE
)
)
),
x_facet = list(
data_extract_spec(
dataname = "ADAE",
select = select_spec(
choices = variable_choices(ADAE, c("AETOXGR", "AESEV", "AESER")),
selected = "AETOXGR",
multiple = FALSE
)
),
data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(
ADSL,
c(
"ARM", "ACTARM", "SEX",
"RACE", "ITTFL", "SAFFL", "STRATA2"
)
),
selected = NULL,
multiple = FALSE
)
)
),
y_facet = list(
data_extract_spec(
dataname = "ADAE",
select = select_spec(
choices = variable_choices(ADAE, c("AETOXGR", "AESEV", "AESER")),
selected = "AESEV",
multiple = FALSE
)
),
data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(
ADSL,
c(
"ARM", "ACTARM", "SEX",
"RACE", "ITTFL", "SAFFL", "STRATA2"
)
),
selected = NULL,
multiple = FALSE
)
)
),
decorators = list(plot = caption_decorator('The best', 'plot'))
)
)
) |> shiny::runApp()
```
Second App
```r
# Load packages
pkgload::load_all("../teal.modules.clinical", export_all = FALSE)
# Example below
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
teal_transform_module(
label = "New row",
ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
server = make_teal_transform_server(
substitute({
.var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
}, env = list(.var_to_replace = as.name(.var_to_replace)))
)
)
}
# Preparation of the test case - use `EOSDY` and `DCSREAS` variables to demonstrate missing data.
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl |>
mutate(
DTHFL = case_when(
!is.na(DTHDT) ~ "Y",
TRUE ~ ""
) %>% with_label("Subject Death Flag")
)
ADSL$EOSDY[1] <- NA_integer_
ADAE <- tmc_ex_adae
.add_event_flags <- function(dat) {
dat <- dat %>%
mutate(
TMPFL_SER = AESER == "Y",
TMPFL_REL = AEREL == "Y",
TMPFL_GR5 = AETOXGR == "5",
TMP_SMQ01 = !is.na(SMQ01NAM),
TMP_SMQ02 = !is.na(SMQ02NAM),
TMP_CQ01 = !is.na(CQ01NAM)
)
column_labels <- list(
TMPFL_SER = "Serious AE",
TMPFL_REL = "Related AE",
TMPFL_GR5 = "Grade 5 AE",
TMP_SMQ01 = aesi_label(dat[["SMQ01NAM"]], dat[["SMQ01SC"]]),
TMP_SMQ02 = aesi_label("Y.9.9.9.9/Z.9.9.9.9 AESI"),
TMP_CQ01 = aesi_label(dat[["CQ01NAM"]])
)
col_labels(dat)[names(column_labels)] <- as.character(column_labels)
dat
}
#' Generating user-defined event flags.
ADAE <- ADAE %>% .add_event_flags()
.ae_anl_vars <- names(ADAE)[startsWith(names(ADAE), "TMPFL_")]
.aesi_vars <- names(ADAE)[startsWith(names(ADAE), "TMP_")]
ADTTE <- tmc_ex_adtte
# responder
ADRS <- tmc_ex_adrs %>%
mutate(
AVALC = d_onco_rsp_label(AVALC) %>%
with_label("Character Result/Finding")
) %>%
filter(PARAMCD != "OVRINV" | AVISIT == "FOLLOW UP")
ADQS <- tmc_ex_adqs %>%
filter(ABLFL != "Y" & ABLFL2 != "Y") %>%
filter(AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 3 DAY 22")) %>%
mutate(
AVISIT = as.factor(AVISIT),
AVISITN = rank(AVISITN) %>%
as.factor() %>%
as.numeric() %>%
as.factor() #' making consecutive numeric factor
)
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADRS <- data[["ADRS"]]
app <- init(
data = data,
modules = modules(
# -------------------------------------------------------------------------
tm_a_mmrm(
label = "MMRM",
dataname = "ADQS",
aval_var = choices_selected(c("AVAL", "CHG"), "AVAL"),
id_var = choices_selected(c("USUBJID", "SUBJID"), "USUBJID"),
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
visit_var = choices_selected(c("AVISIT", "AVISITN"), "AVISIT"),
arm_ref_comp = arm_ref_comp,
paramcd = choices_selected(
choices = value_choices(data[["ADQS"]], "PARAMCD", "PARAM"),
selected = "FKSI-FWB"
),
cov_var = choices_selected(c("BASE", "AGE", "SEX", "BASE:AVISIT"), NULL)
, decorators = list(
lsmeans_table = insert_rrow_decorator("A", .var_to_replace = "lsmeans_table")
, lsmeans_plot = add_title_decorator("B", .var_to_replace = "lsmeans_plot")
, covariance_table = insert_rrow_decorator("C", .var_to_replace = "covariance_table")
, fixed_effects_table = insert_rrow_decorator("D", .var_to_replace = "fixed_effects_table")
, diagnostic_table = insert_rrow_decorator(.var_to_replace = "diagnostic_table")
, diagnostic_plot = add_title_decorator(.var_to_replace = "diagnostic_plot")
)
),
# -------------------------------------------------------------------------
tm_t_binary_outcome(
label = "Responders",
dataname = "ADRS",
paramcd = choices_selected(
choices = value_choices(ADRS, "PARAMCD", "PARAM"),
selected = "BESRSPI"
),
arm_var = choices_selected(
choices = variable_choices(ADRS, c("ARM", "ARMCD", "ACTARMCD")),
selected = "ARM"
),
arm_ref_comp = arm_ref_comp,
strata_var = choices_selected(
choices = variable_choices(ADRS, c("SEX", "BMRKR2", "RACE")),
selected = "RACE"
),
default_responses = list(
BESRSPI = list(
rsp = c("Complete Response (CR)", "Partial Response (PR)"),
levels = c(
"Complete Response (CR)", "Partial Response (PR)",
"Stable Disease (SD)", "Progressive Disease (PD)"
)
),
INVET = list(
rsp = c("Stable Disease (SD)", "Not Evaluable (NE)"),
levels = c(
"Complete Response (CR)", "Not Evaluable (NE)", "Partial Response (PR)",
"Progressive Disease (PD)", "Stable Disease (SD)"
)
),
OVRINV = list(
rsp = c("Progressive Disease (PD)", "Stable Disease (SD)"),
levels = c("Progressive Disease (PD)", "Stable Disease (SD)", "Not Evaluable (NE)")
)
),
decorators = list(insert_rrow_decorator("I am a new row"))
),
# -------------------------------------------------------------------------
tm_t_events_summary(
label = "Adverse Events Summary",
dataname = "ADAE",
arm_var = choices_selected(
choices = variable_choices("ADSL", c("ARM", "ARMCD")),
selected = "ARM"
),
flag_var_anl = choices_selected(
choices = variable_choices("ADAE", data[[".ae_anl_vars"]]),
selected = data[[".ae_anl_vars"]][1],
keep_order = TRUE,
fixed = FALSE
),
flag_var_aesi = choices_selected(
choices = variable_choices("ADAE", data[[".aesi_vars"]]),
selected = data[[".aesi_vars"]][1],
keep_order = TRUE,
fixed = FALSE
),
add_total = TRUE,
decorators = list(insert_rrow_decorator())
),
# -------------------------------------------------------------------------
tm_t_summary(
label = "Demographic Table",
dataname = "ADSL",
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
add_total = TRUE,
summarize_vars = choices_selected(
c("SEX", "RACE", "BMRKR2", "EOSDY", "DCSREAS", "AGE"),
c("SEX", "RACE")
),
useNA = "ifany",
decorators = list(insert_rrow_decorator())
)
)
) |> shiny::runApp()
```
---
R/tm_a_gee.R | 5 +++--
R/tm_g_barchart_simple.R | 6 ++++--
R/tm_g_ci.R | 6 ++++--
R/tm_g_forest_rsp.R | 6 ++++--
R/tm_g_forest_tte.R | 6 ++++--
R/tm_g_ipp.R | 6 ++++--
R/tm_g_km.R | 6 ++++--
R/tm_g_lineplot.R | 6 ++++--
R/tm_g_pp_adverse_events.R | 6 ++++--
R/tm_g_pp_patient_timeline.R | 6 ++++--
R/tm_g_pp_therapy.R | 6 ++++--
R/tm_g_pp_vitals.R | 6 ++++--
R/tm_t_abnormality.R | 5 +++--
R/tm_t_abnormality_by_worst_grade.R | 5 +++--
R/tm_t_ancova.R | 5 +++--
R/tm_t_binary_outcome.R | 7 +++----
R/tm_t_coxreg.R | 6 ++++--
R/tm_t_events.R | 5 +++--
R/tm_t_events_by_grade.R | 5 +++--
R/tm_t_events_patyear.R | 5 +++--
R/tm_t_events_summary.R | 6 ++++--
R/tm_t_mult_events.R | 5 +++--
R/tm_t_pp_basic_info.R | 1 +
R/tm_t_pp_prior_medication.R | 6 +++++-
R/tm_t_tte.R | 6 ++++--
25 files changed, 89 insertions(+), 49 deletions(-)
diff --git a/R/tm_a_gee.R b/R/tm_a_gee.R
index 0978d54ce..3a4d354f4 100644
--- a/R/tm_a_gee.R
+++ b/R/tm_a_gee.R
@@ -575,9 +575,10 @@ srv_gee <- function(id,
)
# Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -601,7 +602,7 @@ srv_gee <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_barchart_simple.R b/R/tm_g_barchart_simple.R
index 3ee21a061..6650fdfd0 100644
--- a/R/tm_g_barchart_simple.R
+++ b/R/tm_g_barchart_simple.R
@@ -565,9 +565,11 @@ srv_g_barchart_simple <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q_code())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q_code()))),
+ verbatim_content = source_code_r,
title = "Bar Chart"
)
@@ -586,7 +588,7 @@ srv_g_barchart_simple <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q_code())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_ci.R b/R/tm_g_ci.R
index 4295c231f..04a5f123c 100644
--- a/R/tm_g_ci.R
+++ b/R/tm_g_ci.R
@@ -488,9 +488,11 @@ srv_g_ci <- function(id,
# Outputs to render.
plot_r <- reactive(decorated_plot_q()[["plot"]])
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_plot_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_plot_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -517,7 +519,7 @@ srv_g_ci <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_plot_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_forest_rsp.R b/R/tm_g_forest_rsp.R
index 9cc32f7c6..bc9369bc1 100644
--- a/R/tm_g_forest_rsp.R
+++ b/R/tm_g_forest_rsp.R
@@ -790,9 +790,11 @@ srv_g_forest_rsp <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -811,7 +813,7 @@ srv_g_forest_rsp <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_forest_tte.R b/R/tm_g_forest_tte.R
index b0cca0af2..f70b0cfbc 100644
--- a/R/tm_g_forest_tte.R
+++ b/R/tm_g_forest_tte.R
@@ -720,9 +720,11 @@ srv_g_forest_tte <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = "R Code for the Current Time-to-Event Forest Plot"
)
@@ -741,7 +743,7 @@ srv_g_forest_tte <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_ipp.R b/R/tm_g_ipp.R
index 8b7216bce..3cd65e3b8 100644
--- a/R/tm_g_ipp.R
+++ b/R/tm_g_ipp.R
@@ -642,9 +642,11 @@ srv_g_ipp <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -663,7 +665,7 @@ srv_g_ipp <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_km.R b/R/tm_g_km.R
index 2a62aa018..e96d79aa1 100644
--- a/R/tm_g_km.R
+++ b/R/tm_g_km.R
@@ -839,9 +839,11 @@ srv_g_km <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -861,7 +863,7 @@ srv_g_km <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_lineplot.R b/R/tm_g_lineplot.R
index e57a0c318..9cead8485 100644
--- a/R/tm_g_lineplot.R
+++ b/R/tm_g_lineplot.R
@@ -686,9 +686,11 @@ srv_g_lineplot <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -707,7 +709,7 @@ srv_g_lineplot <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_pp_adverse_events.R b/R/tm_g_pp_adverse_events.R
index 2690f463f..674827b11 100644
--- a/R/tm_g_pp_adverse_events.R
+++ b/R/tm_g_pp_adverse_events.R
@@ -630,9 +630,11 @@ srv_g_adverse_events <- function(id,
c(decorated_all_q_table(), decorated_all_q_plot())
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -653,7 +655,7 @@ srv_g_adverse_events <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_pp_patient_timeline.R b/R/tm_g_pp_patient_timeline.R
index 73386dd72..a451c3663 100644
--- a/R/tm_g_pp_patient_timeline.R
+++ b/R/tm_g_pp_patient_timeline.R
@@ -940,9 +940,11 @@ srv_g_patient_timeline <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -961,7 +963,7 @@ srv_g_patient_timeline <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_pp_therapy.R b/R/tm_g_pp_therapy.R
index 5b08d137c..7a40b5088 100644
--- a/R/tm_g_pp_therapy.R
+++ b/R/tm_g_pp_therapy.R
@@ -735,9 +735,11 @@ srv_g_therapy <- function(id,
width = plot_width
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q_plot())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q_plot()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -758,7 +760,7 @@ srv_g_therapy <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q_plot())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_g_pp_vitals.R b/R/tm_g_pp_vitals.R
index 3321489ed..9598cb633 100644
--- a/R/tm_g_pp_vitals.R
+++ b/R/tm_g_pp_vitals.R
@@ -574,6 +574,8 @@ srv_g_vitals <- function(id,
)
plot_r <- reactive(decorated_all_q()[["plot"]])
+ # Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
pws <- teal.widgets::plot_with_settings_srv(
id = "vitals_plot",
plot_r = plot_r,
@@ -583,7 +585,7 @@ srv_g_vitals <- function(id,
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_all_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -602,7 +604,7 @@ srv_g_vitals <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_abnormality.R b/R/tm_t_abnormality.R
index c2955a09e..7874ca4df 100644
--- a/R/tm_t_abnormality.R
+++ b/R/tm_t_abnormality.R
@@ -673,9 +673,10 @@ srv_t_abnormality <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -694,7 +695,7 @@ srv_t_abnormality <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_abnormality_by_worst_grade.R b/R/tm_t_abnormality_by_worst_grade.R
index 1eac97568..2caca1588 100644
--- a/R/tm_t_abnormality_by_worst_grade.R
+++ b/R/tm_t_abnormality_by_worst_grade.R
@@ -693,9 +693,10 @@ srv_t_abnormality_by_worst_grade <- function(id, # nolint: object_length.
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -715,7 +716,7 @@ srv_t_abnormality_by_worst_grade <- function(id, # nolint: object_length.
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_ancova.R b/R/tm_t_ancova.R
index bdc71814c..16c4c56a9 100644
--- a/R/tm_t_ancova.R
+++ b/R/tm_t_ancova.R
@@ -971,9 +971,10 @@ srv_ancova <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -993,7 +994,7 @@ srv_ancova <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_binary_outcome.R b/R/tm_t_binary_outcome.R
index e1924bb11..f17f8d012 100644
--- a/R/tm_t_binary_outcome.R
+++ b/R/tm_t_binary_outcome.R
@@ -1025,11 +1025,10 @@ srv_t_binary_outcome <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_all_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive({
- teal.code::get_code(req(decorated_all_q()))
- }),
+ verbatim_content = source_code_r,
title = label
)
@@ -1048,7 +1047,7 @@ srv_t_binary_outcome <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_all_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_coxreg.R b/R/tm_t_coxreg.R
index e9507c438..5ad7fd125 100644
--- a/R/tm_t_coxreg.R
+++ b/R/tm_t_coxreg.R
@@ -1108,9 +1108,11 @@ srv_t_coxreg <- function(id,
table_r = table_r
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = "R Code for the Current (Multi-Variable) Cox proportional hazard regression model"
)
@@ -1129,7 +1131,7 @@ srv_t_coxreg <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_events.R b/R/tm_t_events.R
index 930c99b5c..496d9b338 100644
--- a/R/tm_t_events.R
+++ b/R/tm_t_events.R
@@ -838,9 +838,10 @@ srv_t_events_byterm <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -859,7 +860,7 @@ srv_t_events_byterm <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_events_by_grade.R b/R/tm_t_events_by_grade.R
index 29aacd14a..8e99ee1ac 100644
--- a/R/tm_t_events_by_grade.R
+++ b/R/tm_t_events_by_grade.R
@@ -1227,9 +1227,10 @@ srv_t_events_by_grade <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -1248,7 +1249,7 @@ srv_t_events_by_grade <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_events_patyear.R b/R/tm_t_events_patyear.R
index c85ada4bb..b42e92313 100644
--- a/R/tm_t_events_patyear.R
+++ b/R/tm_t_events_patyear.R
@@ -658,9 +658,10 @@ srv_events_patyear <- function(id,
)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -679,7 +680,7 @@ srv_events_patyear <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_events_summary.R b/R/tm_t_events_summary.R
index df8263adc..3ffa8b6f0 100644
--- a/R/tm_t_events_summary.R
+++ b/R/tm_t_events_summary.R
@@ -1034,9 +1034,11 @@ srv_t_events_summary <- function(id,
table_r = table_r
)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -1055,7 +1057,7 @@ srv_t_events_summary <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_mult_events.R b/R/tm_t_mult_events.R
index 1a564d4ab..4ba2dacb5 100644
--- a/R/tm_t_mult_events.R
+++ b/R/tm_t_mult_events.R
@@ -618,9 +618,10 @@ srv_t_mult_events_byterm <- function(id,
teal.widgets::table_with_settings_srv(id = "table", table_r = table_r)
# Render R code.
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -639,7 +640,7 @@ srv_t_mult_events_byterm <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
diff --git a/R/tm_t_pp_basic_info.R b/R/tm_t_pp_basic_info.R
index 7a6f2bcfa..609caddb1 100644
--- a/R/tm_t_pp_basic_info.R
+++ b/R/tm_t_pp_basic_info.R
@@ -297,6 +297,7 @@ srv_t_basic_info <- function(id,
)
)
+ # Render R code
source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
diff --git a/R/tm_t_pp_prior_medication.R b/R/tm_t_pp_prior_medication.R
index dfd75dc7f..ee502da99 100644
--- a/R/tm_t_pp_prior_medication.R
+++ b/R/tm_t_pp_prior_medication.R
@@ -391,7 +391,11 @@ srv_t_prior_medication <- function(id,
filter_panel_api = filter_panel_api
)
card$append_text("Table", "header3")
- card$append_table(table_r()$listing)
+ if (nrow(table_r()$listing) == 0L) {
+ card$append_text("No data available for table.")
+ } else {
+ card$append_table(table_r()$listing)
+ }
if (!comment == "") {
card$append_text("Comment", "header3")
card$append_text(comment)
diff --git a/R/tm_t_tte.R b/R/tm_t_tte.R
index 552689414..dd63cde12 100644
--- a/R/tm_t_tte.R
+++ b/R/tm_t_tte.R
@@ -971,9 +971,11 @@ srv_t_tte <- function(id,
teal.widgets::table_with_settings_srv(id = "table", table_r = table_r)
+ # Render R code
+ source_code_r <- reactive(teal.code::get_code(req(decorated_table_q())))
teal.widgets::verbatim_popup_srv(
id = "rcode",
- verbatim_content = reactive(teal.code::get_code(req(decorated_table_q()))),
+ verbatim_content = source_code_r,
title = label
)
@@ -992,7 +994,7 @@ srv_t_tte <- function(id,
card$append_text("Comment", "header3")
card$append_text(comment)
}
- card$append_src(teal.code::get_code(req(decorated_table_q())))
+ card$append_src(source_code_r())
card
}
teal.reporter::simple_reporter_srv("simple_reporter", reporter = reporter, card_fun = card_fun)
From 1db24ad1b44da074e26b2fe7c0bf10c50d3c9749 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 17 Dec 2024 11:24:52 +0000
Subject: [PATCH 84/86] fix: remove rlang usage
---
R/tm_a_mmrm.R | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/R/tm_a_mmrm.R b/R/tm_a_mmrm.R
index 02b18b96f..5b784a5ab 100644
--- a/R/tm_a_mmrm.R
+++ b/R/tm_a_mmrm.R
@@ -1468,8 +1468,8 @@ srv_mmrm <- function(id,
})
decorated_tables_q <- lapply(
- rlang::set_names(
- c("lsmeans_table", "diagnostic_table", "fixed_effects_table", "covariance_table")
+ stats::setNames(
+ nm = c("lsmeans_table", "diagnostic_table", "fixed_effects_table", "covariance_table")
),
function(output_function) {
srv_decorate_teal_data(
@@ -1485,7 +1485,7 @@ srv_mmrm <- function(id,
decorated_objs_q <- c(
decorated_tables_q,
lapply(
- rlang::set_names(c("lsmeans_plot", "diagnostic_plot")),
+ setNames(nm = c("lsmeans_plot", "diagnostic_plot")),
function(output_function) {
srv_decorate_teal_data(
id = sprintf("d_%s", output_function),
From 19e87525899cc1d8c15de658b8a0331438e4e2ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 17 Dec 2024 12:39:43 +0000
Subject: [PATCH 85/86] Decorators: Accepts new snapshot from
`testthat::test()` (#1304)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Pull Request
Part of
https://github.com/insightsengineering/teal/issues/1371#issue-2575079391
### Changes description
- Tracks changes in the template code of the decorators feature branch
- Renames variables to be `plot`, `table` or (in case of multiple
decoratable elements) `_plot` and `_table`
### Workflow
Manually triggered:
https://github.com/insightsengineering/teal.modules.clinical/actions/runs/12359120026
[![Check
🛠](https://github.com/insightsengineering/teal.modules.clinical/actions/workflows/check.yaml/badge.svg?branch=snapshots%401187_decorate_output%40main)](https://github.com/insightsengineering/teal.modules.clinical/actions/workflows/check.yaml)
---
tests/testthat/_snaps/tm_a_gee.md | 26 +++++------
tests/testthat/_snaps/tm_a_mmrm.md | 10 ++--
tests/testthat/_snaps/tm_g_ci.md | 12 ++---
tests/testthat/_snaps/tm_g_forest_rsp.md | 4 +-
tests/testthat/_snaps/tm_g_forest_tte.md | 4 +-
tests/testthat/_snaps/tm_g_km.md | 3 --
tests/testthat/_snaps/tm_g_lineplot.md | 2 -
tests/testthat/_snaps/tm_t_abnormality.md | 9 ++--
.../_snaps/tm_t_abnormality_by_worst_grade.md | 6 +--
tests/testthat/_snaps/tm_t_ancova.md | 21 +++------
tests/testthat/_snaps/tm_t_binary_outcome.md | 21 +++------
tests/testthat/_snaps/tm_t_coxreg.md | 7 ++-
tests/testthat/_snaps/tm_t_events.md | 46 +++++++++----------
tests/testthat/_snaps/tm_t_events_by_grade.md | 8 ----
tests/testthat/_snaps/tm_t_events_patyear.md | 9 ++--
tests/testthat/_snaps/tm_t_events_summary.md | 16 +++----
tests/testthat/_snaps/tm_t_exposure.md | 12 ++---
tests/testthat/_snaps/tm_t_logisitic.md | 9 ++--
tests/testthat/_snaps/tm_t_mult_events.md | 18 +++-----
.../_snaps/tm_t_pp_medical_history.md | 5 +-
tests/testthat/_snaps/tm_t_shift_by_arm.md | 9 ++--
.../_snaps/tm_t_shift_by_arm_by_worst.md | 9 ++--
tests/testthat/_snaps/tm_t_shift_by_grade.md | 6 +--
tests/testthat/_snaps/tm_t_smq.md | 6 +--
tests/testthat/_snaps/tm_t_summary.md | 18 +++-----
tests/testthat/_snaps/tm_t_summary_by.md | 15 ++----
tests/testthat/_snaps/tm_t_tte.md | 4 --
27 files changed, 118 insertions(+), 197 deletions(-)
diff --git a/tests/testthat/_snaps/tm_a_gee.md b/tests/testthat/_snaps/tm_a_gee.md
index 54b672ec8..d081d2600 100644
--- a/tests/testthat/_snaps/tm_a_gee.md
+++ b/tests/testthat/_snaps/tm_a_gee.md
@@ -13,9 +13,9 @@
$table
{
- result_table <- tern.gee::as.rtable(model_fit, type = "cov")
- subtitles(result_table) <- NULL
- main_footer(result_table) <- NULL
+ table <- tern.gee::as.rtable(model_fit, type = "cov")
+ subtitles(table) <- NULL
+ main_footer(table) <- NULL
}
@@ -34,9 +34,9 @@
$table
{
- result_table <- tern.gee::as.rtable(data.frame(Coefficient = model_fit$coefficients))
- subtitles(result_table) <- NULL
- main_footer(result_table) <- NULL
+ table <- tern.gee::as.rtable(data.frame(Coefficient = model_fit$coefficients))
+ subtitles(table) <- NULL
+ main_footer(table) <- NULL
}
@@ -56,13 +56,12 @@
$table
{
lsmeans_fit_model <- tern.gee::lsmeans(model_fit, 0.95)
- result_table <- rtables::basic_table(show_colcounts = TRUE) %>%
+ table <- rtables::basic_table(show_colcounts = TRUE) %>%
rtables::split_cols_by(var = "ARM", ref_group = model_fit$ref_level) %>%
tern.gee::summarize_gee_logistic() %>% rtables::build_table(df = lsmeans_fit_model,
alt_counts_df = ANL_ADSL)
- subtitles(result_table) <- NULL
- main_footer(result_table) <- NULL
- result_table
+ subtitles(table) <- NULL
+ main_footer(table) <- NULL
}
@@ -82,13 +81,12 @@
$table
{
lsmeans_fit_model <- tern.gee::lsmeans(model_fit, 0.95)
- result_table <- rtables::basic_table(show_colcounts = TRUE) %>%
+ table <- rtables::basic_table(show_colcounts = TRUE) %>%
rtables::split_cols_by(var = "ARM", ref_group = model_fit$ref_level) %>%
tern.gee::summarize_gee_logistic() %>% rtables::build_table(df = lsmeans_fit_model,
alt_counts_df = ANL_ADSL)
- subtitles(result_table) <- NULL
- main_footer(result_table) <- NULL
- result_table
+ subtitles(table) <- NULL
+ main_footer(table) <- NULL
}
diff --git a/tests/testthat/_snaps/tm_a_mmrm.md b/tests/testthat/_snaps/tm_a_mmrm.md
index f03e7915f..f48062007 100644
--- a/tests/testthat/_snaps/tm_a_mmrm.md
+++ b/tests/testthat/_snaps/tm_a_mmrm.md
@@ -62,9 +62,8 @@
$cov_matrix
{
- cov_matrix <- tern.mmrm::as.rtable(fit_mmrm, type = "cov")
- subtitles(cov_matrix) <- NULL
- cov_matrix
+ covariance_table <- tern.mmrm::as.rtable(fit_mmrm, type = "cov")
+ subtitles(covariance_table) <- NULL
}
@@ -80,9 +79,8 @@
$cov_matrix
{
- cov_matrix <- tern.mmrm::as.rtable(fit_mmrm, type = "cov")
- subtitles(cov_matrix) <- NULL
- cov_matrix
+ covariance_table <- tern.mmrm::as.rtable(fit_mmrm, type = "cov")
+ subtitles(covariance_table) <- NULL
}
diff --git a/tests/testthat/_snaps/tm_g_ci.md b/tests/testthat/_snaps/tm_g_ci.md
index 87b69c425..6c394bdc1 100644
--- a/tests/testthat/_snaps/tm_g_ci.md
+++ b/tests/testthat/_snaps/tm_g_ci.md
@@ -4,7 +4,7 @@
res
Output
{
- gg <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
+ plot <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
y = AVAL, color = SEX, lty = SEX, shape = SEX)) + ggplot2::stat_summary(fun.data = stat_mean_ci,
geom = "errorbar", width = 0.1, position = ggplot2::position_dodge(width = 0.5)) +
ggplot2::stat_summary(fun = mean, geom = "point", position = ggplot2::position_dodge(width = 0.5)) +
@@ -12,7 +12,6 @@
caption = "Mean and 95% CIs for mean are displayed.",
x = "Treatment Group", y = "Value", color = "", lty = "",
shape = "")
- print(gg)
}
# 3. Confidence Interval Plot (using different stratification variable)
@@ -21,7 +20,7 @@
res
Output
{
- gg <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
+ plot <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
y = AVAL, color = STRATA2, lty = STRATA2, shape = STRATA2)) +
ggplot2::stat_summary(fun.data = stat_mean_ci, geom = "errorbar",
width = 0.1, position = ggplot2::position_dodge(width = 0.5)) +
@@ -30,7 +29,6 @@
caption = "Mean and 95% CIs for mean are displayed.",
x = "Treatment Group", y = "Value", color = "", lty = "",
shape = "")
- print(gg)
}
# 4. Median and 95% CIs for median
@@ -39,7 +37,7 @@
res
Output
{
- gg <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
+ plot <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
y = AVAL, color = STRATA1, lty = STRATA1, shape = STRATA1)) +
ggplot2::stat_summary(fun.data = stat_median_ci, geom = "errorbar",
width = 0.1, position = ggplot2::position_dodge(width = 0.5)) +
@@ -48,7 +46,6 @@
caption = "Median and 95% CIs for median are displayed.",
x = "Treatment Group", y = "Value", color = "", lty = "",
shape = "")
- print(gg)
}
# 5. Using different alpha level
@@ -57,7 +54,7 @@
res
Output
{
- gg <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
+ plot <- ggplot2::ggplot(data = ANL, mapping = ggplot2::aes(x = ARMCD,
y = AVAL, color = SEX, lty = SEX, shape = SEX)) + ggplot2::stat_summary(fun.data = function(x) stat_mean_ci(x,
conf_level = 0.9), geom = "errorbar", width = 0.1, position = ggplot2::position_dodge(width = 0.5)) +
ggplot2::stat_summary(fun = mean, geom = "point", position = ggplot2::position_dodge(width = 0.5)) +
@@ -65,6 +62,5 @@
caption = "Mean and 90% CIs for mean are displayed.",
x = "Treatment Group", y = "Value", color = "", lty = "",
shape = "")
- print(gg)
}
diff --git a/tests/testthat/_snaps/tm_g_forest_rsp.md b/tests/testthat/_snaps/tm_g_forest_rsp.md
index 5a9daf5d7..8a238a190 100644
--- a/tests/testthat/_snaps/tm_g_forest_rsp.md
+++ b/tests/testthat/_snaps/tm_g_forest_rsp.md
@@ -35,7 +35,7 @@
as_list = TRUE)
$plot[[2]]
- p <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Best Overall Response for "),
+ plot <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Best Overall Response for "),
f[["plot"]] + ggplot2::labs(caption = ""), align = "h", axis = "tblr",
rel_widths = c(1 - 0.25, 0.25))
@@ -80,7 +80,7 @@
as_list = TRUE)
$plot[[2]]
- p <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Best Overall Response for "),
+ plot <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Best Overall Response for "),
f[["plot"]] + ggplot2::labs(caption = ""), align = "h", axis = "tblr",
rel_widths = c(1 - 0.25, 0.25))
diff --git a/tests/testthat/_snaps/tm_g_forest_tte.md b/tests/testthat/_snaps/tm_g_forest_tte.md
index f7bcf257a..2f1c7e5b7 100644
--- a/tests/testthat/_snaps/tm_g_forest_tte.md
+++ b/tests/testthat/_snaps/tm_g_forest_tte.md
@@ -38,7 +38,7 @@
as_list = TRUE)
$plot[[2]]
- p <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Survival Duration for \nStratified by STRATA2",
+ plot <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Survival Duration for \nStratified by STRATA2",
subtitle = NULL), f[["plot"]] + ggplot2::labs(caption = ""),
align = "h", axis = "tblr", rel_widths = c(1 - 0.25, 0.25))
@@ -85,7 +85,7 @@
as_list = TRUE)
$plot[[2]]
- p <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Survival Duration for \nStratified by STRATA2",
+ plot <- cowplot::plot_grid(f[["table"]] + ggplot2::labs(title = "Forest Plot of Survival Duration for \nStratified by STRATA2",
subtitle = NULL), f[["plot"]] + ggplot2::labs(caption = ""),
align = "h", axis = "tblr", rel_widths = c(1 - 0.25, 0.25))
diff --git a/tests/testthat/_snaps/tm_g_km.md b/tests/testthat/_snaps/tm_g_km.md
index 06fbb48cf..8011eba33 100644
--- a/tests/testthat/_snaps/tm_g_km.md
+++ b/tests/testthat/_snaps/tm_g_km.md
@@ -52,7 +52,6 @@
g_km_counter <- g_km_counter_generator()
plot_list <- lapply(anl, g_km_counter)
plot <- cowplot::plot_grid(plotlist = plot_list, ncol = 1)
- plot
}
@@ -114,7 +113,6 @@
g_km_counter <- g_km_counter_generator()
plot_list <- lapply(anl, g_km_counter)
plot <- cowplot::plot_grid(plotlist = plot_list, ncol = 1)
- plot
}
@@ -177,7 +175,6 @@
g_km_counter <- g_km_counter_generator()
plot_list <- lapply(anl, g_km_counter)
plot <- cowplot::plot_grid(plotlist = plot_list, ncol = 1)
- plot
}
diff --git a/tests/testthat/_snaps/tm_g_lineplot.md b/tests/testthat/_snaps/tm_g_lineplot.md
index 82e7977b3..ac91769eb 100644
--- a/tests/testthat/_snaps/tm_g_lineplot.md
+++ b/tests/testthat/_snaps/tm_g_lineplot.md
@@ -24,7 +24,6 @@
legend_title = NULL, ggtheme = ggplot2::theme_minimal(),
control = control_analyze_vars(conf_level = 0.95), subtitle_add_paramcd = FALSE,
subtitle_add_unit = FALSE)
- plot
}
@@ -54,7 +53,6 @@
legend_title = NULL, ggtheme = ggplot2::theme_minimal(),
control = control_analyze_vars(conf_level = 0.9), subtitle_add_paramcd = FALSE,
subtitle_add_unit = FALSE)
- plot
}
diff --git a/tests/testthat/_snaps/tm_t_abnormality.md b/tests/testthat/_snaps/tm_t_abnormality.md
index 7218f4dab..711f3d7e2 100644
--- a/tests/testthat/_snaps/tm_t_abnormality.md
+++ b/tests/testthat/_snaps/tm_t_abnormality.md
@@ -38,9 +38,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
rtables::prune_table()
- result
}
@@ -83,9 +82,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
rtables::prune_table()
- result
}
@@ -129,9 +127,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
rtables::prune_table()
- result
}
diff --git a/tests/testthat/_snaps/tm_t_abnormality_by_worst_grade.md b/tests/testthat/_snaps/tm_t_abnormality_by_worst_grade.md
index eb4b9b8f3..206160d2e 100644
--- a/tests/testthat/_snaps/tm_t_abnormality_by_worst_grade.md
+++ b/tests/testthat/_snaps/tm_t_abnormality_by_worst_grade.md
@@ -40,8 +40,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -87,8 +86,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = myadsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = myadsl)
}
diff --git a/tests/testthat/_snaps/tm_t_ancova.md b/tests/testthat/_snaps/tm_t_ancova.md
index c465073a7..15ff96368 100644
--- a/tests/testthat/_snaps/tm_t_ancova.md
+++ b/tests/testthat/_snaps/tm_t_ancova.md
@@ -30,8 +30,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
}
@@ -68,8 +67,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
}
@@ -107,8 +105,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
}
@@ -148,8 +145,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
}
@@ -187,8 +183,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
}
@@ -225,8 +220,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
}
@@ -263,8 +257,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = adqs, alt_counts_df = adsl)
}
diff --git a/tests/testthat/_snaps/tm_t_binary_outcome.md b/tests/testthat/_snaps/tm_t_binary_outcome.md
index 4e425de8d..100f127cf 100644
--- a/tests/testthat/_snaps/tm_t_binary_outcome.md
+++ b/tests/testthat/_snaps/tm_t_binary_outcome.md
@@ -31,8 +31,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -68,8 +67,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
}
@@ -96,8 +94,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
}
@@ -141,8 +138,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
}
@@ -182,8 +178,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
}
@@ -211,8 +206,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ADSL)
}
@@ -270,8 +264,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
diff --git a/tests/testthat/_snaps/tm_t_coxreg.md b/tests/testthat/_snaps/tm_t_coxreg.md
index aacb9470f..35b47c9a5 100644
--- a/tests/testthat/_snaps/tm_t_coxreg.md
+++ b/tests/testthat/_snaps/tm_t_coxreg.md
@@ -25,7 +25,7 @@
"hr", "ci", "pval"), na_str = "")
$table
- result <- rtables::build_table(lyt = lyt, df = anl)
+ table <- rtables::build_table(lyt = lyt, df = anl)
# template_coxreg generates correct univariate cox regression expressions with interactions
@@ -55,7 +55,7 @@
"hr", "ci", "pval", "pval_inter"), na_str = "")
$table
- result <- rtables::build_table(lyt = lyt, df = anl)
+ table <- rtables::build_table(lyt = lyt, df = anl)
# template_coxreg generates correct multivariate cox regression expressions
@@ -85,8 +85,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl)
}
diff --git a/tests/testthat/_snaps/tm_t_events.md b/tests/testthat/_snaps/tm_t_events.md
index 7e9f4302a..a99064ad7 100644
--- a/tests/testthat/_snaps/tm_t_events.md
+++ b/tests/testthat/_snaps/tm_t_events.md
@@ -34,21 +34,21 @@
append_varlabels(adae, "AEDECOD", indent = 1L)
$table
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
$prune
{
- pruned_result <- result %>% rtables::prune_table()
+ pruned_result <- rtables::prune_table(table)
}
$sort
{
- idx_split_col <- which(sapply(col_paths(result), tail, 1) ==
+ idx_split_col <- which(sapply(col_paths(table), tail, 1) ==
"All Patients")
pruned_and_sorted_result <- pruned_result %>% sort_at_path(path = c("AEBODSYS"),
scorefun = cont_n_onecol(idx_split_col)) %>% sort_at_path(path = c("AEBODSYS",
"*", "AEDECOD"), scorefun = score_occurrences_cols(col_indices = seq(1,
- ncol(result))))
+ ncol(table))))
pruned_and_sorted_result
}
@@ -94,21 +94,21 @@
append_varlabels(adae, "AEDECOD", indent = 1L)
$table
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
$prune
{
- pruned_result <- result %>% rtables::prune_table()
+ pruned_result <- rtables::prune_table(table)
}
$sort
{
- idx_split_col <- which(sapply(col_paths(result), tail, 1) ==
+ idx_split_col <- which(sapply(col_paths(table), tail, 1) ==
"All Patients")
pruned_and_sorted_result <- pruned_result %>% sort_at_path(path = c("AEBODSYS"),
scorefun = cont_n_onecol(idx_split_col)) %>% sort_at_path(path = c("AEBODSYS",
"*", "AEDECOD"), scorefun = score_occurrences_cols(col_indices = seq(1,
- ncol(result))))
+ ncol(table))))
pruned_and_sorted_result
}
@@ -138,16 +138,16 @@
append_varlabels(adcm, "CMDECOD")
$table
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
$prune
{
- pruned_result <- result %>% rtables::prune_table()
+ pruned_result <- rtables::prune_table(table)
}
$sort
{
- idx_split_col <- which(sapply(col_paths(result), tail, 1) ==
+ idx_split_col <- which(sapply(col_paths(table), tail, 1) ==
"All Patients")
pruned_and_sorted_result <- pruned_result %>% sort_at_path(path = c("CMDECOD"),
scorefun = score_occurrences)
@@ -193,11 +193,11 @@
append_varlabels(adae, "AEDECOD", indent = 1L)
$table
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
$prune
{
- pruned_result <- result %>% rtables::prune_table()
+ pruned_result <- rtables::prune_table(table)
}
$sort
@@ -243,12 +243,12 @@
append_varlabels(adae, "AEDECOD", indent = 1L)
$table
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
$prune
{
- pruned_result <- result %>% rtables::prune_table()
- col_indices <- 1:(ncol(result) - TRUE)
+ pruned_result <- rtables::prune_table(table)
+ col_indices <- 1:(ncol(table) - TRUE)
row_condition <- has_fraction_in_any_col(atleast = 0.4, col_indices = col_indices) &
has_fractions_difference(atleast = 0.1, col_indices = col_indices)
pruned_result <- pruned_result %>% rtables::prune_table(keep_rows(row_condition))
@@ -256,12 +256,12 @@
$sort
{
- idx_split_col <- which(sapply(col_paths(result), tail, 1) ==
+ idx_split_col <- which(sapply(col_paths(table), tail, 1) ==
"All Patients")
pruned_and_sorted_result <- pruned_result %>% sort_at_path(path = c("AEBODSYS"),
scorefun = cont_n_onecol(idx_split_col)) %>% sort_at_path(path = c("AEBODSYS",
"*", "AEDECOD"), scorefun = score_occurrences_cols(col_indices = seq(1,
- ncol(result))))
+ ncol(table))))
criteria_fun <- function(tr) {
inherits(tr, "ContentRow")
}
@@ -312,12 +312,12 @@
append_varlabels(adae, "AEDECOD", indent = 1L)
$table
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
$prune
{
- pruned_result <- result %>% rtables::prune_table()
- col_indices <- 1:(ncol(result) - TRUE)
+ pruned_result <- rtables::prune_table(table)
+ col_indices <- 1:(ncol(table) - TRUE)
row_condition <- has_fraction_in_any_col(atleast = 0.4, col_indices = col_indices) &
has_fractions_difference(atleast = 0.1, col_indices = col_indices)
pruned_result <- pruned_result %>% rtables::prune_table(keep_rows(row_condition))
@@ -325,12 +325,12 @@
$sort
{
- idx_split_col <- which(sapply(col_paths(result), tail, 1) ==
+ idx_split_col <- which(sapply(col_paths(table), tail, 1) ==
"All Patients")
pruned_and_sorted_result <- pruned_result %>% sort_at_path(path = c("AEBODSYS"),
scorefun = cont_n_onecol(idx_split_col)) %>% sort_at_path(path = c("AEBODSYS",
"*", "AEDECOD"), scorefun = score_occurrences_cols(col_indices = seq(1,
- ncol(result))))
+ ncol(table))))
criteria_fun <- function(tr) {
inherits(tr, "ContentRow")
}
diff --git a/tests/testthat/_snaps/tm_t_events_by_grade.md b/tests/testthat/_snaps/tm_t_events_by_grade.md
index c16269577..030113353 100644
--- a/tests/testthat/_snaps/tm_t_events_by_grade.md
+++ b/tests/testthat/_snaps/tm_t_events_by_grade.md
@@ -50,7 +50,6 @@
1), decreasing = TRUE) %>% sort_at_path(path = c("AEBODSYS",
"*", "AEDECOD"), scorefun = cont_n_onecol(length(levels(adsl$ACTARM)) +
1), decreasing = TRUE)
- pruned_and_sorted_result
}
@@ -110,7 +109,6 @@
1), decreasing = TRUE) %>% sort_at_path(path = c("AEBODSYS",
"*", "AEDECOD"), scorefun = cont_n_onecol(length(levels(adsl$ACTARM)) +
1), decreasing = TRUE)
- pruned_and_sorted_result
}
@@ -162,7 +160,6 @@
pruned_and_sorted_result <- pruned_result %>% sort_at_path(path = "AEBODSYS",
scorefun = cont_n_allcols, decreasing = TRUE) %>% sort_at_path(path = c("AEBODSYS",
"*", "AEDECOD"), scorefun = cont_n_allcols, decreasing = TRUE)
- pruned_and_sorted_result
}
@@ -212,7 +209,6 @@
pruned_and_sorted_result <- pruned_result %>% sort_at_path(path = "AEBODSYS",
scorefun = cont_n_onecol(length(levels(adsl$ACTARM)) +
1), decreasing = TRUE)
- pruned_and_sorted_result
}
@@ -279,7 +275,6 @@
col_indices = col_indices)
pruned_and_sorted_result <- sorted_result %>% rtables::trim_rows(criteria = criteria_fun) %>%
rtables::prune_table(keep_rows(at_least_percent_any))
- pruned_and_sorted_result
}
@@ -341,7 +336,6 @@
col_indices = col_indices)
pruned_and_sorted_result <- sorted_result %>% rtables::trim_rows(criteria = criteria_fun) %>%
rtables::prune_table(keep_rows(at_least_percent_any))
- pruned_and_sorted_result
}
@@ -401,7 +395,6 @@
col_indices = col_indices)
pruned_and_sorted_result <- sorted_result %>% rtables::trim_rows(criteria = criteria_fun) %>%
rtables::prune_table(keep_rows(at_least_percent_any))
- pruned_and_sorted_result
}
@@ -460,7 +453,6 @@
col_indices = col_indices)
pruned_and_sorted_result <- sorted_result %>% rtables::trim_rows(criteria = criteria_fun) %>%
rtables::prune_table(keep_rows(at_least_percent_any))
- pruned_and_sorted_result
}
diff --git a/tests/testthat/_snaps/tm_t_events_patyear.md b/tests/testthat/_snaps/tm_t_events_patyear.md
index b6ef72e88..fbaa31bcf 100644
--- a/tests/testthat/_snaps/tm_t_events_patyear.md
+++ b/tests/testthat/_snaps/tm_t_events_patyear.md
@@ -23,8 +23,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -52,8 +51,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -87,8 +85,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
diff --git a/tests/testthat/_snaps/tm_t_events_summary.md b/tests/testthat/_snaps/tm_t_events_summary.md
index 6a7334d7b..4e13d750b 100644
--- a/tests/testthat/_snaps/tm_t_events_summary.md
+++ b/tests/testthat/_snaps/tm_t_events_summary.md
@@ -28,7 +28,7 @@
.formats = c(count_fraction = format_count_fraction), denom = "N_col")
$table_parent
- result_parent <- rtables::build_table(lyt = lyt_parent, df = adsl,
+ table_parent <- rtables::build_table(lyt = lyt_parent, df = adsl,
alt_counts_df = adsl)
$layout_anl
@@ -41,12 +41,12 @@
.labels = c(count = "Total AEs"), table_names = "total_aes")
$table_anl
- result_anl <- rtables::build_table(lyt = lyt_anl, df = anl, alt_counts_df = adsl)
+ table_anl <- rtables::build_table(lyt = lyt_anl, df = anl, alt_counts_df = adsl)
$table
{
- rtables::col_info(result_parent) <- rtables::col_info(result_anl)
- result <- rtables::rbind(result_anl, result_parent)
+ rtables::col_info(table_parent) <- rtables::col_info(table_anl)
+ table <- rtables::rbind(table_anl, table_parent)
}
@@ -79,7 +79,7 @@
rtables::split_cols_by(var = "ARM") %>% rtables::add_overall_col(label = "All Patients")
$table_parent
- result_parent <- rtables::build_table(lyt = lyt_parent, df = adsl,
+ table_parent <- rtables::build_table(lyt = lyt_parent, df = adsl,
alt_counts_df = adsl)
$layout_anl
@@ -114,12 +114,12 @@
show_labels = "visible")
$table_anl
- result_anl <- rtables::build_table(lyt = lyt_anl, df = anl, alt_counts_df = adsl)
+ table_anl <- rtables::build_table(lyt = lyt_anl, df = anl, alt_counts_df = adsl)
$table
{
- rtables::col_info(result_parent) <- rtables::col_info(result_anl)
- result <- rtables::rbind(result_anl[1:2, ], result_anl[3:nrow(result_anl),
+ rtables::col_info(table_parent) <- rtables::col_info(table_anl)
+ table <- rtables::rbind(table_anl[1:2, ], table_anl[3:nrow(table_anl),
])
}
diff --git a/tests/testthat/_snaps/tm_t_exposure.md b/tests/testthat/_snaps/tm_t_exposure.md
index f436b5704..02f54739b 100644
--- a/tests/testthat/_snaps/tm_t_exposure.md
+++ b/tests/testthat/_snaps/tm_t_exposure.md
@@ -26,8 +26,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- rtables::prune_table(result)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::prune_table(table)
}
@@ -59,8 +59,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = myadsl)
- rtables::prune_table(result)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = myadsl)
+ table <- rtables::prune_table(table)
}
@@ -92,8 +92,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- rtables::prune_table(result)
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
+ table <- rtables::prune_table(table)
}
diff --git a/tests/testthat/_snaps/tm_t_logisitic.md b/tests/testthat/_snaps/tm_t_logisitic.md
index 9a1a99a81..e4e7ecae2 100644
--- a/tests/testthat/_snaps/tm_t_logisitic.md
+++ b/tests/testthat/_snaps/tm_t_logisitic.md
@@ -27,10 +27,9 @@
$table
{
- result <- rtables::basic_table(title = "Summary of Logistic Regression Analysis for Best Confirmed Overall Response by Investigator for CR Responders") %>%
+ table <- rtables::basic_table(title = "Summary of Logistic Regression Analysis for Best Confirmed Overall Response by Investigator for CR Responders") %>%
summarize_logistic(conf_level = 0.95, drop_and_remove_str = "_NA_") %>%
rtables::append_topleft("BESRSPI") %>% rtables::build_table(df = mod)
- result
}
@@ -63,10 +62,9 @@
$table
{
- result <- rtables::basic_table(title = "Summary of Logistic Regression Analysis for Best Confirmed Overall Response by Investigator for CR Responders") %>%
+ table <- rtables::basic_table(title = "Summary of Logistic Regression Analysis for Best Confirmed Overall Response by Investigator for CR Responders") %>%
summarize_logistic(conf_level = 0.95, drop_and_remove_str = "_NA_") %>%
rtables::append_topleft("BESRSPI") %>% rtables::build_table(df = mod)
- result
}
@@ -88,10 +86,9 @@
$table
{
- result <- rtables::basic_table(title = "Summary of Logistic Regression Analysis for Best Confirmed Overall Response by Investigator for CR Responders") %>%
+ table <- rtables::basic_table(title = "Summary of Logistic Regression Analysis for Best Confirmed Overall Response by Investigator for CR Responders") %>%
summarize_logistic(conf_level = 0.95, drop_and_remove_str = "_NA_") %>%
rtables::append_topleft("BESRSPI") %>% rtables::build_table(df = mod)
- result
}
diff --git a/tests/testthat/_snaps/tm_t_mult_events.md b/tests/testthat/_snaps/tm_t_mult_events.md
index fbf4492a7..0a825e6cb 100644
--- a/tests/testthat/_snaps/tm_t_mult_events.md
+++ b/tests/testthat/_snaps/tm_t_mult_events.md
@@ -43,8 +43,7 @@
$final_table
{
- result <- sorted_result
- result
+ table <- sorted_result
}
@@ -95,8 +94,7 @@
$final_table
{
- result <- sorted_result
- result
+ table <- sorted_result
}
@@ -151,8 +149,7 @@
$final_table
{
- result <- sorted_result
- result
+ table <- sorted_result
}
@@ -211,8 +208,7 @@
$final_table
{
- result <- sorted_result
- result
+ table <- sorted_result
}
@@ -256,8 +252,7 @@
$final_table
{
- result <- sorted_result
- result
+ table <- sorted_result
}
@@ -306,8 +301,7 @@
$final_table
{
- result <- sorted_result
- result
+ table <- sorted_result
}
diff --git a/tests/testthat/_snaps/tm_t_pp_medical_history.md b/tests/testthat/_snaps/tm_t_pp_medical_history.md
index 50a9a80d2..997603bcc 100644
--- a/tests/testthat/_snaps/tm_t_pp_medical_history.md
+++ b/tests/testthat/_snaps/tm_t_pp_medical_history.md
@@ -11,12 +11,11 @@
dplyr::arrange(mhbodsys) %>% dplyr::mutate_if(is.character,
as.factor) %>% dplyr::mutate_if(is.factor, function(x) explicit_na(x,
"UNKNOWN")) %>% dplyr::distinct() %>% `colnames<-`(labels)
- result <- rtables::basic_table() %>% rtables::split_cols_by_multivar(colnames(result_raw)[2:3]) %>%
+ table <- rtables::basic_table() %>% rtables::split_cols_by_multivar(colnames(result_raw)[2:3]) %>%
rtables::split_rows_by(colnames(result_raw)[1], split_fun = rtables::drop_split_levels) %>%
rtables::split_rows_by(colnames(result_raw)[2], split_fun = rtables::drop_split_levels,
child_labels = "hidden") %>% rtables::analyze_colvars(function(x) x[seq_along(x)]) %>%
rtables::build_table(result_raw)
- main_title(result) <- paste("Patient ID:", NULL)
- result
+ main_title(table) <- paste("Patient ID:", NULL)
}
diff --git a/tests/testthat/_snaps/tm_t_shift_by_arm.md b/tests/testthat/_snaps/tm_t_shift_by_arm.md
index 31e8c262d..b37651019 100644
--- a/tests/testthat/_snaps/tm_t_shift_by_arm.md
+++ b/tests/testthat/_snaps/tm_t_shift_by_arm.md
@@ -22,8 +22,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adeg)
- result
+ table <- rtables::build_table(lyt = lyt, df = adeg)
}
@@ -51,8 +50,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adeg)
- result
+ table <- rtables::build_table(lyt = lyt, df = adeg)
}
@@ -80,8 +78,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adeg)
- result
+ table <- rtables::build_table(lyt = lyt, df = adeg)
}
diff --git a/tests/testthat/_snaps/tm_t_shift_by_arm_by_worst.md b/tests/testthat/_snaps/tm_t_shift_by_arm_by_worst.md
index 137032875..c219c2245 100644
--- a/tests/testthat/_snaps/tm_t_shift_by_arm_by_worst.md
+++ b/tests/testthat/_snaps/tm_t_shift_by_arm_by_worst.md
@@ -22,8 +22,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adeg)
- result
+ table <- rtables::build_table(lyt = lyt, df = adeg)
}
@@ -52,8 +51,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adeg)
- result
+ table <- rtables::build_table(lyt = lyt, df = adeg)
}
@@ -81,8 +79,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = adeg)
- result
+ table <- rtables::build_table(lyt = lyt, df = adeg)
}
diff --git a/tests/testthat/_snaps/tm_t_shift_by_grade.md b/tests/testthat/_snaps/tm_t_shift_by_grade.md
index 5227edd6c..89a3f8c8c 100644
--- a/tests/testthat/_snaps/tm_t_shift_by_grade.md
+++ b/tests/testthat/_snaps/tm_t_shift_by_grade.md
@@ -53,9 +53,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
rtables::prune_table()
- result
}
@@ -114,9 +113,8 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
rtables::prune_table()
- result
}
diff --git a/tests/testthat/_snaps/tm_t_smq.md b/tests/testthat/_snaps/tm_t_smq.md
index 33b82a9b2..83014b17f 100644
--- a/tests/testthat/_snaps/tm_t_smq.md
+++ b/tests/testthat/_snaps/tm_t_smq.md
@@ -52,8 +52,7 @@
all_zero <- function(tr) {
!inherits(tr, "ContentRow") && rtables::all_zero_or_na(tr)
}
- pruned_and_sorted_result <- sorted_result %>% rtables::trim_rows(criteria = all_zero)
- pruned_and_sorted_result
+ table <- sorted_result %>% rtables::trim_rows(criteria = all_zero)
}
@@ -107,8 +106,7 @@
all_zero <- function(tr) {
!inherits(tr, "ContentRow") && rtables::all_zero_or_na(tr)
}
- pruned_and_sorted_result <- sorted_result %>% rtables::trim_rows(criteria = all_zero)
- pruned_and_sorted_result
+ table <- sorted_result %>% rtables::trim_rows(criteria = all_zero)
}
diff --git a/tests/testthat/_snaps/tm_t_summary.md b/tests/testthat/_snaps/tm_t_summary.md
index b62aabeca..6d406c046 100644
--- a/tests/testthat/_snaps/tm_t_summary.md
+++ b/tests/testthat/_snaps/tm_t_summary.md
@@ -24,8 +24,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -55,8 +54,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -91,8 +89,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -128,8 +125,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -163,8 +159,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -201,8 +196,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
diff --git a/tests/testthat/_snaps/tm_t_summary_by.md b/tests/testthat/_snaps/tm_t_summary_by.md
index 41e7a9d90..e150e211d 100644
--- a/tests/testthat/_snaps/tm_t_summary_by.md
+++ b/tests/testthat/_snaps/tm_t_summary_by.md
@@ -29,8 +29,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -64,8 +63,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -107,8 +105,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -142,8 +139,7 @@
$table
{
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
- result
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl)
}
@@ -185,9 +181,8 @@
rvs <- unlist(unname(row_values(tr)))
isTRUE(all(rvs == 0))
}
- result <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
+ table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = adsl) %>%
rtables::trim_rows(criteria = all_zero)
- result
}
diff --git a/tests/testthat/_snaps/tm_t_tte.md b/tests/testthat/_snaps/tm_t_tte.md
index b3621e75c..e51da0c8d 100644
--- a/tests/testthat/_snaps/tm_t_tte.md
+++ b/tests/testthat/_snaps/tm_t_tte.md
@@ -39,7 +39,6 @@
$table
{
table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ANL_ADSL)
- table
}
@@ -84,7 +83,6 @@
$table
{
table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ANL_ADSL)
- table
}
@@ -143,7 +141,6 @@
$table
{
table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ANL_ADSL)
- table
}
@@ -199,7 +196,6 @@
$table
{
table <- rtables::build_table(lyt = lyt, df = anl, alt_counts_df = ANL_ADSL)
- table
}
From 9c4612cb47a09ecb09bd743e72b7f85189b948d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ver=C3=ADssimo?=
<211358+averissimo@users.noreply.github.com>
Date: Tue, 17 Dec 2024 12:47:36 +0000
Subject: [PATCH 86/86] fix: adds stats prefix
---
R/tm_a_mmrm.R | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/R/tm_a_mmrm.R b/R/tm_a_mmrm.R
index 5b784a5ab..63455af4f 100644
--- a/R/tm_a_mmrm.R
+++ b/R/tm_a_mmrm.R
@@ -1485,7 +1485,7 @@ srv_mmrm <- function(id,
decorated_objs_q <- c(
decorated_tables_q,
lapply(
- setNames(nm = c("lsmeans_plot", "diagnostic_plot")),
+ stats::setNames(nm = c("lsmeans_plot", "diagnostic_plot")),
function(output_function) {
srv_decorate_teal_data(
id = sprintf("d_%s", output_function),