From 314261d1fed575f2102f9da7ae4ccc384259410e Mon Sep 17 00:00:00 2001 From: donyunardi Date: Fri, 8 Nov 2024 16:31:15 +0000 Subject: [PATCH] [actions skip] Built site for teal@e0b7f7072ad6394eda4f437e619f003f0be47020 --- main/404.html | 22 +- main/CODE_OF_CONDUCT.html | 121 +- main/CONTRIBUTING.html | 149 ++- main/LICENSE-text.html | 76 +- main/SECURITY.html | 88 +- .../adding-support-for-reporting.html | 22 +- main/articles/blueprint/actors.html | 22 +- main/articles/blueprint/dataflow.html | 22 +- main/articles/blueprint/filter_panel.html | 22 +- main/articles/blueprint/in_app_data.html | 22 +- main/articles/blueprint/index.html | 22 +- main/articles/blueprint/input_data.html | 22 +- main/articles/blueprint/intro.html | 22 +- .../blueprint/module_encapsulation.html | 22 +- main/articles/blueprint/product_map.html | 22 +- main/articles/bootstrap-themes-in-teal.html | 22 +- main/articles/creating-custom-modules.html | 22 +- main/articles/data-as-shiny-module.html | 22 +- .../data-transform-as-shiny-module.html | 22 +- main/articles/filter-panel.html | 22 +- main/articles/getting-started-with-teal.html | 22 +- .../including-data-in-teal-applications.html | 22 +- main/articles/index.html | 144 ++- main/articles/teal-options.html | 22 +- main/authors.html | 82 +- main/index.html | 22 +- main/news/index.html | 738 ++++++++---- main/reference/TealAppDriver.html | 1057 ++++++++++++----- main/reference/TealReportCard.html | 260 +++- main/reference/TealSlicesBlock.html | 282 +++-- main/reference/append_module.html | 97 +- main/reference/bookmarks_identical.html | 100 +- main/reference/build_app_title.html | 97 +- main/reference/call_once_when.html | 110 +- main/reference/check_filter_datanames.html | 101 +- main/reference/check_modules_datanames.html | 108 +- main/reference/check_reactive.html | 103 +- main/reference/create_app_id.html | 100 +- main/reference/decorate_err_msg.html | 100 +- main/reference/deep_copy_filter.html | 101 +- main/reference/dot-add_signature_to_data.html | 94 +- main/reference/dot-get_hashes_code.html | 97 +- main/reference/dot-smart_rbind.html | 94 +- main/reference/example_module.html | 113 +- main/reference/extract_transformers.html | 94 +- main/reference/get_client_timezone.html | 98 +- main/reference/get_rcode_libraries.html | 84 +- main/reference/get_unique_labels.html | 94 +- main/reference/include_css_files.html | 98 +- main/reference/include_js_files.html | 101 +- main/reference/include_teal_css_js.html | 91 +- main/reference/index.html | 240 +++- main/reference/init.html | 122 +- main/reference/is_arg_used.html | 100 +- main/reference/landing_popup_module.html | 110 +- main/reference/module_bookmark_manager.html | 117 +- main/reference/module_data_summary.html | 119 +- main/reference/module_filter_data.html | 117 +- main/reference/module_filter_manager.html | 135 ++- main/reference/module_init_data.html | 121 +- main/reference/module_labels.html | 97 +- main/reference/module_management.html | 103 +- main/reference/module_snapshot_manager.html | 115 +- main/reference/module_teal.html | 138 ++- main/reference/module_teal_data.html | 126 +- main/reference/module_teal_lockfile.html | 110 +- main/reference/module_teal_module.html | 136 ++- main/reference/module_teal_with_splash.html | 119 +- main/reference/module_transform_data.html | 113 +- main/reference/modules_bookmarkable.html | 97 +- main/reference/modules_depth.html | 101 +- main/reference/report_card_template.html | 110 +- main/reference/reporter_previewer_module.html | 101 +- main/reference/restoreValue.html | 100 +- main/reference/run_js_files.html | 101 +- main/reference/show_rcode_modal.html | 104 +- main/reference/slices_store.html | 114 +- main/reference/tdata.html | 98 +- main/reference/teal-package.html | 114 +- main/reference/teal_data_module.html | 131 +- .../reference/teal_data_to_filtered_data.html | 100 +- main/reference/teal_data_utilities.html | 120 +- main/reference/teal_modules.html | 206 +++- main/reference/teal_slices.html | 152 ++- main/reference/teal_transform_module.html | 116 +- main/reference/validate_app_title_tag.html | 94 +- main/reference/validate_has_data.html | 109 +- main/reference/validate_has_elements.html | 100 +- main/reference/validate_has_variable.html | 103 +- main/reference/validate_in.html | 103 +- main/reference/validate_inputs.html | 110 +- main/reference/validate_n_levels.html | 106 +- main/reference/validate_no_intersection.html | 103 +- main/reference/validate_one_row_per_id.html | 100 +- main/search.json | 2 +- 95 files changed, 7969 insertions(+), 2576 deletions(-) diff --git a/main/404.html b/main/404.html index 07837685bd..5e8f11de46 100644 --- a/main/404.html +++ b/main/404.html @@ -1,5 +1,4 @@ - - + @@ -81,7 +80,24 @@
  • Non-CRAN unit test report
  • - +
    + + @@ -77,65 +119,80 @@

    Contributor Covenant Code of Conduct

    -

    Our Pledge

    +

    Our Pledge +

    We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.

    We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

    -

    Our Standards

    +

    Our Standards +

    Examples of behavior that contributes to a positive environment for our community include:

    -
    • Demonstrating empathy and kindness toward other people
    • +
        +
      • Demonstrating empathy and kindness toward other people
      • Being respectful of differing opinions, viewpoints, and experiences
      • Giving and gracefully accepting constructive feedback
      • Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
      • Focusing on what is best not just for us as individuals, but for the overall community
      • -

      Examples of unacceptable behavior include:

      -
      • The use of sexualized language or imagery, and sexual attention or advances of any kind
      • +
      +

      Examples of unacceptable behavior include:

      +
        +
      • The use of sexualized language or imagery, and sexual attention or advances of any kind
      • Trolling, insulting or derogatory comments, and personal or political attacks
      • Public or private harassment
      • Publishing others’ private information, such as a physical or email address, without their explicit permission
      • Other conduct which could reasonably be considered inappropriate in a professional setting
      • -
    + +
    -

    Enforcement Responsibilities

    +

    Enforcement Responsibilities +

    Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

    Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

    -

    Scope

    +

    Scope +

    This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

    -

    Enforcement

    +

    Enforcement +

    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [INSERT CONTACT METHOD]. All complaints will be reviewed and investigated promptly and fairly.

    All community leaders are obligated to respect the privacy and security of the reporter of any incident.

    -

    Enforcement Guidelines

    +

    Enforcement Guidelines +

    Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

    -

    1. Correction

    +

    1. Correction +

    Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

    Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

    -

    2. Warning

    +

    2. Warning +

    Community Impact: A violation through a single incident or series of actions.

    Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

    -

    3. Temporary Ban

    +

    3. Temporary Ban +

    Community Impact: A serious violation of community standards, including sustained inappropriate behavior.

    Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

    -

    4. Permanent Ban

    +

    4. Permanent Ban +

    Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

    Consequence: A permanent ban from any sort of public interaction within the community.

    -

    Attribution

    +

    Attribution +

    This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

    Community Impact Guidelines were inspired by Mozilla’s code of conduct enforcement ladder.

    For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.

    @@ -143,17 +200,19 @@

    Attribution

    + + - + + - + + diff --git a/main/CONTRIBUTING.html b/main/CONTRIBUTING.html index 19bc2378e2..1537eb2ef9 100644 --- a/main/CONTRIBUTING.html +++ b/main/CONTRIBUTING.html @@ -1,5 +1,19 @@ - -Contribution Guidelines • teal + + + + + + +Contribution Guidelines • teal + + + + + + + + + Skip to contents @@ -15,11 +29,13 @@ + + @@ -79,7 +121,8 @@

    Contribution Guidelines

    🙏 Thank you for taking the time to contribute!

    Your input is deeply valued, whether an issue, a pull request, or even feedback, regardless of size, content or scope.

    -

    Table of contents

    +

    Table of contents +

    👶 Getting started

    📔 Code of Conduct

    🗃 License

    @@ -90,38 +133,47 @@

    Table of contents❓ Questions

    -

    Getting started

    +

    Getting started +

    Please refer the project documentation for a brief introduction. Please also see other articles within the project documentation for additional information.

    -

    Code of Conduct

    +

    Code of Conduct +

    A Code of Conduct governs this project. Participants and contributors are expected to follow the rules outlined therein.

    -

    License

    +

    License +

    All your contributions will be covered by this project’s license.

    -

    Issues

    +

    Issues +

    We use GitHub to track issues, feature requests, and bugs. Before submitting a new issue, please check if the issue has already been reported. If the issue already exists, please upvote the existing issue 👍.

    For new feature requests, please elaborate on the context and the benefit the feature will have for users, developers, or other relevant personas.

    -

    Pull requests

    +

    Pull requests +

    -

    GitHub Flow

    +

    GitHub Flow +

    This repository uses the GitHub Flow model for collaboration. To submit a pull request:

    -
    1. +
        +
      1. Create a branch

        Please see the branch naming convention below. If you don’t have write access to this repository, please fork it.

      2. Make changes

        Make sure your code

        -
        • passes all checks imposed by GitHub Actions
        • +
            +
          • passes all checks imposed by GitHub Actions
          • is well documented
          • is well tested with unit tests sufficiently covering the changes introduced
          • -
          +
        +
      3. Create a pull request (PR)

        In the pull request description, please link the relevant issue (if any), provide a detailed description of the change, and include any assumptions.

        @@ -135,76 +187,93 @@

        GitHub Flow -

        Branch naming convention

        +

        Branch naming convention +

        Suppose your changes are related to a current issue in the current project; please name your branch as follows: <issue_id>_<short_description>. Please use underscore (_) as a delimiter for word separation. For example, 420_fix_ui_bug would be a suitable branch name if your change is resolving and UI-related bug reported in issue number 420 in the current project.

        If your change affects multiple repositories, please name your branches as follows: <issue_id>_<issue_repo>_<short description>. For example, 69_awesomeproject_fix_spelling_error would reference issue 69 reported in project awesomeproject and aims to resolve one or more spelling errors in multiple (likely related) repositories.

    monorepo and staged.dependencies -

    + +

    Sometimes you might need to change upstream dependent package(s) to be able to submit a meaningful change. We are using staged.dependencies functionality to simulate a monorepo behavior. The dependency configuration is already specified in this project’s staged_dependencies.yaml file. You need to name the feature branches appropriately. This is the only exception from the branch naming convention described above.

    Please refer to the staged.dependencies package documentation for more details.

    -

    Coding guidelines

    +

    Coding guidelines +

    This repository follows some unified processes and standards adopted by its maintainers to ensure software development is carried out consistently within teams and cohesively across other repositories.

    -

    Style guide

    +

    Style guide +

    This repository follows the standard tidyverse style guide and uses lintr for lint checks. Customized lint configurations are available in this repository’s .lintr file.

    -

    Dependency management

    +

    Dependency management +

    Lightweight is the right weight. This repository follows tinyverse recommedations of limiting dependencies to minimum.

    -

    Dependency version management

    +

    Dependency version management +

    If the code is not compatible with all (!) historical versions of a given dependenct package, it is required to specify minimal version in the DESCRIPTION file. In particular: if the development version requires (imports) the development version of another package - it is required to put abc (>= 1.2.3.9000).

    - +
    -

    R & package versions

    +

    R & package versions +

    We continuously test our packages against the newest R version along with the most recent dependencies from CRAN and BioConductor. We recommend that your working environment is also set up in the same way. You can find the details about the R version and packages used in the R CMD check GitHub Action execution log - there is a step that prints out the R sessionInfo().

    If you discover bugs on older R versions or with an older set of dependencies, please create the relevant bug reports.

    -

    pre-commit

    +

    +pre-commit +

    We highly recommend that you use the pre-commit tool combined with R hooks for pre-commit to execute some of the checks before committing and pushing your changes.

    Pre-commit hooks are already available in this repository’s .pre-commit-config.yaml file.

    -

    Recognition model

    +

    Recognition model +

    As mentioned previously, all contributions are deeply valued and appreciated. While all contribution data is available as part of the repository insights, to recognize a significant contribution and hence add the contributor to the package authors list, the following rules are enforced:

    - +

    *Excluding auto-generated code, including but not limited to roxygen comments or renv.lock files.

    The package maintainer also reserves the right to adjust the criteria to recognize contributions.

    -

    Questions

    +

    Questions +

    If you have further questions regarding the contribution guidelines, please contact the package/repository maintainer.

    + + - + + - + + diff --git a/main/LICENSE-text.html b/main/LICENSE-text.html index dbaa7dbe13..3f4de1f577 100644 --- a/main/LICENSE-text.html +++ b/main/LICENSE-text.html @@ -1,5 +1,19 @@ - -License • teal + + + + + + +License • teal + + + + + + + + + Skip to contents @@ -15,11 +29,13 @@ + + @@ -89,17 +131,19 @@

    License

    limitations under the License. - + + - + + - + + diff --git a/main/SECURITY.html b/main/SECURITY.html index bddc9d307b..816741f8f9 100644 --- a/main/SECURITY.html +++ b/main/SECURITY.html @@ -1,5 +1,19 @@ - -Security Policy • teal + + + + + + +Security Policy • teal + + + + + + + + + Skip to contents @@ -15,11 +29,13 @@ + + @@ -77,38 +119,44 @@

    Security Policy

    -

    Reporting Security Issues

    +

    Reporting Security Issues +

    If you believe you have found a security vulnerability in any of the repositories in this organization, please report it to us through coordinated disclosure.

    Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.

    Instead, please send an email to vulnerability.management[@]roche.com.

    Please include as much of the information listed below as you can to help us better understand and resolve the issue:

    -
    • The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting)
    • +
        +
      • The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting)
      • Full paths of source file(s) related to the manifestation of the issue
      • The location of the affected source code (tag/branch/commit or direct URL)
      • Any special configuration required to reproduce the issue
      • Step-by-step instructions to reproduce the issue
      • Proof-of-concept or exploit code (if possible)
      • Impact of the issue, including how an attacker might exploit the issue
      • -

      This information will help us triage your report more quickly.

      +
    +

    This information will help us triage your report more quickly.

    -

    Data Security Standards (DSS)

    +

    Data Security Standards (DSS) +

    Please make sure that while reporting issues in the form a bug, feature, or pull request, all sensitive information such as PII, PHI, and PCI is completely removed from any text and attachments, including pictures and videos.

    + + - + + - + + diff --git a/main/articles/adding-support-for-reporting.html b/main/articles/adding-support-for-reporting.html index 580f982b23..51fa7810ed 100644 --- a/main/articles/adding-support-for-reporting.html +++ b/main/articles/adding-support-for-reporting.html @@ -1,5 +1,4 @@ - - + @@ -81,7 +80,24 @@
  • Non-CRAN unit test report
  • - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + - +
    + + @@ -77,67 +119,95 @@

    Articles

    Get started

    -
    Getting Started with teal
    +
    +
    Getting Started with teal
    -
    + +
    +
    -

    Using teal

    +

    Using teal +

    -
    Filter Panel
    +
    +
    Filter Panel
    -
    Modifying a teal Application With R Options
    + +
    Modifying a teal Application With R Options
    -
    Bootstrap Themes in teal
    + +
    Bootstrap Themes in teal
    -
    + + +

    Data in teal apps

    -
    Including Data in teal Applications
    +
    +
    Including Data in teal Applications
    -
    Data as shiny Module
    + +
    Data as shiny Module
    -
    Data Transformations as shiny Module
    + +
    Data Transformations as shiny Module
    -
    + + +
    -

    Extending teal

    +

    Extending teal +

    -
    Creating Custom Modules
    +
    +
    Creating Custom Modules
    -
    Adding Support for Reporting to Custom Modules
    + +
    Adding Support for Reporting to Custom Modules
    -
    + + +

    📃 Technical blueprint

    The purpose of the blueprint is to aid new developer’s comprehension of the fundamental principles of the teal framework. We will explore crucial teal concepts such as data flow, actors, and filter panel, among others.

    -
    About Technical Blueprint
    +
    +
    About Technical Blueprint
    -
    Introduction
    + +
    Introduction
    -
    Actors
    + +
    Actors
    -
    Data Flow
    + +
    Data Flow
    -
    Product Map
    + +
    Product Map
    -
    + + + + + - + + - + + diff --git a/main/articles/teal-options.html b/main/articles/teal-options.html index 4d62058f0e..b80130f75c 100644 --- a/main/articles/teal-options.html +++ b/main/articles/teal-options.html @@ -1,5 +1,4 @@ - - + @@ -81,7 +80,24 @@
  • Non-CRAN unit test report
  • - +
    + + @@ -76,7 +118,8 @@

    Authors and Citation

    Authors

    -
    + +

    Citation

    @@ -170,17 +214,19 @@

    Citation

    + + - + + - + + diff --git a/main/index.html b/main/index.html index 1afa77303c..144af8e0ca 100644 --- a/main/index.html +++ b/main/index.html @@ -1,5 +1,4 @@ - - + @@ -83,7 +82,24 @@
  • Non-CRAN unit test report
  • - +
    + + @@ -75,62 +117,96 @@

    Changelog

    -

    teal 0.15.2.9082

    +

    teal 0.15.2.9082 +

    -

    New features

    -
    • Possible to call ui_teal and srv_teal directly in any application by delivering data argument as a reactive returning teal_data object. #669
    • -
    • Introduced teal_transform_module to provide a way to interactively modify data delivered to teal_module’s server. #1228
    • +

      New features +

      +
        +
      • Possible to call ui_teal and srv_teal directly in any application by delivering data argument as a reactive returning teal_data object. #669 +
      • +
      • Introduced teal_transform_module to provide a way to interactively modify data delivered to teal_module’s server. #1228 +
      • Introduced a new argument once = FALSE in teal_data_module to possibly reload data during a run time.
      • -
      • Possibility to download lockfile to restore app session for reproducibility. #479
      • +
      • Possibility to download lockfile to restore app session for reproducibility. #479 +
      • Introduced a function set_datanames() to change a datanames of the teal_module.
      • Datasets which name starts with . are ignored when module’s datanames is set as "all".
      • -
    + +
    -

    Breaking changes

    -
    + +
    -

    Enhancement

    -
    + +
    -

    teal 0.15.2

    CRAN release: 2024-03-07

    -
    -

    Bug fixes

    -
    • Fixed a bug in handling datanames of modules that crashed module-specific applications when filtering child datasets.
    • -
    +

    teal 0.15.2 +

    +

    CRAN release: 2024-03-07

    +
    +

    Bug fixes +

    +
      +
    • Fixed a bug in handling datanames of modules that crashed module-specific applications when filtering child datasets.
    • +
    +
    -

    teal 0.15.1

    CRAN release: 2024-02-22

    -
    -

    Bug fixes

    -
    • Fixed a bug that stopped the module_specific feature when a teal module specified datanames of length more than 1.
    • -
    +

    teal 0.15.1 +

    +

    CRAN release: 2024-02-22

    +
    +

    Bug fixes +

    +
      +
    • Fixed a bug that stopped the module_specific feature when a teal module specified datanames of length more than 1.
    • +
    +
    -

    Miscellaneous

    -
    • Updated links in vignettes
    • -
    +

    Miscellaneous +

    + +
    -

    teal 0.15.0

    CRAN release: 2024-02-08

    -
    -

    New features

    -
    • Added landing_popup_module function which creates a module that will display a popup when the app starts. The popup will block access to the app until it is dismissed.
    • +

      teal 0.15.0 +

      +

      CRAN release: 2024-02-08

      +
      +

      New features +

      +
        +
      • Added landing_popup_module function which creates a module that will display a popup when the app starts. The popup will block access to the app until it is dismissed.
      • Filter state snapshots can now be uploaded from file. See ?snapshot.
      • Added as_tdata function to facilitate migration of modules to the new teal_data class.
      • Added build_app_title function to facilitate adding favicons to app title.
      • -
      +
    +
    -

    Breaking changes

    -
    • +

      Breaking changes +

      +
        +
      • data argument in init now accepts only teal_data and teal_data_module.
      • tdata has been deprecated and replaced with teal_data. Support for tdata passed to the data argument in module(server) will be removed in the next release.
      • @@ -139,114 +215,166 @@

        Breaking changes -

        Miscellaneous

        -
        • Enhanced a module validation checks so that it won’t throw messages about data argument unnecessarily.
        • +

          Miscellaneous +

          +
            +
          • Enhanced a module validation checks so that it won’t throw messages about data argument unnecessarily.
          • Added argument to teal_slices and made modifications to init to enable tagging teal_slices with an app id to safely upload snapshots from disk.
          • FilteredData no longer stores pre-processing code in specific slots. Code is now attached as attribute. Adjusted appropriately.
          • -

    + +
    -

    Bug fixes

    -
    + +
    -

    teal 0.14.0

    +

    teal 0.14.0 +

    -

    New features

    -
    • Enabled module specific filter panel. See module_specific in teal::teal_slices documentation.
    • +

      New features +

      +
        +
      • Enabled module specific filter panel. See module_specific in teal::teal_slices documentation.
      • Enabled capturing and resetting application filter state with snapshots. See ?snapshot.
      • Enabled reporter_previewer_module to customize default values through srv_args.
      • Enabled passing own reporter_previewer_module in a list of modules to override default one.
      • -
    + +
    -

    Breaking changes

    -
    + +
    -

    Miscellaneous

    -
    + +
    -

    teal 0.13.0

    +

    teal 0.13.0 +

    -

    Breaking changes

    -
    • The use of datasets argument in modules has been deprecated and will be removed in a future release. Please use data argument instead. data is of type tdata; see “Creating custom modules” vignettes and function documentation of teal::new_tdata for further details.
    • +

      Breaking changes +

      +
        +
      • The use of datasets argument in modules has been deprecated and will be removed in a future release. Please use data argument instead. data is of type tdata; see “Creating custom modules” vignettes and function documentation of teal::new_tdata for further details.
      • Due to deprecation of chunks in teal.code, the teal framework now uses their replacement (qenv) instead. The documentation in teal has been updated to reflect this and custom modules written with chunks should be updated to use qenv.
      • Due to deprecation of chunks in teal.code, get_rcode, get_rcode_srv, and get_rcode_ui have been removed.
      • -
    + +
    -

    New features

    -
    + +
    -

    Miscellaneous

    -
    + +
    -

    teal 0.12.0

    -
    -

    New features

    -
    • Added the support for custom bslib bootstrap themes in teal::init apps, please read more in the new teal-bs-themes vignette.
    • -
    +

    teal 0.12.0 +

    +
    +

    New features +

    +
      +
    • Added the support for custom bslib bootstrap themes in teal::init apps, please read more in the new teal-bs-themes vignette.
    • +
    +
    -

    Enhancements

    -
    • Added the option to choose which variables can be filtered in the filter panel by using the filterable attributes for the per-dataset lists in the filter argument of init.
    • +

      Enhancements +

      +
        +
      • Added the option to choose which variables can be filtered in the filter panel by using the filterable attributes for the per-dataset lists in the filter argument of init.
      • Updated teal_module to have data argument which receives a list of reactive filter data with "code" and "join_keys" attributes.
      • Updated teal_module to have filter_panel_api argument which receives a FilterPanelAPI object.
      • Updated the internals of module_teal to reflect changes in teal.slice.
      • -
    + +
    -

    Breaking changes

    -
    + +
    -

    Miscellaneous

    -
    +

    Miscellaneous +

    + +
    -

    teal 0.11.1

    +

    teal 0.11.1 +

    -

    Enhancements

    -
    • Added new function reporter_previewer_module to wrap the teal.reporter package previewer functionality as a teal module.
    • +

      Enhancements +

      +
        +
      • Added new function reporter_previewer_module to wrap the teal.reporter package previewer functionality as a teal module.
      • Updated teal to support modules which include reporting. If any module which supports reporting is included then a reporter_previewer_module is included.
      • Added default arguments to module() and the server argument is now a function where the second argument can be ... or datasets.
      • -
    + +
    -

    Breaking changes

    -
    +

    Breaking changes +

    + +
    -

    Miscellaneous

    -
    + +
    -

    teal 0.11.0

    - +

    The teal package contains the code to create apps (teal::init), to create a module (teal::module) and to group modules in the app (teal::modules). teal depends on teal.transform and teal.data which contain the functions that teal app creators are likely to need. The other package teal only imports from and therefore teal module creators should either fully specify functions from these packages when required or import them into custom packages as library(teal) will not load them.

    +
    +

    New features +

    +
      +
    • A simple new teal module named example_module has been included in the package.
    • +
    +
    -

    Breaking changes

    -
    • +

      Breaking changes +

      +
        +
      • teal package has been split into multiple smaller packages, see above.
      • Deprecated root_modules function, users should use modules directly inside init.
      • Due to deprecation of root_modules any label argument to modules must be explicitly named. For example modules("lab", mod1, mod2) should be replaced with modules(label = "lab", mod1, mod2).
      • -
    + +
    -

    Miscellaneous

    -
    + +
    -

    Bug fixes

    -
    +

    Bug fixes +

    + +
    -

    teal 0.10.1

    +

    teal 0.10.1 +

    -

    Breaking changes

    -
    • Changed the HTML identifiers of teal modules - now each nested module receives its own shiny namespace.
    • +

      Breaking changes +

      +
        +
      • Changed the HTML identifiers of teal modules - now each nested module receives its own shiny namespace.
      • Deprecated all functions related to connectors that have been moved to their own separate packages.
      • Removed raw_dataset, raw_dataset_connector, named_dataset, named_dataset_file, named_dataset_connector, relational_dataset, relational_dataset_file, relational_dataset_connector, key, as_cdisc, as_cdisc_relational.
      • Removed rcd_connection and rcd_data; scda_dataset_connectors can be passed into cdisc_data and teal_data directly.
      • Replaced rcd_dataset_connector and rcd_cdisc_dataset_connector with scda_dataset_connector and scda_cdisc_dataset_connector respectively.
      • Renamed teal_show_js_log option into teal.show_js_log to match options naming convention.
      • Removed %is_in% and stop_shiny internal utility functions.
      • -
    + +
    -

    New features

    +

    New features +

    -
    Logging
    -
    • Added support for logging using the logger package.
    • +
      Logging +
      +
        +
      • Added support for logging using the logger package.
      • Added a new function register_logger, which registers a logger in a given namespace.
      • Added trace and info levels log messages to the teal framework.
      • Added pid and shiny session token into footnote so app developers can identify logs for apps.
      • -
    + +
    -
    Other
    -
    + +
    -

    teal 0.10.0

    +

    teal 0.10.0 +

    -

    New features

    -
    • Allow passing MultiAssayExperiment to the teal::init using mae_dataset function or through the connectors.
    • +

      New features +

      +
        +
      • Allow passing MultiAssayExperiment to the teal::init using mae_dataset function or through the connectors.
      • Refactored filter panel to use MultiAssayExperiment objects. Filters can be set on a subject level (colData of MAE object) and on a experiment level (colData and rowData of an assay).
      • Added cdse_dataset_connector to create delayed data objects from CDSE.
      • Added datasetdb_dataset_connector to create delayed data objects from DataSetDB.
      • Added ricepass_connection to create delayed data objects from entimICE via ricepass.
      • Refactor of the filter panel: -
        • Simplified setting of initial filter state without need to specify “choices” or “range” named list element depending on the variable class.
        • +
            +
          • Simplified setting of initial filter state without need to specify “choices” or “range” named list element depending on the variable class.
          • Dataset type determines an appearance and a functionality of related filters and filters summary.
          • Datasets are passed (by reference) from DDL to FilteredData skipping extracting data and their attributes.
          • Redesigned variable filter labels in “Active Filter Variables” panel.
          • Fully testable server functions.
          • -
          -
    + + + +
    -

    Bug fixes

    -
    + +
    -

    Enhancements

    -
    + +
    -

    Miscellaneous

    -
    + +
    -

    teal 0.9.5

    +

    teal 0.9.5 +

    -

    Enhancements

    -
    • Added informational stop message when using mutate_data with RelationalDataConnector.
    • +

      Enhancements +

      +
        +
      • Added informational stop message when using mutate_data with RelationalDataConnector.
      • Modified as_cdisc to behave similarly to cdisc_dataset when called on a Dataset object.
      • Changed the displayed format of the data name and the column name in data_extract_spec UI elements. Both are now compressed to <data name>.<column name> if they don’t change during runtime of the app.
      • Added ADSAFTTE to the list of recognized ADaM dataset names.
      • Added another example to data_extract_spec’s doc string showcasing app users can choose a variable used for filtering in the encoding panel.
      • Added CSS styling to tool tips in teal modules.
      • -
    + +
    -

    Bug fixes

    -
    + +
    -

    teal 0.9.4

    +

    teal 0.9.4 +

    -

    Enhancements

    -
    • Released snowflake connection and connectors.
    • +

      Enhancements +

      +
        +
      • Released snowflake connection and connectors.
      • Changed ordering of datasets to be more intuitive (topologically first for CDISC datasets only and then according to input datasets order).
      • When closing a teal app (ending a user shiny session), all DataConnections will now try to close their connections.
      • Added ADHY keys to configuration file.
      • Extended the filter_spec function: the parameter choices is no longer mandatory (the function will take all possible choices by default) and the vars parameter additionally accepts the choices_selected and allows to change the variables for filtering using the UI elements in the encoding panel.
      • -
    + +
    -

    Bug fixes

    -
    + +
    -

    teal 0.9.3

    +

    teal 0.9.3 +

    -

    New Features

    -
    • Support for data-standard independent input and filtering. That includes refactor of the all data and dataset structures together with refactor of FilteredData class.
    • +

      New Features +

      +
        +
      • Support for data-standard independent input and filtering. That includes refactor of the all data and dataset structures together with refactor of FilteredData class.
      • New JoinKeys class (with join_keys() constructors and join_key() constructor for its elements) to store joining key columns between datasets.
      • Refactored the most basic dataset() constructor, added cdisc_dataset() constructor and as_cdisc() conversion function.
      • Soft-deprecate removed class constructors and obsolete functions (e.g. keys()).
      • Added get_keys() and set_keys() functions to extract and manipulate datasets primary keys respectively.
      • Unexported filtered_data_new, filtered_data_set and filtered_data_set_filters.
      • -
    + +
    -

    Bug fixes

    -
    + +
    -

    Enhancements

    -
    +

    Enhancements +

    + +
    -

    teal 0.9.2

    +

    teal 0.9.2 +

    -

    New Features

    -
    • Added python_dataset_connector to create delayed data objects from python scripts or directly from python code.
    • +

      New Features +

      +
        +
      • Added python_dataset_connector to create delayed data objects from python scripts or directly from python code.
      • NOTE: python_dataset_connector is not yet ready to be deployed on RSConnect because it does not contain numpy and pandas, which are Python libraries used in python_dataset_connector.
      • Added support for filtering on Date and Datetime variables in the Filter Panel.
      • Added buttons for date and datetime filter widgets to reset the value to the original.
      • Added new function check_key_duplicates, which creates a short summary about rows with duplicated primary key (row numbers and the number of duplicates)
      • -
    + +
    -

    Enhancements

    -
    + +
    -

    Miscellaneous

    -
    +

    Miscellaneous +

    + +
    -

    teal 0.9.1

    -
    -

    teal 0.8.5

    -
    +

    teal 0.8.5 +

    + +
    -

    teal 0.8.4

    -
    + +
    -

    teal 0.8.3

    -
    + +
    -

    teal 0.8.2

    -
    + +
    -

    teal 0.8.1

    -
    +

    teal 0.8.1 +

    + +
    -

    teal 0.8.0

    -
    + +
    -

    teal 0.7.0

    -
    + +
    -

    teal 0.6.0

    -
    + +
    -

    teal 0.0.5

    -
    + +
    -

    teal 0.0.4

    -
    +

    teal 0.0.4 +

    + +
    -

    teal 0.0.3

    -
    -
    New features
    -
    • +

      teal 0.0.3 +

      +
        +
      • Note version 0.0.3 is not backwards compatible. Reading the changes and studying the example app should, however, clarify most the changes.
      • +
      +
      +
      New features +
      +
        +
      • tm_scatterplot module.
      • tm_table module.
      • -
      +
    +
    -
    Changes
    -
    • All tabs arguments were renamed to modules.
    • +
      Changes +
      +
        +
      • All tabs arguments were renamed to modules.
      • tab_item function is now called module.
      • @@ -615,30 +870,39 @@
        Changes -

        teal 0.0.2

        -
        • New ‘01_getting_started’ vignette.
        • +

          teal 0.0.2 +

          +
            +
          • New ‘01_getting_started’ vignette.
          • Datanames in FilteredData are now case sensitive.
          • -
    + +
    -

    teal 0.0.1

    -
    +

    teal 0.0.1 +

    + + + + - + + - + + diff --git a/main/reference/TealAppDriver.html b/main/reference/TealAppDriver.html index f226e0efef..c571e89af0 100644 --- a/main/reference/TealAppDriver.html +++ b/main/reference/TealAppDriver.html @@ -1,7 +1,23 @@ - -Drive a teal application — TealAppDriver • teal + + + + + + +Drive a teal application — TealAppDriver • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -84,21 +128,26 @@

    Drive a teal application

    -

    Details

    +

    Details +

    Extension of the shinytest2::AppDriver class with methods for driving a teal application for performing interactions for shinytest2 tests.

    -

    Super class

    +

    Super class +

    shinytest2::AppDriver -> TealAppDriver

    -

    Methods

    +

    Methods +

    Inherited methods +
    +

    Inherited methods


    -

    Method new()

    -

    Initialize a TealAppDriver object for testing a teal application.

    -

    Usage

    -

    TealAppDriver$new(
    +

    +
    +
    +

    Method new() +

    +

    Initialize a TealAppDriver object for testing a teal application.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$new(
       data,
       modules,
       filter = teal_slices(),
    @@ -174,95 +233,168 @@ 

    Usage

    timeout = rlang::missing_arg(), load_timeout = rlang::missing_arg(), ... -)

    +)
    +

    +
    -

    Arguments

    -

    data, modules, filter, title, header, footer, landing_popup
    +

    Arguments +

    +

    +
    +
    +
    data, modules, filter, title, header, footer, landing_popup

    arguments passed to init

    timeout
    -

    (numeric) Default number of milliseconds for any timeout or +

    +

    (numeric) Default number of milliseconds for any timeout or timeout_ parameter in the TealAppDriver class. Defaults to 20s.

    See shinytest2::AppDriver new method for more details on how to change it -via options or environment variables.

    +via options or environment variables.

    +
    load_timeout
    -

    (numeric) How long to wait for the app to load, in ms. +

    +

    (numeric) How long to wait for the app to load, in ms. This includes the time to start R. Defaults to 100s.

    See shinytest2::AppDriver new method for more details on how to change it -via options or environment variables

    +via options or environment variables

    +
    ...

    Additional arguments to be passed to shinytest2::AppDriver$new

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    Object of class TealAppDriver

    -


    -

    Method click()

    -

    Append parent shinytest2::AppDriver click method with a call to waif_for_idle() method.

    -

    Usage

    -

    TealAppDriver$click(...)

    +
    +

    +
    +
    +

    Method click() +

    +

    Append parent shinytest2::AppDriver click method with a call to waif_for_idle() method.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$click(...)
    +

    +
    -

    Arguments

    -

    ...
    +

    Arguments +

    +

    +
    +
    +
    ...

    arguments passed to parent shinytest2::AppDriver click() method.

    -

    +
    +

    +
    -


    -

    Method expect_no_shiny_error()

    +
    +

    +
    +
    +

    Method expect_no_shiny_error() +

    Check if the app has shiny errors. This checks for global shiny errors. Note that any shiny errors dependent on shiny server render will only be captured after the teal module tab is visited because shiny will not trigger server computations when the tab is invisible. So, navigate to the module tab you want to test before calling this function. -Although, this catches errors hidden in the other module tabs if they are already rendered.

    -

    Usage

    -

    TealAppDriver$expect_no_shiny_error()

    +Although, this catches errors hidden in the other module tabs if they are already rendered.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$expect_no_shiny_error()
    +

    +
    -


    -

    Method expect_no_validation_error()

    -

    Check if the app has no validation errors. This checks for global shiny validation errors.

    -

    Usage

    -

    TealAppDriver$expect_no_validation_error()

    +
    +

    +
    +
    +

    Method expect_no_validation_error() +

    +

    Check if the app has no validation errors. This checks for global shiny validation errors.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$expect_no_validation_error()
    +

    +
    -


    -

    Method expect_validation_error()

    -

    Check if the app has validation errors. This checks for global shiny validation errors.

    -

    Usage

    -

    TealAppDriver$expect_validation_error()

    +
    +

    +
    +
    +

    Method expect_validation_error() +

    +

    Check if the app has validation errors. This checks for global shiny validation errors.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$expect_validation_error()
    +

    +
    -


    -

    Method set_input()

    -

    Set the input in the teal app.

    -

    Usage

    -

    TealAppDriver$set_input(input_id, value, ...)

    +
    +

    +
    +
    +

    Method set_input() +

    +

    Set the input in the teal app.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$set_input(input_id, value, ...)
    +

    +
    -

    Arguments

    -

    input_id
    +

    Arguments +

    +

    +
    +
    +
    input_id

    (character) The shiny input id with it's complete name space.

    @@ -274,23 +406,40 @@

    Arguments -

    Returns

    +

    Returns +

    The TealAppDriver object invisibly.

    -


    -

    Method navigate_teal_tab()

    -

    Navigate the teal tabs in the teal app.

    -

    Usage

    -

    TealAppDriver$navigate_teal_tab(tabs)

    +
    +

    +
    +
    +

    Method navigate_teal_tab() +

    +

    Navigate the teal tabs in the teal app.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$navigate_teal_tab(tabs)
    +

    +
    -

    Arguments

    -

    tabs
    +

    Arguments +

    +

    +
    +
    +
    tabs

    (character) Labels of tabs to navigate to. The order of the tabs is important, and it should start with the most parent level tab. Note: In case the teal tab group has duplicate names, the first tab will be selected, @@ -298,174 +447,320 @@

    Arguments

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    The TealAppDriver object invisibly.

    -


    -

    Method active_ns()

    -

    Get the active shiny name space for different components of the teal app.

    -

    Usage

    -

    TealAppDriver$active_ns()

    +
    +

    +
    +
    +

    Method active_ns() +

    +

    Get the active shiny name space for different components of the teal app.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$active_ns()
    +

    +
    -

    Returns

    +

    Returns +

    (list) The list of active shiny name space of the teal components.

    -


    -

    Method active_module_ns()

    -

    Get the active shiny name space for interacting with the module content.

    -

    Usage

    -

    TealAppDriver$active_module_ns()

    +
    +

    +
    +
    +

    Method active_module_ns() +

    +

    Get the active shiny name space for interacting with the module content.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$active_module_ns()
    +

    +
    -

    Returns

    +

    Returns +

    (string) The active shiny name space of the component.

    -


    -

    Method active_module_element()

    -

    Get the active shiny name space bound with a custom element name.

    -

    Usage

    -

    TealAppDriver$active_module_element(element)

    +
    +

    +
    +
    +

    Method active_module_element() +

    +

    Get the active shiny name space bound with a custom element name.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$active_module_element(element)
    +

    +
    -

    Arguments

    -

    element
    +

    Arguments +

    +

    +
    +
    +
    element

    character(1) custom element name.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    (string) The active shiny name space of the component bound with the input element.

    -


    -

    Method active_module_element_text()

    -

    Get the text of the active shiny name space bound with a custom element name.

    -

    Usage

    -

    TealAppDriver$active_module_element_text(element)

    +
    +

    +
    +
    +

    Method active_module_element_text() +

    +

    Get the text of the active shiny name space bound with a custom element name.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$active_module_element_text(element)
    +

    +
    -

    Arguments

    -

    element
    +

    Arguments +

    +

    +
    +
    +
    element

    character(1) the text of the custom element name.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    (string) The text of the active shiny name space of the component bound with the input element.

    -


    -

    Method active_filters_ns()

    -

    Get the active shiny name space for interacting with the filter panel.

    -

    Usage

    -

    TealAppDriver$active_filters_ns()

    +
    +

    +
    +
    +

    Method active_filters_ns() +

    +

    Get the active shiny name space for interacting with the filter panel.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$active_filters_ns()
    +

    +
    -

    Returns

    +

    Returns +

    (string) The active shiny name space of the component.

    -


    -

    Method active_data_summary_ns()

    -

    Get the active shiny name space for interacting with the data-summary panel.

    -

    Usage

    -

    TealAppDriver$active_data_summary_ns()

    +
    +

    +
    +
    +

    Method active_data_summary_ns() +

    +

    Get the active shiny name space for interacting with the data-summary panel.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$active_data_summary_ns()
    +

    +
    -

    Returns

    +

    Returns +

    (string) The active shiny name space of the data-summary component.

    -


    -

    Method active_data_summary_element()

    -

    Get the active shiny name space bound with a custom element name.

    -

    Usage

    -

    TealAppDriver$active_data_summary_element(element)

    +
    +

    +
    +
    +

    Method active_data_summary_element() +

    +

    Get the active shiny name space bound with a custom element name.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$active_data_summary_element(element)
    +

    +
    -

    Arguments

    -

    element
    +

    Arguments +

    +

    +
    +
    +
    element

    character(1) custom element name.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    (string) The active shiny name space of the component bound with the input element.

    -


    -

    Method get_active_module_input()

    +
    +

    +
    +
    +

    Method get_active_module_input() +

    Get the input from the module in the teal app. -This function will only access inputs from the name space of the current active teal module.

    -

    Usage

    -

    TealAppDriver$get_active_module_input(input_id)

    +This function will only access inputs from the name space of the current active teal module.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_active_module_input(input_id)
    +

    +
    -

    Arguments

    -

    input_id
    +

    Arguments +

    +

    +
    +
    +
    input_id

    (character) The shiny input id to get the value from.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    The value of the shiny input.

    -


    -

    Method get_active_module_output()

    +
    +

    +
    +
    +

    Method get_active_module_output() +

    Get the output from the module in the teal app. -This function will only access outputs from the name space of the current active teal module.

    -

    Usage

    -

    TealAppDriver$get_active_module_output(output_id)

    +This function will only access outputs from the name space of the current active teal module.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_active_module_output(output_id)
    +

    +
    -

    Arguments

    -

    output_id
    +

    Arguments +

    +

    +
    +
    +
    output_id

    (character) The shiny output id to get the value from.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    The value of the shiny output.

    -


    -

    Method get_active_module_table_output()

    +
    +

    +
    +
    +

    Method get_active_module_table_output() +

    Get the output from the module's teal.widgets::table_with_settings or DT::DTOutput in the teal app. -This function will only access outputs from the name space of the current active teal module.

    -

    Usage

    -

    TealAppDriver$get_active_module_table_output(table_id, which = 1)

    +This function will only access outputs from the name space of the current active teal module.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_active_module_table_output(table_id, which = 1)
    +

    +
    -

    Arguments

    -

    table_id
    +

    Arguments +

    +

    +
    +
    +
    table_id

    (character(1)) The id of the table in the active teal module's name space.

    @@ -474,45 +769,79 @@

    Argumentsteal.widgets::table_with_settings.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    The data.frame with table contents.

    -


    -

    Method get_active_module_plot_output()

    +
    +

    +
    +
    +

    Method get_active_module_plot_output() +

    Get the output from the module's teal.widgets::plot_with_settings in the teal app. -This function will only access plots from the name space of the current active teal module.

    -

    Usage

    -

    TealAppDriver$get_active_module_plot_output(plot_id)

    +This function will only access plots from the name space of the current active teal module.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_active_module_plot_output(plot_id)
    +

    +
    -

    Arguments

    -

    plot_id
    +

    Arguments +

    +

    +
    +
    +
    plot_id

    (character(1)) The id of the plot in the active teal module's name space.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    The src attribute as character(1) vector.

    -


    -

    Method set_active_module_input()

    +
    +

    +
    +
    +

    Method set_active_module_input() +

    Set the input in the module in the teal app. -This function will only set inputs in the name space of the current active teal module.

    -

    Usage

    -

    TealAppDriver$set_active_module_input(input_id, value, ...)

    +This function will only set inputs in the name space of the current active teal module.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$set_active_module_input(input_id, value, ...)
    +

    +
    -

    Arguments

    -

    input_id
    +

    Arguments +

    +

    +
    +
    +
    input_id

    (character) The shiny input id to get the value from.

    @@ -524,48 +853,86 @@

    Arguments -

    Returns

    +

    Returns +

    The TealAppDriver object invisibly.

    -


    -

    Method get_active_filter_vars()

    -

    Get the active datasets that can be accessed via the filter panel of the current active teal module.

    -

    Usage

    -

    TealAppDriver$get_active_filter_vars()

    +
    +

    +
    +
    +

    Method get_active_filter_vars() +

    +

    Get the active datasets that can be accessed via the filter panel of the current active teal module.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_active_filter_vars()
    +

    +
    -


    -

    Method get_active_data_summary_table()

    -

    Get the active data summary table

    -

    Usage

    -

    TealAppDriver$get_active_data_summary_table()

    +
    +

    +
    +
    +

    Method get_active_data_summary_table() +

    +

    Get the active data summary table

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_active_data_summary_table()
    +

    +
    -

    Returns

    +

    Returns +

    data.frame

    -


    -

    Method is_visible()

    -

    Test if DOM elements are visible on the page with a JavaScript call.

    -

    Usage

    -

    TealAppDriver$is_visible(
    +
    +

    +
    +
    +

    Method is_visible() +

    +

    Test if DOM elements are visible on the page with a JavaScript call.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$is_visible(
       selector,
       content_visibility_auto = FALSE,
       opacity_property = FALSE,
       visibility_property = FALSE
    -)

    +)
    +

    +
    -

    Arguments

    -

    selector
    +

    Arguments +

    +

    +
    +
    +
    selector

    (character(1)) CSS selector to check visibility. A CSS id will return only one element if the UI is well formed.

    @@ -575,40 +942,73 @@

    Argumentshttps://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    Logical vector with all occurrences of the selector.

    -


    -

    Method get_active_data_filters()

    -

    Get the active filter variables from a dataset in the teal app.

    -

    Usage

    -

    TealAppDriver$get_active_data_filters(dataset_name = NULL)

    +
    +

    +
    +
    +

    Method get_active_data_filters() +

    +

    Get the active filter variables from a dataset in the teal app.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_active_data_filters(dataset_name = NULL)
    +

    +
    -

    Arguments

    -

    dataset_name
    +

    Arguments +

    +

    +
    +
    +
    dataset_name

    (character) The name of the dataset to get the filter variables from. If NULL, the filter variables for all the datasets will be returned in a list.

    -

    +
    +

    +
    -


    -

    Method add_filter_var()

    -

    Add a new variable from the dataset to be filtered.

    -

    Usage

    -

    TealAppDriver$add_filter_var(dataset_name, var_name, ...)

    +
    +

    +
    +
    +

    Method add_filter_var() +

    +

    Add a new variable from the dataset to be filtered.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$add_filter_var(dataset_name, var_name, ...)
    +

    +
    -

    Arguments

    -

    dataset_name
    +

    Arguments +

    +

    +
    +
    +
    dataset_name

    (character) The name of the dataset to add the filter variable to.

    @@ -620,23 +1020,40 @@

    Arguments -

    Returns

    +

    Returns +

    The TealAppDriver object invisibly.

    -


    -

    Method remove_filter_var()

    -

    Remove an active filter variable of a dataset from the active filter variables panel.

    -

    Usage

    -

    TealAppDriver$remove_filter_var(dataset_name = NULL, var_name = NULL)

    +
    +

    +
    +
    +

    Method remove_filter_var() +

    +

    Remove an active filter variable of a dataset from the active filter variables panel.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$remove_filter_var(dataset_name = NULL, var_name = NULL)
    +

    +
    -

    Arguments

    -

    dataset_name
    +

    Arguments +

    +

    +
    +
    +
    dataset_name

    (character) The name of the dataset to remove the filter variable from. If NULL, all the filter variables will be removed.

    @@ -646,23 +1063,40 @@

    Arguments -

    Returns

    +

    Returns +

    The TealAppDriver object invisibly.

    -


    -

    Method set_active_filter_selection()

    -

    Set the active filter values for a variable of a dataset in the active filter variable panel.

    -

    Usage

    -

    TealAppDriver$set_active_filter_selection(dataset_name, var_name, input, ...)

    +
    +

    +
    +
    +

    Method set_active_filter_selection() +

    +

    Set the active filter values for a variable of a dataset in the active filter variable panel.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$set_active_filter_selection(dataset_name, var_name, input, ...)
    +

    +
    -

    Arguments

    -

    dataset_name
    +

    Arguments +

    +

    +
    +
    +
    dataset_name

    (character) The name of the dataset to set the filter value for.

    @@ -678,23 +1112,40 @@

    Arguments -

    Returns

    +

    Returns +

    The TealAppDriver object invisibly.

    -


    -

    Method get_attr()

    -

    Extract html attribute (found by a selector).

    -

    Usage

    -

    TealAppDriver$get_attr(selector, attribute)

    +
    +

    +
    +
    +

    Method get_attr() +

    +

    Extract html attribute (found by a selector).

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_attr(selector, attribute)
    +

    +
    -

    Arguments

    -

    selector
    +

    Arguments +

    +

    +
    +
    +
    selector

    (character(1)) specifying the selector to be used to get the content of a specific node.

    @@ -702,64 +1153,108 @@

    Arguments -

    Returns

    +

    Returns +

    The character vector.

    -


    -

    Method get_html_rvest()

    -

    Wrapper around get_html that passes the output directly to rvest::read_html.

    -

    Usage

    -

    TealAppDriver$get_html_rvest(selector)

    +
    +

    +
    +
    +

    Method get_html_rvest() +

    +

    Wrapper around get_html that passes the output directly to rvest::read_html.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$get_html_rvest(selector)
    +

    +
    -

    Arguments

    -

    selector
    +

    Arguments +

    +

    +
    +
    +
    selector

    (character(1)) passed to get_html.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    An XML document. Wrapper around get_url() method that opens the app in the browser.

    -


    -

    Method open_url()

    +
    +

    +
    +
    +

    Method open_url() +

    -

    Usage

    -

    TealAppDriver$open_url()

    +

    Usage +

    +

    +
    +
    TealAppDriver$open_url()
    +

    +
    -

    Returns

    +

    Returns +

    Nothing. Opens the underlying teal app in the browser.

    -


    -

    Method wait_for_active_module_value()

    +
    +

    +
    +
    +

    Method wait_for_active_module_value() +

    Waits until a specified input, output, or export value. This function serves as a wrapper around the wait_for_value method, -providing a more flexible interface for waiting on different types of values within the active module namespace.

    -

    Usage

    -

    TealAppDriver$wait_for_active_module_value(
    +providing a more flexible interface for waiting on different types of values within the active module namespace.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$wait_for_active_module_value(
       input = rlang::missing_arg(),
       output = rlang::missing_arg(),
       export = rlang::missing_arg(),
       ...
    -)

    +)
    +

    +
    -

    Arguments

    -

    input, output, export
    +

    Arguments +

    +

    +
    +
    +
    input, output, export

    A name of an input, output, or export value. Only one of these parameters may be used.

    @@ -769,23 +1264,41 @@

    Arguments
    -

    Method clone()

    -

    The objects of this class are cloneable with this method.

    -

    Usage

    -

    TealAppDriver$clone(deep = FALSE)

    +
    +

    +
    +
    +

    Method clone() +

    +

    The objects of this class are cloneable with this method.

    +
    +

    Usage +

    +

    +
    +
    TealAppDriver$clone(deep = FALSE)
    +

    +
    -

    Arguments

    -

    deep
    +

    Arguments +

    +

    +
    +
    +
    deep

    Whether to make a deep clone.

    -

    +
    +

    +
    @@ -793,17 +1306,19 @@

    Arguments

    + +

    - + +
    - + + diff --git a/main/reference/TealReportCard.html b/main/reference/TealReportCard.html index 5020cf160b..7de9cb5b10 100644 --- a/main/reference/TealReportCard.html +++ b/main/reference/TealReportCard.html @@ -1,13 +1,29 @@ - -TealReportCard — TealReportCard • teal + + + + + +TealReportCard — TealReportCard • teal + + + + + + + +meta data."> + + + + Skip to contents @@ -23,11 +39,13 @@ + +
    @@ -93,20 +137,27 @@

    TealReportCard

    -

    Super class

    +

    Super class +

    teal.reporter::ReportCard -> TealReportCard

    +

    Inherited methods


    -

    Method append_src()

    -

    Appends the source code to the content meta data of this TealReportCard.

    -

    Usage

    -

    TealReportCard$append_src(src, ...)

    +

    +
    +
    +

    Method append_src() +

    +

    Appends the source code to the content meta data of this TealReportCard.

    +
    +

    Usage +

    +

    +
    +
    TealReportCard$append_src(src, ...)
    +

    +
    -

    Arguments

    -

    src
    +

    Arguments +

    +

    +
    +
    +
    src

    (character(1)) code as text.

    @@ -138,85 +202,148 @@

    Arguments -

    Returns

    +

    Returns +

    Object of class TealReportCard, invisibly.

    -

    Examples

    -

    card <- TealReportCard$new()$append_src(
    +

    Examples +

    +

    +
    +
    card <- TealReportCard$new()$append_src(
       "plot(iris)"
     )
    -card$get_content()[[1]]$get_content()

    +card$get_content()[[1]]$get_content()
    +

    +
    -


    -

    Method append_fs()

    +
    +

    +
    +
    +

    Method append_fs() +

    Appends the filter state list to the content and metadata of this TealReportCard. If the filter state list has an attribute named formatted, it appends it to the card otherwise it uses the default yaml::as.yaml to format the list. -If the filter state list is empty, nothing is appended to the content.

    -

    Usage

    -

    TealReportCard$append_fs(fs)

    +If the filter state list is empty, nothing is appended to the content.

    +
    +

    Usage +

    +

    +
    +
    TealReportCard$append_fs(fs)
    +

    +
    -

    Arguments

    -

    fs
    +

    Arguments +

    +

    +
    +
    +
    fs

    (teal_slices) object returned from teal_slices() function.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    self, invisibly.

    -


    -

    Method append_encodings()

    -

    Appends the encodings list to the content and metadata of this TealReportCard.

    -

    Usage

    -

    TealReportCard$append_encodings(encodings)

    +
    +

    +
    +
    +

    Method append_encodings() +

    +

    Appends the encodings list to the content and metadata of this TealReportCard.

    +
    +

    Usage +

    +

    +
    +
    TealReportCard$append_encodings(encodings)
    +

    +
    -

    Arguments

    -

    encodings
    +

    Arguments +

    +

    +
    +
    +
    encodings

    (list) list of encodings selections of the teal app.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    self, invisibly.

    -

    Examples

    -

    card <- TealReportCard$new()$append_encodings(list(variable1 = "X"))
    +

    Examples +

    +

    +
    +
    card <- TealReportCard$new()$append_encodings(list(variable1 = "X"))
     card$get_content()[[1]]$get_content()
    -

    +
    +

    +
    -


    -

    Method clone()

    -

    The objects of this class are cloneable with this method.

    -

    Usage

    -

    TealReportCard$clone(deep = FALSE)

    +
    +

    +
    +
    +

    Method clone() +

    +

    The objects of this class are cloneable with this method.

    +
    +

    Usage +

    +

    +
    +
    TealReportCard$clone(deep = FALSE)
    +

    +
    -

    Arguments

    -

    deep
    +

    Arguments +

    +

    +
    +
    +
    deep

    Whether to make a deep clone.

    -

    +
    +

    +
    @@ -224,7 +351,8 @@

    Arguments -

    Examples

    +

    Examples +

    
     ## ------------------------------------------------
     ## Method `TealReportCard$append_src`
    @@ -247,17 +375,19 @@ 

    Examples

    + +
    - + +
    - + + diff --git a/main/reference/TealSlicesBlock.html b/main/reference/TealSlicesBlock.html index 20c026d74d..9542fd00e5 100644 --- a/main/reference/TealSlicesBlock.html +++ b/main/reference/TealSlicesBlock.html @@ -1,5 +1,21 @@ - -TealSlicesBlock — TealSlicesBlock • teal + + + + + + +TealSlicesBlock — TealSlicesBlock • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + +
    @@ -81,34 +125,54 @@

    TealSlicesBlock

    -

    Super classes

    +

    Super classes +

    teal.reporter::ContentBlock -> teal.reporter::TextBlock -> TealSlicesBlock

    +

    Inherited methods


    -

    Method new()

    -

    Returns a TealSlicesBlock object.

    -

    Usage

    -

    TealSlicesBlock$new(content = teal_slices(), style = "verbatim")

    +

    +
    +
    +

    Method new() +

    +

    Returns a TealSlicesBlock object.

    +
    +

    Usage +

    +

    +
    +
    TealSlicesBlock$new(content = teal_slices(), style = "verbatim")
    +

    +
    -

    Arguments

    -

    content
    +

    Arguments +

    +

    +
    +
    +
    content

    (teal_slices) object returned from teal_slices() function.

    @@ -116,105 +180,180 @@

    Arguments -

    Details

    +

    Details +

    Returns a TealSlicesBlock object with no content and no parameters.

    -

    Returns

    +

    Returns +

    Object of class TealSlicesBlock, invisibly.

    -


    -

    Method set_content()

    +
    +

    +
    +
    +

    Method set_content() +

    Sets content of this TealSlicesBlock. Sets content as YAML text which represents a list generated from teal_slices. The list displays limited number of fields from teal_slice objects, but this list is sufficient to conclude which filters were applied. -When selected field in teal_slice object is a range, then it is displayed as a "min"

    -

    Usage

    -

    TealSlicesBlock$set_content(content)

    +When selected field in teal_slice object is a range, then it is displayed as a "min"

    +
    +

    Usage +

    +

    +
    +
    TealSlicesBlock$set_content(content)
    +

    +
    -

    Arguments

    -

    content
    +

    Arguments +

    +

    +
    +
    +
    content

    (teal_slices) object returned from teal_slices() function.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    self, invisibly.

    -


    -

    Method from_list()

    -

    Create the TealSlicesBlock from a list.

    -

    Usage

    -

    TealSlicesBlock$from_list(x)

    +
    +

    +
    +
    +

    Method from_list() +

    +

    Create the TealSlicesBlock from a list.

    +
    +

    Usage +

    +

    +
    +
    TealSlicesBlock$from_list(x)
    +

    +
    -

    Arguments

    -

    x
    +

    Arguments +

    +

    +
    +
    +
    x

    (named list) with two fields text and style. Use the get_available_styles method to get all possible styles.

    -

    +
    +

    +
    -

    Returns

    +

    Returns +

    self, invisibly.

    -

    Examples

    -

    TealSlicesBlock <- getFromNamespace("TealSlicesBlock", "teal")
    +

    Examples +

    +

    +
    +
    TealSlicesBlock <- getFromNamespace("TealSlicesBlock", "teal")
     block <- TealSlicesBlock$new()
     block$from_list(list(text = "sth", style = "default"))
    -

    +
    +

    +
    -


    -

    Method to_list()

    -

    Convert the TealSlicesBlock to a list.

    -

    Usage

    -

    TealSlicesBlock$to_list()

    +
    +

    +
    +
    +

    Method to_list() +

    +

    Convert the TealSlicesBlock to a list.

    +
    +

    Usage +

    +

    +
    +
    TealSlicesBlock$to_list()
    +

    +
    -

    Returns

    +

    Returns +

    named list with a text and style.

    -

    Examples

    -

    TealSlicesBlock <- getFromNamespace("TealSlicesBlock", "teal")
    +

    Examples +

    +

    +
    +
    TealSlicesBlock <- getFromNamespace("TealSlicesBlock", "teal")
     block <- TealSlicesBlock$new()
     block$to_list()
    -

    +
    +

    +
    -


    -

    Method clone()

    -

    The objects of this class are cloneable with this method.

    -

    Usage

    -

    TealSlicesBlock$clone(deep = FALSE)

    +
    +

    +
    +
    +

    Method clone() +

    +

    The objects of this class are cloneable with this method.

    +
    +

    Usage +

    +

    +
    +
    TealSlicesBlock$clone(deep = FALSE)
    +

    +
    -

    Arguments

    -

    deep
    +

    Arguments +

    +

    +
    +
    +
    deep

    Whether to make a deep clone.

    -

    +
    +

    +
    @@ -222,7 +361,8 @@

    Arguments -

    Examples

    +

    Examples +

    
     ## ------------------------------------------------
     ## Method `TealSlicesBlock$from_list`
    @@ -250,17 +390,19 @@ 

    Examples

    + +
    - + +
    - + + diff --git a/main/reference/append_module.html b/main/reference/append_module.html index 54a20dca6e..a73fcc58d4 100644 --- a/main/reference/append_module.html +++ b/main/reference/append_module.html @@ -1,5 +1,21 @@ - -Append a teal_module to children of a teal_modules object — append_module • teal + + + + + + +Append a teal_module to children of a teal_modules object — append_module • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + +
    @@ -80,39 +124,48 @@

    Append a teal_module to children of a teal_m

    -

    Usage

    +

    Usage +

    append_module(modules, module)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    (teal_modules)

    -
    module
    +
    module +

    (teal_module) object to be appended onto the children of modules

    -
    + +
    -

    Value

    +

    Value +

    A teal_modules object with module appended.

    + +
    - + +
    - + + diff --git a/main/reference/bookmarks_identical.html b/main/reference/bookmarks_identical.html index cd69f70846..02bf6a8b94 100644 --- a/main/reference/bookmarks_identical.html +++ b/main/reference/bookmarks_identical.html @@ -1,5 +1,21 @@ - -Compare bookmarks. — bookmarks_identical • teal + + + + + + +Compare bookmarks. — bookmarks_identical • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + +
    @@ -80,26 +124,33 @@

    Compare bookmarks.

    -

    Usage

    +

    Usage +

    bookmarks_identical(book1, book2)
    -

    Arguments

    +

    Arguments +

    -
    book1, book2
    +
    +
    book1, book2 +

    bookmark directories stored in shiny_bookmarks/; default to the two most recently modified directories

    -
    + +
    -

    Value

    +

    Value +

    Invisible NULL if bookmarks are identical or if there are no bookmarks to test. FALSE if inconsistencies are detected.

    -

    Details

    +

    Details +

    input environments are compared one variable at a time and if not identical, values in both bookmarks are reported. States of datatables are stripped of the time element before comparing because the time stamp is always different. @@ -109,7 +160,8 @@

    Detailsvalues environments are compared with all.equal.

    -

    How to use

    +

    How to use +

    Open an application, change relevant inputs (typically, all of them), and create a bookmark. @@ -118,17 +170,19 @@

    How to use

    + +
    - + +
    - + + diff --git a/main/reference/build_app_title.html b/main/reference/build_app_title.html index cc5261012e..af84b2bae6 100644 --- a/main/reference/build_app_title.html +++ b/main/reference/build_app_title.html @@ -1,5 +1,21 @@ - -Build app title with favicon — build_app_title • teal + + + + + + +Build app title with favicon — build_app_title • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + +
    @@ -80,7 +124,8 @@

    Build app title with favicon

    -

    Usage

    +

    Usage +

    build_app_title(
       title = "teal app",
       favicon =
    @@ -89,35 +134,43 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    title
    +
    +
    title +

    (character) The browser title for the teal app.

    -
    favicon
    +
    favicon +

    (character) The path for the icon for the title. The image/icon path can be remote or the static path accessible by shiny, like the www/

    -
    + +
    -

    Value

    +

    Value +

    A shiny.tag containing the element that adds the title and logo to the shiny app.

    + +
    - + +
    - + + diff --git a/main/reference/call_once_when.html b/main/reference/call_once_when.html index 07f0a433d5..8832dbcc8c 100644 --- a/main/reference/call_once_when.html +++ b/main/reference/call_once_when.html @@ -1,7 +1,23 @@ - -Calls expression when condition is met — call_once_when • teal + + + + + + +Calls expression when condition is met — call_once_when • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + +
    @@ -83,7 +127,8 @@

    Calls expression when condition is met

    -

    Usage

    +

    Usage +

    call_once_when(
       eventExpr,
       handlerExpr,
    @@ -94,57 +139,68 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    eventExpr
    +
    +
    eventExpr +

    A (quoted or unquoted) logical expression that represents the event; this can be a simple reactive value like input$click, a call to a reactive expression like dataset(), or even a complex expression inside curly braces.

    -
    handlerExpr
    +
    handlerExpr +

    The expression to call whenever eventExpr is invalidated. This should be a side-effect-producing action (the return value will be ignored). It will be executed within an isolate() scope.

    -
    event.env
    +
    event.env +

    The parent environment for the reactive expression. By default, this is the calling environment, the same as when defining an ordinary non-reactive expression. If eventExpr is a quosure and event.quoted is TRUE, then event.env is ignored.

    -
    handler.env
    +
    handler.env +

    The parent environment for the reactive expression. By default, this is the calling environment, the same as when defining an ordinary non-reactive expression. If handlerExpr is a quosure and handler.quoted is TRUE, then handler.env is ignored.

    -
    ...
    +
    ... +

    additional arguments passed to observeEvent with the exception of eventExpr that is not allowed.

    -
    + +
    -

    Value

    +

    Value +

    An observer.

    + +
    - + +
    - + + diff --git a/main/reference/check_filter_datanames.html b/main/reference/check_filter_datanames.html index 496f9b7a45..8367a7e06c 100644 --- a/main/reference/check_filter_datanames.html +++ b/main/reference/check_filter_datanames.html @@ -1,7 +1,23 @@ - -Check datanames in filters — check_filter_datanames • teal + + + + + + +Check datanames in filters — check_filter_datanames • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + +
    @@ -83,39 +127,48 @@

    Check datanames in filters

    -

    Usage

    +

    Usage +

    check_filter_datanames(filters, datanames)
    -

    Arguments

    +

    Arguments +

    -
    filters
    +
    +
    filters +

    (teal_slices) object

    -
    datanames
    +
    datanames +

    (character) names of datasets available in the data object

    -
    + +
    -

    Value

    +

    Value +

    A character(1) containing error message or TRUE if validation passes.

    + +
    - + +
    - + + diff --git a/main/reference/check_modules_datanames.html b/main/reference/check_modules_datanames.html index 0afdc1bcb8..8aa29bfaba 100644 --- a/main/reference/check_modules_datanames.html +++ b/main/reference/check_modules_datanames.html @@ -1,17 +1,33 @@ - -Check datanames in modules — check_modules_datanames • teal + + + + + +Check datanames in modules — check_modules_datanames • teal + + + + + + + +"> + + + + Skip to contents @@ -27,11 +43,13 @@ + +
    @@ -90,46 +134,58 @@

    Check datanames in modules

    These functions check if specified datanames in modules match those in the data object, returning error messages or TRUE for successful validation. Two functions return error message -in different forms:

    • check_modules_datanames returns character(1) for basic assertion usage

    • +in different forms:

      +
        +
      • check_modules_datanames returns character(1) for basic assertion usage

      • check_modules_datanames_html returns shiny.tag.list to display it in the app.

      • -
    + +
    -

    Usage

    +

    Usage +

    check_modules_datanames(modules, datanames)
     
     check_modules_datanames_html(modules, datanames)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    (teal_modules) object

    -
    datanames
    +
    datanames +

    (character) names of datasets available in the data object

    -
    + +
    -

    Value

    +

    Value +

    TRUE if validation passes, otherwise character(1) or shiny.tag.list

    + +
    - + +
    - + + diff --git a/main/reference/check_reactive.html b/main/reference/check_reactive.html index ec78477434..5bbae54e38 100644 --- a/main/reference/check_reactive.html +++ b/main/reference/check_reactive.html @@ -1,5 +1,21 @@ - -Check that argument is reactive. — check_reactive • teal + + + + + + +Check that argument is reactive. — check_reactive • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    Check that argument is reactive.

    -

    Usage

    +

    Usage +

    check_reactive(x, null.ok = FALSE)
     
     test_reactive(x, null.ok = FALSE)
    @@ -94,33 +139,41 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    [any]
    Object to check.

    -
    null.ok
    +
    null.ok +

    [logical(1)]
    If set to TRUE, x may also be NULL. In this case only a type check of x is performed, all additional checks are disabled.

    -
    .var.name
    +
    .var.name +

    [character(1)]
    Name of the checked object to print in assertions. Defaults to the heuristic implemented in vname.

    -
    add
    +
    add +

    [AssertCollection]
    Collection to store assertion messages. See AssertCollection.

    -
    + +
    -

    Value

    +

    Value +

    Depending on the function prefix: If the check is successful, the functions assertClass/assert_class return @@ -140,17 +193,19 @@

    Value

    + + - + + - + + diff --git a/main/reference/create_app_id.html b/main/reference/create_app_id.html index 54c1cc36de..b1d832447e 100644 --- a/main/reference/create_app_id.html +++ b/main/reference/create_app_id.html @@ -1,5 +1,21 @@ - -Application ID — create_app_id • teal + + + + + + +Application ID — create_app_id • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,45 +124,55 @@

    Application ID

    -

    Usage

    +

    Usage +

    create_app_id(data, modules)
    -

    Arguments

    +

    Arguments +

    -
    data
    +
    +
    data +

    (teal_data or teal_data_module) as accepted by init

    -
    modules
    +
    modules +

    (teal_modules) object as accepted by init

    -
    + +
    -

    Value

    +

    Value +

    A single character string.

    -

    Details

    +

    Details +

    Calculate app ID that will be used to stamp filter state snapshots. App ID is a hash of the app's data and modules. See "transferring snapshots" section in ?snapshot.

    + + - + + - + + diff --git a/main/reference/decorate_err_msg.html b/main/reference/decorate_err_msg.html index 04a23cd832..8095bd3e0f 100644 --- a/main/reference/decorate_err_msg.html +++ b/main/reference/decorate_err_msg.html @@ -1,5 +1,21 @@ - -Capture error and decorate error message. — decorate_err_msg • teal + + + + + + +Capture error and decorate error message. — decorate_err_msg • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,43 +124,53 @@

    Capture error and decorate error message.

    -

    Usage

    +

    Usage +

    decorate_err_msg(x, pre = character(0), post = character(0))
    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    object to evaluate

    -
    pre
    +
    pre +

    (character(1)) A string to prepend to error message

    -
    post
    +
    post +

    (character(1)) A string to append to error message

    -
    + +
    -

    Value

    +

    Value +

    x if no error, otherwise throws error with decorated message

    + + - + + - + + diff --git a/main/reference/deep_copy_filter.html b/main/reference/deep_copy_filter.html index 1b8091ede0..953e8bc9cd 100644 --- a/main/reference/deep_copy_filter.html +++ b/main/reference/deep_copy_filter.html @@ -1,11 +1,27 @@ - -Deep copy teal_slices — deep_copy_filter • teal + + + + + +Deep copy teal_slices — deep_copy_filter • teal + + + + + + + +shiny session starts."> + + + + Skip to contents @@ -21,11 +37,13 @@ + + @@ -76,7 +120,8 @@
    @@ -89,35 +134,43 @@

    Deep copy teal_slices

    -

    Usage

    +

    Usage +

    deep_copy_filter(filter)
    -

    Arguments

    +

    Arguments +

    -
    filter
    +
    +
    filter +

    (teal_slices)

    -
    + +
    -

    Value

    +

    Value +

    teal_slices

    + + - + + - + + diff --git a/main/reference/dot-add_signature_to_data.html b/main/reference/dot-add_signature_to_data.html index 7b628fcafc..8f9b695989 100644 --- a/main/reference/dot-add_signature_to_data.html +++ b/main/reference/dot-add_signature_to_data.html @@ -1,5 +1,21 @@ - -Adds signature protection to the datanames in the data — .add_signature_to_data • teal + + + + + + +Adds signature protection to the datanames in the data — .add_signature_to_data • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,35 +124,43 @@

    Adds signature protection to the datanames in the data

    -

    Usage

    +

    Usage +

    .add_signature_to_data(data)
    -

    Arguments

    +

    Arguments +

    -
    data
    +
    +
    data +

    (teal_data)

    -
    + +
    -

    Value

    +

    Value +

    teal_data with additional code that has signature of the datanames

    + + - + + - + + diff --git a/main/reference/dot-get_hashes_code.html b/main/reference/dot-get_hashes_code.html index 8bec2c0eb3..81785fe406 100644 --- a/main/reference/dot-get_hashes_code.html +++ b/main/reference/dot-get_hashes_code.html @@ -1,5 +1,21 @@ - -Get code that tests the integrity of the reproducible data — .get_hashes_code • teal + + + + + + +Get code that tests the integrity of the reproducible data — .get_hashes_code • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,39 +124,48 @@

    Get code that tests the integrity of the reproducible data

    -

    Usage

    +

    Usage +

    .get_hashes_code(data, datanames = names(data))
    -

    Arguments

    +

    Arguments +

    -
    data
    +
    +
    data +

    (teal_data) object holding the data

    -
    datanames
    +
    datanames +

    (character) names of datasets

    -
    + +
    -

    Value

    +

    Value +

    A character vector with the code lines.

    + + - + + - + + diff --git a/main/reference/dot-smart_rbind.html b/main/reference/dot-smart_rbind.html index c66725d884..126b687fa1 100644 --- a/main/reference/dot-smart_rbind.html +++ b/main/reference/dot-smart_rbind.html @@ -1,5 +1,21 @@ - -Smart rbind — .smart_rbind • teal + + + + + + +Smart rbind — .smart_rbind • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -70,7 +114,8 @@
    @@ -80,31 +125,38 @@

    Smart rbind

    -

    Usage

    +

    Usage +

    .smart_rbind(...)
    -

    Arguments

    +

    Arguments +

    -
    ...
    +
    +
    ... +

    (data.frame)

    -
    + + + + - + + - + + diff --git a/main/reference/example_module.html b/main/reference/example_module.html index e62d001974..a1fbabb727 100644 --- a/main/reference/example_module.html +++ b/main/reference/example_module.html @@ -1,5 +1,21 @@ - -An example teal module — example_module • teal + + + + + + +An example teal module — example_module • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    An example teal module

    -

    Usage

    +

    Usage +

    example_module(
       label = "example teal module",
       datanames = "all",
    @@ -89,36 +134,48 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    label
    +
    +
    label +

    (character(1)) Label shown in the navigation item for the module or module group. For modules() defaults to "root". See Details.

    -
    datanames
    -

    (character) Names of the datasets relevant to the item. -There are 2 reserved values that have specific behaviors:

    • The keyword "all" includes all datasets available in the data passed to the teal application.

    • +
      datanames +
      +
      +

      (character) Names of the datasets relevant to the item. +There are 2 reserved values that have specific behaviors:

      +
        +
      • The keyword "all" includes all datasets available in the data passed to the teal application.

      • NULL hides the sidebar panel completely.

      • If transformers are specified, their datanames are automatically added to this datanames argument.

      • -
      +
    +
    -
    transformers
    +
    transformers +

    (list of teal_data_module) that will be applied to transform the data. Each transform module UI will appear in the teal's sidebar panel. Transformers' datanames are added to the datanames. See teal_transform_module().

    -
    + +
    -

    Value

    +

    Value +

    A teal module which can be included in the modules argument to init().

    -

    Examples

    +

    Examples +

    app <- init(
       data = teal_data(IRIS = iris, MTCARS = mtcars),
       modules = example_module()
    @@ -129,17 +186,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/extract_transformers.html b/main/reference/extract_transformers.html index a7e6de1794..08da3f49d4 100644 --- a/main/reference/extract_transformers.html +++ b/main/reference/extract_transformers.html @@ -1,5 +1,21 @@ - -Extract all transformers from modules. — extract_transformers • teal + + + + + + +Extract all transformers from modules. — extract_transformers • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,35 +124,43 @@

    Extract all transformers from modules.

    -

    Usage

    +

    Usage +

    extract_transformers(modules)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    teal_modules or teal_module

    -
    + +
    -

    Value

    +

    Value +

    A list of teal_transform_module nested in the same way as input modules.

    + + - + + - + + diff --git a/main/reference/get_client_timezone.html b/main/reference/get_client_timezone.html index 53ab0f5908..c4ddc0ec57 100644 --- a/main/reference/get_client_timezone.html +++ b/main/reference/get_client_timezone.html @@ -1,7 +1,23 @@ - -Get client timezone — get_client_timezone • teal + + + + + + +Get client timezone — get_client_timezone • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,36 +127,44 @@

    Get client timezone

    -

    Usage

    +

    Usage +

    get_client_timezone(ns)
    -

    Arguments

    +

    Arguments +

    -
    ns
    +
    +
    ns +

    (function) namespace function passed from the session object in the shiny server. For shiny modules this will allow for proper name spacing of the registered input.

    -
    + +
    -

    Value

    +

    Value +

    NULL, invisibly.

    + + - + + - + + diff --git a/main/reference/get_rcode_libraries.html b/main/reference/get_rcode_libraries.html index e735eb9588..7988f6a4a1 100644 --- a/main/reference/get_rcode_libraries.html +++ b/main/reference/get_rcode_libraries.html @@ -1,5 +1,21 @@ - -Generates library calls from current session info — get_rcode_libraries • teal + + + + + + +Generates library calls from current session info — get_rcode_libraries • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,27 +124,31 @@

    Generates library calls from current session info

    -

    Usage

    +

    Usage +

    get_rcode_libraries()
    -

    Value

    +

    Value +

    Character vector of library(<package>) calls.

    + + - + + - + + diff --git a/main/reference/get_unique_labels.html b/main/reference/get_unique_labels.html index ee8e49aeff..da77b8f024 100644 --- a/main/reference/get_unique_labels.html +++ b/main/reference/get_unique_labels.html @@ -1,5 +1,21 @@ - -Get unique labels — get_unique_labels • teal + + + + + + +Get unique labels — get_unique_labels • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,35 +124,43 @@

    Get unique labels

    -

    Usage

    +

    Usage +

    get_unique_labels(labels)
    -

    Arguments

    +

    Arguments +

    -
    labels
    +
    +
    labels +

    (character) vector of labels

    -
    + +
    -

    Value

    +

    Value +

    (character) vector of unique labels

    + + - + + - + + diff --git a/main/reference/include_css_files.html b/main/reference/include_css_files.html index 890c33b96d..99b15d1924 100644 --- a/main/reference/include_css_files.html +++ b/main/reference/include_css_files.html @@ -1,9 +1,25 @@ - -Include CSS files from /inst/css/ package directory to application header — include_css_files • teal + + + + + +Include CSS files from /inst/css/ package directory to application header — include_css_files • teal + + + + + + + +as needed. Thus, we do not export this method."> + + + + Skip to contents @@ -19,11 +35,13 @@ + + @@ -86,35 +130,43 @@

    Include CSS files from /inst/css/ package director
    -

    Usage

    +

    Usage +

    include_css_files(pattern = "*")
    -

    Arguments

    +

    Arguments +

    -
    pattern
    +
    +
    pattern +

    (character) pattern of files to be included

    -
    + +
    -

    Value

    +

    Value +

    HTML code that includes CSS files.

    + + - + + - + + diff --git a/main/reference/include_js_files.html b/main/reference/include_js_files.html index 52e67bb423..8a0d000d90 100644 --- a/main/reference/include_js_files.html +++ b/main/reference/include_js_files.html @@ -1,9 +1,25 @@ - -Include JS files from /inst/js/ package directory to application header — include_js_files • teal + + + + + +Include JS files from /inst/js/ package directory to application header — include_js_files • teal + + + + + + + +as needed. Thus, we do not export this method"> + + + + Skip to contents @@ -19,11 +35,13 @@ + + @@ -86,39 +130,48 @@

    Include JS files from /inst/js/ package directory
    -

    Usage

    +

    Usage +

    include_js_files(pattern = NULL, except = NULL)
    -

    Arguments

    +

    Arguments +

    -
    pattern
    +
    +
    pattern +

    (character) pattern of files to be included, passed to system.file

    -
    except
    +
    except +

    (character) vector of basename filenames to be excluded

    -
    + +
    -

    Value

    +

    Value +

    HTML code that includes JS files.

    + + - + + - + + diff --git a/main/reference/include_teal_css_js.html b/main/reference/include_teal_css_js.html index 9dce9a9240..5fdbe47f84 100644 --- a/main/reference/include_teal_css_js.html +++ b/main/reference/include_teal_css_js.html @@ -1,13 +1,29 @@ - -Code to include teal CSS and JavaScript files — include_teal_css_js • teal + + + + + +Code to include teal CSS and JavaScript files — include_teal_css_js • teal + + + + + + + +Also initializes shinyjs so you can use it."> + + + + Skip to contents @@ -23,11 +39,13 @@ + + @@ -92,31 +136,36 @@

    Code to include teal CSS and JavaScript
    -

    Usage

    +

    Usage +

    include_teal_css_js()
    -

    Value

    +

    Value +

    A shiny.tag.list.

    -

    Details

    +

    Details +

    Simply add include_teal_css_js() as one of the UI elements.

    + + - + + - + + diff --git a/main/reference/index.html b/main/reference/index.html index 22aec02df6..e5cea00fc2 100644 --- a/main/reference/index.html +++ b/main/reference/index.html @@ -1,5 +1,19 @@ - -Package index • teal + + + + + + +Package index • teal + + + + + + + + + Skip to contents @@ -15,11 +29,13 @@ + + @@ -74,239 +116,311 @@

    Package index

    -

    Core teal functions

    +

    Core teal functions +

    Main functions needed to build a teal app

    -
    +
    +
    -
    +
    +
    init() stable
    Create the server and UI function for the shiny app
    -
    +
    +
    +
    teal_data_module() eval_code(<teal_data_module>,<character>) within(<teal_data_module>) experimental
    Data module for teal applications
    -
    +
    +
    +
    teal_transform_module() experimental
    Data module for teal transformers.
    -
    +
    +
    +
    ui_teal_with_splash() srv_teal_with_splash() deprecated
    -
    UI and server modules of teal
    -
    +
    UI and server modules of teal +
    +
    +
    +
    ui_teal() srv_teal() stable
    -
    teal main module
    -
    +
    +teal main module
    +
    +
    +
    module() modules() format(<teal_module>) format(<teal_modules>) print(<teal_module>) print(<teal_modules>) set_datanames() stable
    Create teal_module and teal_modules objects
    -
    +
    +
    +
    teal_slices() as.teal_slices() c(<teal_slices>)
    Filter settings for teal applications
    -
    -

    Helper Functions

    + +
    +
    +

    Helper Functions +

    Helper functions for teal

    -
    +
    +
    -
    +
    +
    build_app_title()
    Build app title with favicon
    -
    -

    Example module

    + +
    +
    +

    Example module +

    A simple teal module

    -
    +
    +
    -
    +
    +
    example_module() experimental
    An example teal module
    -
    -

    Creating reports

    + +
    +
    +

    Creating reports +

    -
    +
    +
    -
    +
    +
    reporter_previewer_module() experimental
    Create a teal module for previewing a report
    -
    +
    +
    +
    TealReportCard experimental
    TealReportCard
    -
    +
    +
    +
    report_card_template()
    Template function for TealReportCard creation and customization
    -
    -

    Landing popup

    + +
    +
    +

    Landing popup +

    -
    +
    +
    -
    +
    +
    landing_popup_module()
    Landing popup module
    -
    -

    Functions for module developers

    + +
    +
    +

    Functions for module developers +

    -
    +
    +
    -
    +
    +
    new_tdata() tdata2env() get_code_tdata() join_keys(<tdata>) get_metadata() as_tdata() superseded
    Create a tdata object
    -
    +
    +
    +
    teal_data_module() eval_code(<teal_data_module>,<character>) within(<teal_data_module>) experimental
    Data module for teal applications
    -
    +
    +
    +
    show_rcode_modal() deprecated
    Show R code modal
    -
    -

    Validation functions

    + +
    +
    +

    Validation functions +

    -
    +
    +
    -
    +
    +
    validate_has_data() stable
    Validate that dataset has a minimum number of observations
    -
    +
    +
    +
    validate_has_elements() stable
    Validates that vector has length greater than 0
    -
    +
    +
    +
    validate_has_variable() stable
    Validates that dataset contains specific variable
    -
    +
    +
    +
    validate_in() stable
    Validates that vector includes all expected values
    -
    +
    +
    +
    validate_inputs()
    Send input validation messages to output
    -
    +
    +
    +
    validate_n_levels() stable
    Validate that variables has expected number of levels
    -
    +
    +
    +
    validate_no_intersection() stable
    Validates no intersection between two vectors
    -
    +
    +
    +
    validate_one_row_per_id() stable
    Validate that dataset has unique rows for key variables
    -
    + + + + - + + - + + diff --git a/main/reference/init.html b/main/reference/init.html index ed8feff71c..779bfa5e73 100644 --- a/main/reference/init.html +++ b/main/reference/init.html @@ -1,9 +1,25 @@ - -Create the server and UI function for the shiny app — init • teal + + + + + +Create the server and UI function for the shiny app — init • teal + + + + + + + +teal app that is composed of teal modules."> + + + + Skip to contents @@ -19,11 +35,13 @@ + + @@ -86,7 +130,8 @@

    Create the server and UI function for the shiny app

    -

    Usage

    +

    Usage +

    init(
       data,
       modules,
    @@ -100,16 +145,20 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    data
    +
    +
    data +

    (teal_data or teal_data_module) For constructing the data object, refer to teal_data() and teal_data_module(). If datanames are not set for the teal_data object, defaults from the teal_data environment will be used.

    -
    modules
    +
    modules +

    (list or teal_modules or teal_module) Nested list of teal_modules or teal_module objects or a single teal_modules or teal_module object. These are the specific output modules which @@ -117,46 +166,55 @@

    Argumentsfilter +
    filter +

    (teal_slices) Optionally, specifies the initial filter using teal_slices().

    -
    title
    +
    title +

    (shiny.tag or character(1)) Optionally, the browser window title. Defaults to a title "teal app" with the icon of NEST. Can be created using the build_app_title() or by passing a valid shiny.tag which is a head tag with title and link tag.

    -
    header
    +
    header +

    (shiny.tag or character(1)) Optionally, the header of the app.

    - +

    (shiny.tag or character(1)) Optionally, the footer of the app.

    -
    id
    +
    id +

    (character) Optionally, a string specifying the shiny module id in cases it is used as a shiny module rather than a standalone shiny app. This is a legacy feature.

    -
    landing_popup
    +
    landing_popup +

    (teal_module_landing) Optionally, a landing_popup_module to show up as soon as the teal app is initialized.

    -

    + +
    -

    Value

    +

    Value +

    Named list containing server and UI functions.

    -

    Examples

    +

    Examples +

    app <- init(
       data = within(
         teal_data(),
    @@ -210,17 +268,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/is_arg_used.html b/main/reference/is_arg_used.html index 25de517c1a..aad4cb7e94 100644 --- a/main/reference/is_arg_used.html +++ b/main/reference/is_arg_used.html @@ -1,5 +1,21 @@ - -Does the object make use of the arg — is_arg_used • teal + + + + + + +Does the object make use of the arg — is_arg_used • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -70,7 +114,8 @@
    @@ -80,39 +125,48 @@

    Does the object make use of the arg

    -

    Usage

    +

    Usage +

    is_arg_used(modules, arg)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    (teal_module or teal_modules) object

    -
    arg
    +
    arg +

    (character(1)) names of the arguments to be checked against formals of teal modules.

    -
    + +
    -

    Value

    +

    Value +

    logical whether the object makes use of arg.

    + + - + + - + + diff --git a/main/reference/landing_popup_module.html b/main/reference/landing_popup_module.html index e551958049..657ac930d3 100644 --- a/main/reference/landing_popup_module.html +++ b/main/reference/landing_popup_module.html @@ -1,9 +1,25 @@ - -Landing popup module — landing_popup_module • teal + + + + + +Landing popup module — landing_popup_module • teal + + + + + + + +The dialog blocks access to the application and must be closed with a button before the application can be viewed."> + + + + Skip to contents @@ -19,11 +35,13 @@ + + @@ -86,7 +130,8 @@

    Landing popup module

    -

    Usage

    +

    Usage +

    landing_popup_module(
       label = "Landing Popup",
       title = NULL,
    @@ -96,33 +141,42 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    label
    +
    +
    label +

    (character(1)) Label of the module.

    -
    title
    +
    title +

    (character(1)) Text to be displayed as popup title.

    -
    content
    +
    content +

    (character(1), shiny.tag or shiny.tag.list) with the content of the popup. Passed to ... of shiny::modalDialog. See examples.

    -
    buttons
    +
    buttons +

    (shiny.tag or shiny.tag.list) Typically a modalButton or actionButton. See examples.

    -
    + +
    -

    Value

    +

    Value +

    A teal_module (extended with teal_landing_module class) to be used in teal applications.

    -

    Examples

    +

    Examples +

    app1 <- init(
       data = teal_data(iris = iris),
       modules = modules(
    @@ -169,17 +223,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/module_bookmark_manager.html b/main/reference/module_bookmark_manager.html index 5166b9ecaa..14df6ecbb2 100644 --- a/main/reference/module_bookmark_manager.html +++ b/main/reference/module_bookmark_manager.html @@ -1,7 +1,23 @@ - -App state management. — module_bookmark_manager • teal + + + + + + +App state management. — module_bookmark_manager • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,7 +127,8 @@

    App state management.

    -

    Usage

    +

    Usage +

    ui_bookmark_panel(id, modules)
     
     srv_bookmark_panel(id, modules)
    @@ -94,29 +139,36 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character) Optionally, a string specifying the shiny module id in cases it is used as a shiny module rather than a standalone shiny app. This is a legacy feature.

    -
    modules
    +
    modules +

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

    -
    + +
    -

    Value

    +

    Value +

    Invisible NULL.

    -

    Details

    +

    Details +

    This module introduces bookmarks into teal apps: the shiny bookmarking mechanism becomes enabled and server-side bookmarks can be created.

    The bookmark manager presents a button with the bookmark icon and is placed in the tab-bar. @@ -128,7 +180,8 @@

    Detailsteal_bookmarkable attribute to TRUE.

    -

    Server logic

    +

    Server logic +

    A bookmark is a URL that contains the app address with a /?_state_id_=<bookmark_dir> suffix. @@ -136,25 +189,31 @@

    Server logic -

    Note

    +

    Note +

    -

    To enable bookmarking use either:

    • shiny app by using shinyApp(..., enableBookmarking = "server") (not supported in shinytest2)

    • +

      To enable bookmarking use either:

      +
        +
      • shiny app by using shinyApp(..., enableBookmarking = "server") (not supported in shinytest2)

      • set options(shiny.bookmarkStore = "server") before running the app

      • -
    + + + + - + + - + + diff --git a/main/reference/module_data_summary.html b/main/reference/module_data_summary.html index 9e0429215e..9fe48d9d80 100644 --- a/main/reference/module_data_summary.html +++ b/main/reference/module_data_summary.html @@ -1,5 +1,21 @@ - -Data summary — module_data_summary • teal + + + + + + +Data summary — module_data_summary • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    Data summary

    -

    Usage

    +

    Usage +

    ui_data_summary(id)
     
     srv_data_summary(id, teal_data)
    @@ -95,60 +140,76 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character(1)) shiny module instance id.

    -
    teal_data
    +
    teal_data +

    (reactive returning teal_data)

    -
    current_data
    +
    current_data +

    (object) current object (after filtering and transforming).

    -
    initial_data
    +
    initial_data +

    (object) initial object.

    -
    dataname
    +
    dataname +

    (character(1))

    -
    subject_keys
    +
    subject_keys +

    (character) names of the columns which determine a single unique subjects

    -
    + +
    -

    Value

    +

    Value +

    NULL.

    -

    Details

    +

    Details +

    Handling different data classes: -get_filter_overview() is a pseudo S3 method which has variants for:

    • array (data.frame, DataFrame, array, Matrix and SummarizedExperiment): Method variant +get_filter_overview() is a pseudo S3 method which has variants for:

      +
        +
      • array (data.frame, DataFrame, array, Matrix and SummarizedExperiment): Method variant can be applied to any two-dimensional objects on which ncol() can be used.

      • MultiAssayExperiment: for which summary contains counts for colData and all experiments.

      • For other data types module displays data name with warning icon and no more details.

      • -

      Module includes also "Show/Hide unsupported" button to toggle rows of the summary table +

    +

    Module includes also "Show/Hide unsupported" button to toggle rows of the summary table containing datasets where number of observations are not calculated.

    + + - + + - + + diff --git a/main/reference/module_filter_data.html b/main/reference/module_filter_data.html index 11ac669fb0..330e9cda59 100644 --- a/main/reference/module_filter_data.html +++ b/main/reference/module_filter_data.html @@ -1,13 +1,29 @@ - -Filter panel module in teal — module_filter_data • teal + + + + + +Filter panel module in teal — module_filter_data • teal + + + + + + + +currently displayed."> + + + + Skip to contents @@ -23,11 +39,13 @@ + + @@ -92,7 +136,8 @@

    Filter panel module in teal

    -

    Usage

    +

    Usage +

    ui_filter_data(id)
     
     srv_filter_data(id, datasets, active_datanames, data_rv, is_active)
    @@ -105,56 +150,70 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character) Optionally, a string specifying the shiny module id in cases it is used as a shiny module rather than a standalone shiny app. This is a legacy feature.

    -
    datasets
    +
    datasets +

    (reactive returning FilteredData or NULL) When datasets is passed from the parent module (srv_teal) then dataset is a singleton which implies in filter-panel to be "global". When NULL then filter-panel is "module-specific".

    -
    active_datanames
    +
    active_datanames +

    (reactive returning character) this module's data names

    -
    data_rv
    +
    data_rv +

    (reactive returning teal_data)

    -
    modules
    +
    modules +

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

    -
    + +
    -

    Value

    +

    Value +

    A eventReactive containing teal_data containing filtered objects and filter code. -eventReactive triggers only if all conditions are met:

    • tab is selected (is_active)

    • +eventReactive triggers only if all conditions are met:

      +
        +
      • tab is selected (is_active)

      • when filters are changed (get_filter_expr is different than previous)

      • -
    + + + + - + + - + + diff --git a/main/reference/module_filter_manager.html b/main/reference/module_filter_manager.html index 3121d73cd4..de3079de38 100644 --- a/main/reference/module_filter_manager.html +++ b/main/reference/module_filter_manager.html @@ -1,5 +1,21 @@ - -Manage multiple FilteredData objects — module_filter_manager • teal + + + + + + +Manage multiple FilteredData objects — module_filter_manager • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    Manage multiple FilteredData objects

    -

    Usage

    +

    Usage +

    ui_filter_manager_panel(id)
     
     srv_filter_manager_panel(id, slices_global)
    @@ -93,71 +138,95 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character(1)) shiny module instance id.

    -
    slices_global
    +
    slices_global +

    (reactiveVal) containing teal_slices.

    -
    module_fd
    +
    module_fd +

    (FilteredData) Object containing the data to be filtered in a single teal module.

    -
    + +
    -

    Value

    +

    Value +

    Module returns a slices_global (reactiveVal) containing a teal_slices object with mapping.

    -

    Slices global

    +

    Slices global +

    The key role in maintaining the module-specific filter states is played by the .slicesGlobal -object. It is a reference class that holds the following fields:

    • all_slices (reactiveVal) - reactive value containing all filters registered in an app.

    • +object. It is a reference class that holds the following fields:

      +
        +
      • all_slices (reactiveVal) - reactive value containing all filters registered in an app.

      • module_slices_api (reactiveValues) - reactive field containing references to each modules' FilteredData object methods. At this moment it is used only in srv_filter_manager to display the filter states in a table combining informations from all_slices and from FilteredData$get_available_teal_slices().

      • -

      During a session only new filters are added to all_slices unless module_snapshot_manager is +

    +

    During a session only new filters are added to all_slices unless module_snapshot_manager is used to restore previous state. Filters from all_slices can be activated or deactivated in a -module which is linked (both ways) by attr(, "mapping") so that:

    • If module's filter is added or removed in its FilteredData object, this information is passed +module which is linked (both ways) by attr(, "mapping") so that:

      +
        +
      • If module's filter is added or removed in its FilteredData object, this information is passed to SlicesGlobal which updates attr(, "mapping") accordingly.

      • When mapping changes in a SlicesGlobal, filters are set or removed from module's FilteredData.

      • -
    + +
    -

    Filter manager

    +

    Filter manager +

    -

    Filter-manager is split into two parts:

    1. ui/srv_filter_manager_panel - Called once for the whole app. This module observes changes in +

      Filter-manager is split into two parts:

      +
        +
      1. ui/srv_filter_manager_panel - Called once for the whole app. This module observes changes in the filters in slices_global and displays them in a table utilizing information from mapping:

      2. -
      • (TRUE) - filter is active in the module

      • +
    +
      +
    • (TRUE) - filter is active in the module

    • (FALSE) - filter is inactive in the module

    • (NA) - filter is not available in the module

    • -
    1. ui/srv_module_filter_manager - Called once for each teal_module. Handling filter states + +

        +
      1. ui/srv_module_filter_manager - Called once for each teal_module. Handling filter states for of single module and keeping module FilteredData consistent with slices_global, so that local filters are always reflected in the slices_global and its mapping and vice versa.

      2. -
    + + + + - + + - + + diff --git a/main/reference/module_init_data.html b/main/reference/module_init_data.html index 1f10ae967b..3fef7c450f 100644 --- a/main/reference/module_init_data.html +++ b/main/reference/module_init_data.html @@ -1,15 +1,31 @@ - -Data Module for teal — module_init_data • teal + + + + + +Data Module for teal — module_init_data • teal + + + + + + + +"> + + + + Skip to contents @@ -25,11 +41,13 @@ + + @@ -87,51 +131,66 @@

    Data Module for teal

    This module manages the data argument for srv_teal. The teal framework uses teal_data(), -which can be provided in various ways:

    1. Directly as a teal.data::teal_data() object. This will automatically convert it into a reactive teal_data.

    2. +which can be provided in various ways:

      +
        +
      1. Directly as a teal.data::teal_data() object. This will automatically convert it into a reactive teal_data.

      2. As a reactive object that returns a teal.data::teal_data() object.

      3. -
    + +
    -

    Usage

    +

    Usage +

    ui_init_data(id)
     
     srv_init_data(id, data)
    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character) Optionally, a string specifying the shiny module id in cases it is used as a shiny module rather than a standalone shiny app. This is a legacy feature.

    -
    data
    +
    data +

    (teal_data, teal_data_module, or reactive returning teal_data) The data which application will depend on.

    -
    + +
    -

    Value

    +

    Value +

    A reactive object that returns: Output of the data. If data fails then returned error is handled (after tryCatch()) so that rest of the application can respond to this respectively.

    -

    Details

    +

    Details +

    -

    Reactive teal_data:

    +

    Reactive teal_data: +

    The data in the application can be reactively updated, prompting srv_teal() to rebuild the -content accordingly. There are two methods for creating interactive teal_data:

    1. Using a reactive object provided from outside the teal application. In this scenario, +content accordingly. There are two methods for creating interactive teal_data:

      +
        +
      1. Using a reactive object provided from outside the teal application. In this scenario, reactivity is controlled by an external module, and srv_teal responds to changes.

      2. Using teal_data_module(), which is embedded within the teal application, allowing data to be resubmitted by the user as needed.

      3. -

      Since the server of teal_data_module() must return a reactive teal_data object, both +

    +

    Since the server of teal_data_module() must return a reactive teal_data object, both methods (1 and 2) produce the same reactive behavior within a teal application. The distinction lies in data control: the first method involves external control, while the second method involves control from a custom module within the app.

    @@ -141,17 +200,19 @@

    Reactive teal_data:

    + +
    - + + - + + diff --git a/main/reference/module_labels.html b/main/reference/module_labels.html index f1ea799545..c5ba28254a 100644 --- a/main/reference/module_labels.html +++ b/main/reference/module_labels.html @@ -1,5 +1,21 @@ - -Retrieve labels from teal_modules — module_labels • teal + + + + + + +Retrieve labels from teal_modules — module_labels • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -70,7 +114,8 @@
    @@ -80,36 +125,44 @@

    Retrieve labels from teal_modules

    -

    Usage

    +

    Usage +

    module_labels(modules)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    (teal_modules)

    -
    + +
    -

    Value

    +

    Value +

    A list containing the labels of the modules. If the modules are nested, the function returns a nested list of labels.

    + + - + + - + + diff --git a/main/reference/module_management.html b/main/reference/module_management.html index 6cb0b87cd4..4e6a1f9c7f 100644 --- a/main/reference/module_management.html +++ b/main/reference/module_management.html @@ -1,5 +1,21 @@ - -Extract/Remove module(s) of specific class — extract_module • teal + + + + + + +Extract/Remove module(s) of specific class — extract_module • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,44 +124,55 @@

    Extract/Remove module(s) of specific class

    -

    Usage

    +

    Usage +

    extract_module(modules, class)
     
     drop_module(modules, class)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    (teal_modules)

    -
    class
    +
    class +

    The class name of teal_module to be extracted or dropped.

    -
    + +
    -

    Value

    +

    Value +

    -
    • For extract_module, a teal_module of class class or teal_modules containing modules of class class.

    • +
        +
      • For extract_module, a teal_module of class class or teal_modules containing modules of class class.

      • For drop_module, the opposite, which is all teal_modules of class other than class.

      • -

      teal_modules

      +
    +

    teal_modules

    + + - + + - + + diff --git a/main/reference/module_snapshot_manager.html b/main/reference/module_snapshot_manager.html index c4606e94a3..9a9df49ec3 100644 --- a/main/reference/module_snapshot_manager.html +++ b/main/reference/module_snapshot_manager.html @@ -1,5 +1,21 @@ - -Filter state snapshot management — module_snapshot_manager • teal + + + + + + +Filter state snapshot management — module_snapshot_manager • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    Filter state snapshot management

    -

    Usage

    +

    Usage +

    ui_snapshot_manager_panel(id)
     
     srv_snapshot_manager_panel(id, slices_global)
    @@ -91,24 +136,31 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character(1)) shiny module instance id.

    -
    slices_global
    +
    slices_global +

    (reactiveVal) that contains a teal_slices object containing all teal_slices existing in the app, both active and inactive.

    -
    + +
    -

    Value

    +

    Value +

    list containing the snapshot history, where each element is an unlisted teal_slices object.

    -

    Details

    +

    Details +

    This module introduces snapshots: stored descriptions of the filter state of the entire application. Snapshots allow the user to save the current filter state of the application for later use in the session, as well as to save it to file in order to share it with an app developer or other users, @@ -120,7 +172,8 @@

    Details

    -

    Server logic

    +

    Server logic +

    Snapshots are basically teal_slices objects, however, since each module is served by a separate instance @@ -135,7 +188,8 @@

    Server logic -

    Snapshot mechanics

    +

    Snapshot mechanics +

    When a snapshot is captured, the user is prompted to name it. @@ -165,7 +219,8 @@

    Snapshot mechanics -

    Transferring snapshots

    +

    Transferring snapshots +

    Snapshots uploaded from disk should only be used in the same application they come from, @@ -175,7 +230,8 @@

    Transferring snapshots

    -

    Bookmarks

    +

    Bookmarks +

    An onBookmark callback creates a snapshot of the current filter state. @@ -184,22 +240,25 @@

    Bookmarks -

    Author

    +

    Author +

    Aleksander Chlebowski

    + + - + + - + + diff --git a/main/reference/module_teal.html b/main/reference/module_teal.html index 8c83190cf7..93b43b5aa3 100644 --- a/main/reference/module_teal.html +++ b/main/reference/module_teal.html @@ -1,11 +1,27 @@ - -teal main module — module_teal • teal + + + + + +teal main module — module_teal • teal + + + + + + + +automatically, which is not a case when calling ui/srv_teal directly."> + + + + Skip to contents @@ -21,11 +37,13 @@ + + @@ -76,7 +120,8 @@
    @@ -89,7 +134,8 @@

    teal main module

    -

    Usage

    +

    Usage +

    ui_teal(
       id,
       modules,
    @@ -102,16 +148,20 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character) Optionally, a string specifying the shiny module id in cases it is used as a shiny module rather than a standalone shiny app. This is a legacy feature.

    -
    modules
    +
    modules +

    (list or teal_modules or teal_module) Nested list of teal_modules or teal_module objects or a single teal_modules or teal_module object. These are the specific output modules which @@ -119,55 +169,69 @@

    Argumentstitle +
    title +

    (shiny.tag or character(1)) Optionally, the browser window title. Defaults to a title "teal app" with the icon of NEST. Can be created using the build_app_title() or by passing a valid shiny.tag which is a head tag with title and link tag.

    -
    header
    +
    header +

    (shiny.tag or character(1)) Optionally, the header of the app.

    - +

    (shiny.tag or character(1)) Optionally, the footer of the app.

    -
    data
    +
    data +

    (teal_data, teal_data_module, or reactive returning teal_data) The data which application will depend on.

    -
    filter
    +
    filter +

    (teal_slices) Optionally, specifies the initial filter using teal_slices().

    -

    + +
    -

    Value

    +

    Value +

    NULL invisibly

    -

    Details

    +

    Details +

    Module is responsible for creating the main shiny app layout and initializing all the necessary components. This module establishes reactive connection between the input data and every other component in the app. Reactive change of the data passed as an argument, reloads the app and -possibly keeps all input settings the same so the user can continue where one left off.

    -

    data flow in teal application

    +possibly keeps all input settings the same so the user can continue where one left off.

    +
    +

    data flow in teal application +

    This module supports multiple data inputs but eventually, they are all converted to reactive returning teal_data in this module. On this reactive teal_data object several actions are -performed:

    + +
    -

    Fallback on failure

    +

    Fallback on failure +

    teal is designed in such way that app will never crash if the error is introduced in any @@ -179,17 +243,19 @@

    Fallback on failure

    + +
    - + + - + + diff --git a/main/reference/module_teal_data.html b/main/reference/module_teal_data.html index 76b1d9c571..e17695f219 100644 --- a/main/reference/module_teal_data.html +++ b/main/reference/module_teal_data.html @@ -1,11 +1,27 @@ - -Execute and validate teal_data_module — module_teal_data • teal + + + + + +Execute and validate teal_data_module — module_teal_data • teal + + + + + + + +teal_data() which is a standard data class in whole teal framework."> + + + + Skip to contents @@ -21,11 +37,13 @@ + + @@ -76,7 +120,8 @@
    @@ -89,7 +134,8 @@

    Execute and validate teal_data_module

    -

    Usage

    +

    Usage +

    ui_teal_data(id, data_module = function(id) NULL)
     
     srv_teal_data(
    @@ -112,68 +158,84 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character(1)) Module id

    -
    data_module
    +
    data_module +

    (teal_data_module)

    -
    modules
    +
    modules +

    (teal_modules or teal_module) For datanames validation purpose

    -
    validate_shiny_silent_error
    +
    validate_shiny_silent_error +

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

    -
    is_transformer_failed
    +
    is_transformer_failed +

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

    -
    data
    +
    data +

    (reactive teal_data)

    -
    + +
    -

    Value

    +

    Value +

    reactive teal_data

    -

    data validation

    +

    data validation +

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

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

    2. +Output data is invalid if:

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

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

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

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

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

      6. -

      teal (observers in srv_teal) always waits to render an app until reactive teal_data is +

    +

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

    + + - + + - + + diff --git a/main/reference/module_teal_lockfile.html b/main/reference/module_teal_lockfile.html index 45ead3fad7..c95268f0a9 100644 --- a/main/reference/module_teal_lockfile.html +++ b/main/reference/module_teal_lockfile.html @@ -1,5 +1,21 @@ - -Generate lockfile for application's environment reproducibility — module_teal_lockfile • teal + + + + + + +Generate lockfile for application's environment reproducibility — module_teal_lockfile • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    Generate lockfile for application's environment reproducibility

    -

    Usage

    +

    Usage +

    ui_teal_lockfile(id)
     
     srv_teal_lockfile(id)
    @@ -95,22 +140,30 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    lockfile_path
    +
    +
    lockfile_path +

    (character) path to the lockfile.

    -
    + +
    -

    Value

    +

    Value +

    NULL

    -

    Different ways of creating lockfile

    +

    Different ways of creating lockfile +

    -

    teal leverages renv::snapshot(), which offers multiple methods for lockfile creation.

    • Working directory lockfile: teal, by default, will create an implicit type lockfile that uses +

      teal leverages renv::snapshot(), which offers multiple methods for lockfile creation.

      +
        +
      • Working directory lockfile: teal, by default, will create an implicit type lockfile that uses renv::dependencies() to detect all R packages in the current project's working directory.

      • DESCRIPTION-based lockfile: To generate a lockfile based on a DESCRIPTION file in your working directory, set renv::settings$snapshot.type("explicit"). The naming convention for type follows @@ -118,30 +171,35 @@

        Different ways of creating lockfile DESCRIPTION fields included in the lockfile.

      • Custom files-based lockfile: To specify custom files as the basis for the lockfile, set renv::settings$snapshot.type("custom") and configure the renv.snapshot.filter option.

      • -
    + +
    -

    lockfile usage

    +

    lockfile usage +

    After creating the lockfile, you can restore the application's environment using renv::restore().

    -

    See also

    +

    See also +

    + + - + + - + + diff --git a/main/reference/module_teal_module.html b/main/reference/module_teal_module.html index 12c30fa621..1903fce1cc 100644 --- a/main/reference/module_teal_module.html +++ b/main/reference/module_teal_module.html @@ -1,9 +1,25 @@ - -Calls all modules — module_teal_module • teal + + + + + +Calls all modules — module_teal_module • teal + + + + + + + +reflect nested structure of modules argument."> + + + + Skip to contents @@ -19,11 +35,13 @@ + + @@ -74,7 +118,8 @@
    @@ -86,7 +131,8 @@

    Calls all modules

    -

    Usage

    +

    Usage +

    ui_teal_module(id, modules, depth = 0L)
     
     # Default S3 method
    @@ -147,16 +193,20 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character) Optionally, a string specifying the shiny module id in cases it is used as a shiny module rather than a standalone shiny app. This is a legacy feature.

    -
    modules
    +
    modules +

    (list or teal_modules or teal_module) Nested list of teal_modules or teal_module objects or a single teal_modules or teal_module object. These are the specific output modules which @@ -164,53 +214,69 @@

    Argumentsdepth +
    depth +

    (integer(1)) number which helps to determine depth of the modules nesting.

    -
    data_rv
    +
    data_rv +

    (reactive returning teal_data)

    -
    datasets
    +
    datasets +

    (reactive returning FilteredData or NULL) When datasets is passed from the parent module (srv_teal) then dataset is a singleton which implies in filter-panel to be "global". When NULL then filter-panel is "module-specific".

    -
    slices_global
    +
    slices_global +

    (reactiveVal returning modules_teal_slices) see module_filter_manager

    -
    data_load_status
    -

    (reactive returning character) -Determines action dependent on a data loading status:

    • "ok" when teal_data is returned from the data loading.

    • +
      data_load_status +
      +
      +

      (reactive returning character) +Determines action dependent on a data loading status:

      +
        +
      • "ok" when teal_data is returned from the data loading.

      • "teal_data_module failed" when teal_data_module() didn't return teal_data. Disables tabs buttons.

      • "external failed" when a reactive passed to srv_teal(data) didn't return teal_data. Hides the whole tab panel.

      • -
      +
    +
    -

    + +
    -

    Value

    -

    output of currently active module.

    • srv_teal_module.teal_module returns reactiveVal containing output of the called module.

    • +

      Value +

      +

      output of currently active module.

      +
        +
      • srv_teal_module.teal_module returns reactiveVal containing output of the called module.

      • srv_teal_module.teal_modules returns output of module selected by input$active_tab.

      • -
    + + + + - + + - + + diff --git a/main/reference/module_teal_with_splash.html b/main/reference/module_teal_with_splash.html index f33ea73a28..ddb1f1b3f8 100644 --- a/main/reference/module_teal_with_splash.html +++ b/main/reference/module_teal_with_splash.html @@ -1,7 +1,23 @@ - -UI and server modules of teal — module_teal_with_splash • teal + + + + + + +UI and server modules of teal — module_teal_with_splash • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -72,7 +116,8 @@
    @@ -83,7 +128,8 @@

    UI and server modules of teal

    -

    Usage

    +

    Usage +

    ui_teal_with_splash(
       id,
       data,
    @@ -96,38 +142,46 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character) Optionally, a string specifying the shiny module id in cases it is used as a shiny module rather than a standalone shiny app. This is a legacy feature.

    -
    data
    +
    data +

    (teal_data, teal_data_module, or reactive returning teal_data) The data which application will depend on.

    -
    title
    +
    title +

    (shiny.tag or character(1)) Optionally, the browser window title. Defaults to a title "teal app" with the icon of NEST. Can be created using the build_app_title() or by passing a valid shiny.tag which is a head tag with title and link tag.

    -
    header
    +
    header +

    (shiny.tag or character(1)) Optionally, the header of the app.

    - +

    (shiny.tag or character(1)) Optionally, the footer of the app.

    -
    modules
    +
    modules +

    (list or teal_modules or teal_module) Nested list of teal_modules or teal_module objects or a single teal_modules or teal_module object. These are the specific output modules which @@ -135,28 +189,33 @@

    Argumentsfilter +
    filter +

    (teal_slices) Optionally, specifies the initial filter using teal_slices().

    -

    + +
    -

    Value

    +

    Value +

    Returns a reactive expression containing a teal_data object when data is loaded or NULL when it is not.

    + + - + + - + + diff --git a/main/reference/module_transform_data.html b/main/reference/module_transform_data.html index a7424de645..613977a32c 100644 --- a/main/reference/module_transform_data.html +++ b/main/reference/module_transform_data.html @@ -1,7 +1,23 @@ - -Module to transform reactive teal_data — module_transform_data • teal + + + + + + +Module to transform reactive teal_data — module_transform_data • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -72,7 +116,8 @@
    @@ -83,7 +128,8 @@

    Module to transform reactive teal_data

    -

    Usage

    +

    Usage +

    ui_transform_data(id, transformers = list(), class = "well")
     
     srv_transform_data(
    @@ -96,50 +142,61 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    id
    +
    +
    id +

    (character(1)) Module id

    -
    transformers
    +
    transformers +

    (list of teal_data_module) that will be applied to transform the data. Each transform module UI will appear in the teal's sidebar panel. Transformers' datanames are added to the datanames. See teal_transform_module().

    -
    data
    +
    data +

    (reactive teal_data)

    -
    modules
    +
    modules +

    (teal_modules or teal_module) For datanames validation purpose

    -
    is_transformer_failed
    +
    is_transformer_failed +

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

    -
    + +
    -

    Value

    +

    Value +

    reactive teal_data

    + + - + + - + + diff --git a/main/reference/modules_bookmarkable.html b/main/reference/modules_bookmarkable.html index e31d441a73..aa06b94e4d 100644 --- a/main/reference/modules_bookmarkable.html +++ b/main/reference/modules_bookmarkable.html @@ -1,5 +1,21 @@ - -Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable • teal + + + + + + +Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -70,7 +114,8 @@
    @@ -80,36 +125,44 @@

    Retrieve teal_bookmarkable attribute from teal_modules
    -

    Usage

    +

    Usage +

    modules_bookmarkable(modules)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    (teal_modules or teal_module) object

    -
    + +

    -

    Value

    +

    Value +

    named list of the same structure as modules with TRUE or FALSE values indicating whether the module is bookmarkable.

    + + - + + - + + diff --git a/main/reference/modules_depth.html b/main/reference/modules_depth.html index 5899db4691..b37ef02d5e 100644 --- a/main/reference/modules_depth.html +++ b/main/reference/modules_depth.html @@ -1,7 +1,23 @@ - -Get module depth — modules_depth • teal + + + + + + +Get module depth — modules_depth • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,15 +127,19 @@

    Get module depth

    -

    Usage

    +

    Usage +

    modules_depth(modules, depth = 0L)
    -

    Arguments

    +

    Arguments +

    -
    modules
    +
    +
    modules +

    (list or teal_modules or teal_module) Nested list of teal_modules or teal_module objects or a single teal_modules or teal_module object. These are the specific output modules which @@ -99,27 +147,32 @@

    Argumentsdepth +
    depth +

    optional integer determining current depth level

    -

    + +
    -

    Value

    +

    Value +

    Depth level for given module.

    + + - + + - + + diff --git a/main/reference/report_card_template.html b/main/reference/report_card_template.html index 72d8272524..a723d4ba3e 100644 --- a/main/reference/report_card_template.html +++ b/main/reference/report_card_template.html @@ -1,7 +1,23 @@ - -Template function for TealReportCard creation and customization — report_card_template • teal + + + + + + +Template function for TealReportCard creation and customization — report_card_template • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,7 +127,8 @@

    Template function for TealReportCard creation and customization
    -

    Usage

    +

    Usage +

    report_card_template(
       title,
       label,
    @@ -94,47 +139,58 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    title
    +
    +
    title +

    (character(1)) title of the card (unless overwritten by label)

    -
    label
    +
    label +

    (character(1)) label provided by the user when adding the card

    -
    description
    +
    description +

    (character(1)) optional, additional description

    -
    with_filter
    +
    with_filter +

    (logical(1)) flag indicating to add filter state

    -
    filter_panel_api
    +
    filter_panel_api +

    (FilterPanelAPI) object with API that allows the generation of the filter state in the report

    -
    + +
    -

    Value

    +

    Value +

    (TealReportCard) populated with a title, description and filter state.

    + + - + + - + + diff --git a/main/reference/reporter_previewer_module.html b/main/reference/reporter_previewer_module.html index 7fe37ce1a6..61cb2a6b4c 100644 --- a/main/reference/reporter_previewer_module.html +++ b/main/reference/reporter_previewer_module.html @@ -1,17 +1,33 @@ - -Create a teal module for previewing a report — reporter_previewer_module • teal + + + + + +Create a teal module for previewing a report — reporter_previewer_module • teal + + + + + + + +support report generation."> + + + + Skip to contents @@ -27,11 +43,13 @@ + + @@ -98,41 +142,50 @@

    Create a teal module for previewing a report

    -

    Usage

    +

    Usage +

    reporter_previewer_module(label = "Report previewer", server_args = list())
    -

    Arguments

    +

    Arguments +

    -
    label
    +
    +
    label +

    (character(1)) Label shown in the navigation item for the module or module group. For modules() defaults to "root". See Details.

    -
    server_args
    +
    server_args +

    (named list) Arguments passed to teal.reporter::reporter_previewer_srv().

    -
    + +
    -

    Value

    +

    Value +

    teal_module (extended with teal_module_previewer class) containing the teal.reporter previewer functionality.

    + + - + + - + + diff --git a/main/reference/restoreValue.html b/main/reference/restoreValue.html index 02b4114a32..d8ae67f28e 100644 --- a/main/reference/restoreValue.html +++ b/main/reference/restoreValue.html @@ -1,5 +1,21 @@ - -Restore value from bookmark. — restoreValue • teal + + + + + + +Restore value from bookmark. — restoreValue • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,30 +124,38 @@

    Restore value from bookmark.

    -

    Usage

    +

    Usage +

    restoreValue(value, default)
    -

    Arguments

    +

    Arguments +

    -
    value
    +
    +
    value +

    (character(1)) name of value to restore

    -
    default
    +
    default +

    fallback value

    -
    + +
    -

    Value

    +

    Value +

    In an application restored from a server-side bookmark, the variable specified by value from the values environment. Otherwise default.

    -

    Details

    +

    Details +

    Bookmarks can store not only inputs but also arbitrary values. These values are stored by onBookmark callbacks and restored by onBookmarked callbacks, and they are placed in the values environment in the session$restoreContext field. @@ -115,17 +167,19 @@

    Details

    + + - + + - + + diff --git a/main/reference/run_js_files.html b/main/reference/run_js_files.html index 093c130862..4390aaf554 100644 --- a/main/reference/run_js_files.html +++ b/main/reference/run_js_files.html @@ -1,11 +1,27 @@ - -Run JS file from /inst/js/ package directory — run_js_files • teal + + + + + +Run JS file from /inst/js/ package directory — run_js_files • teal + + + + + + + +the run_js actually executes JavaScript functions."> + + + + Skip to contents @@ -21,11 +37,13 @@ + + @@ -89,41 +133,50 @@

    Run JS file from /inst/js/ package directory

    -

    Usage

    +

    Usage +

    run_js_files(files)
    -

    Arguments

    +

    Arguments +

    -
    files
    +
    +
    files +

    (character) vector of filenames.

    -
    + +
    -

    Value

    +

    Value +

    NULL, invisibly.

    -

    Details

    +

    Details +

    system.file should not be used to access files in other packages, it does not work with devtools. Therefore, we redefine this method in each package as needed. Thus, we do not export this method.

    + + - + + - + + diff --git a/main/reference/show_rcode_modal.html b/main/reference/show_rcode_modal.html index b89eaed84a..05f10d25bf 100644 --- a/main/reference/show_rcode_modal.html +++ b/main/reference/show_rcode_modal.html @@ -1,7 +1,23 @@ - -Show R code modal — show_rcode_modal • teal + + + + + + +Show R code modal — show_rcode_modal • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,46 +127,56 @@

    Show R code modal

    -

    Usage

    +

    Usage +

    show_rcode_modal(title = NULL, rcode, session = getDefaultReactiveDomain())
    -

    Arguments

    +

    Arguments +

    -
    title
    +
    +
    title +

    (character(1)) Title of the modal, displayed in the first comment of the R code.

    -
    rcode
    +
    rcode +

    (character) vector with R code to show inside the modal.

    -
    session
    +
    session +

    (ShinySession) optional shiny session object, defaults to shiny::getDefaultReactiveDomain().

    -
    + +
    -

    References

    +

    References +

    shiny::showModal()

    + + - + + - + + diff --git a/main/reference/slices_store.html b/main/reference/slices_store.html index d72457b2a5..cf4ddbd7b2 100644 --- a/main/reference/slices_store.html +++ b/main/reference/slices_store.html @@ -1,7 +1,23 @@ - -Store and restore teal_slices object — slices_store • teal + + + + + + +Store and restore teal_slices object — slices_store • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,57 +127,71 @@

    Store and restore teal_slices object

    -

    Usage

    +

    Usage +

    slices_store(tss, file)
     
     slices_restore(file)
    -

    Arguments

    +

    Arguments +

    -
    tss
    +
    +
    tss +

    (teal_slices) object to be stored.

    -
    file
    +
    file +

    (character(1)) file path where teal_slices object will be saved and restored. The file extension should be ".json".

    -
    + +
    -

    Value

    +

    Value +

    slices_store returns NULL, invisibly.

    slices_restore returns a teal_slices object restored from the file.

    -

    Details

    -

    Date and date time objects are stored in the following formats:

    • Date class is converted to the "ISO8601" standard (YYYY-MM-DD).

    • +

      Details +

      +

      Date and date time objects are stored in the following formats:

      +
        +
      • Date class is converted to the "ISO8601" standard (YYYY-MM-DD).

      • POSIX*t classes are converted to character by using format.POSIX*t(usetz = TRUE, tz = "UTC") (YYYY-MM-DD HH:MM:SS UTC, where UTC is the Coordinated Universal Time timezone short-code).

      • -

      This format is assumed during slices_restore. All POSIX*t objects in +

    +

    This format is assumed during slices_restore. All POSIX*t objects in selected or choices fields of teal_slice objects are always printed in UTC timezone as well.

    -

    See also

    +

    See also +

    + + - + + - + + diff --git a/main/reference/tdata.html b/main/reference/tdata.html index 002e6a8d28..d880425ca1 100644 --- a/main/reference/tdata.html +++ b/main/reference/tdata.html @@ -1,15 +1,31 @@ - -Create a tdata object — tdata • teal + + + + + +Create a tdata object — tdata • teal + + + + + + + +use this function to downgrade the data argument."> + + + + Skip to contents @@ -25,11 +41,13 @@ + + @@ -95,7 +139,8 @@

    Create a tdata object

    -

    Usage

    +

    Usage +

    new_tdata(...)
     
     tdata2env(...)
    @@ -111,30 +156,37 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    ...
    +
    +
    ... +

    ignored

    -
    + +
    -

    Value

    +

    Value +

    nothing

    + + - + + - + + diff --git a/main/reference/teal-package.html b/main/reference/teal-package.html index 981d9f6817..b15e5b828c 100644 --- a/main/reference/teal-package.html +++ b/main/reference/teal-package.html @@ -1,7 +1,23 @@ - -teal: Interactive exploration of clinical trials data — teal-package • teal + + + + + + +teal: Interactive exploration of clinical trials data — teal-package • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -72,7 +116,8 @@
    @@ -84,21 +129,30 @@

    teal: Interactive exploration of clinical trials data

    -

    Details

    +

    Details +

    To learn mode about the package, visit the project website or read the init() manual page.

    -

    Author

    +

    Author +

    Maintainer: Dawid Kaledkowski dawid.kaledkowski@roche.com (ORCID)

    -

    Authors:

    + +
    + + - + + - + + diff --git a/main/reference/teal_data_module.html b/main/reference/teal_data_module.html index ed15228f09..ad36418b69 100644 --- a/main/reference/teal_data_module.html +++ b/main/reference/teal_data_module.html @@ -1,7 +1,23 @@ - -Data module for teal applications — teal_data_module • teal + + + + + + +Data module for teal applications — teal_data_module • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,7 +127,8 @@

    Data module for teal applications

    -

    Usage

    +

    Usage +

    teal_data_module(ui, server, label = "data module", once = TRUE)
     
     # S4 method for class 'teal_data_module,character'
    @@ -94,25 +139,31 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    ui
    +
    +
    ui +

    (function(id)) shiny module UI function; must only take id argument

    -
    server
    +
    server +

    (function(id)) shiny module server function; must only take id argument; must return reactive expression containing teal_data object

    -
    label
    +
    label +

    (character(1)) Label of the module.

    -
    once
    +
    once +

    (logical(1)) If TRUE, the data module will be shown only once and will disappear after successful data loading. App user will no longer be able to interact with this module anymore. @@ -120,35 +171,43 @@

    Argumentsobject +
    object +

    (teal_data_module)

    -
    code
    +
    code +

    (character or language) code to evaluate. If character, comments are retained.

    -
    data
    +
    data +

    (teal_data_module) object

    -
    expr
    +
    expr +

    (expression) to evaluate. Must be inline code. See

    -
    ...
    +
    ... +

    See Details.

    -

    + +
    -

    Value

    +

    Value +

    teal_data_module returns a list of class teal_data_module containing two elements, ui and server provided via arguments.

    eval_code returns a teal_data_module object with a delayed evaluation of code when the module is run.

    within returns a teal_data_module object with a delayed evaluation of expr when the module is run.

    -

    Details

    +

    Details +

    teal_data_module creates a shiny module to interactively supply or modify data in a teal application. The module allows for running any code (creation and some modification) after the app starts or reloads. The body of the server function will be run in the app rather than in the global environment. @@ -163,12 +222,14 @@

    Details... argument: as name:value pairs are passed to ..., name in expr will be replaced with value.

    -

    Examples

    +

    Examples +

    tdm <- teal_data_module(
       ui = function(id) {
         ns <- NS(id)
    @@ -273,17 +334,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/teal_data_to_filtered_data.html b/main/reference/teal_data_to_filtered_data.html index e0a57f0640..75306a4190 100644 --- a/main/reference/teal_data_to_filtered_data.html +++ b/main/reference/teal_data_to_filtered_data.html @@ -1,5 +1,21 @@ - -Create a FilteredData — teal_data_to_filtered_data • teal + + + + + + +Create a FilteredData — teal_data_to_filtered_data • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -70,7 +114,8 @@
    @@ -80,39 +125,48 @@

    Create a FilteredData

    -

    Usage

    +

    Usage +

    teal_data_to_filtered_data(x, datanames = names(x))
    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    (teal_data) object

    -
    datanames
    +
    datanames +

    (character) vector of data set names to include; must be subset of names(x)

    -
    + +
    -

    Value

    +

    Value +

    A FilteredData object.

    + + - + + - + + diff --git a/main/reference/teal_data_utilities.html b/main/reference/teal_data_utilities.html index 2d232d06b0..d2de12f803 100644 --- a/main/reference/teal_data_utilities.html +++ b/main/reference/teal_data_utilities.html @@ -1,15 +1,31 @@ - -teal_data utils — teal_data_utilities • teal + + + + + +teal_data utils — teal_data_utilities • teal + + + + + + + +"> + + + + Skip to contents @@ -25,11 +41,13 @@ + + @@ -80,19 +124,24 @@
    -

    In teal we need to recreate the teal_data object due to two operations:

    • we need to append filter-data code and objects which have been evaluated in FilteredData and +

      In teal we need to recreate the teal_data object due to two operations:

      +
        +
      • we need to append filter-data code and objects which have been evaluated in FilteredData and we want to avoid double-evaluation.

      • we need to subset teal_data to datanames used by the module, to shorten obtainable R-code

      • -
    + +
    -

    Usage

    +

    Usage +

    .append_evaluated_code(data, code)
     
     .append_modified_data(data, objects)
    @@ -101,47 +150,58 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    data
    +
    +
    data +

    (teal_data)

    -
    code
    +
    code +

    (character) code to append to the object's code slot.

    -
    objects
    +
    objects +

    (list) objects to append to object's environment.

    -
    datanames
    +
    datanames +

    (character) names of the datasets

    -
    + +
    -

    Value

    +

    Value +

    modified teal_data

    -

    Details

    +

    Details +

    Due to above recreation of teal_data object can't be done simply by using public teal.code and teal.data methods.

    + + - + + - + + diff --git a/main/reference/teal_modules.html b/main/reference/teal_modules.html index 07692d4cab..4e7d89b2d5 100644 --- a/main/reference/teal_modules.html +++ b/main/reference/teal_modules.html @@ -1,7 +1,23 @@ - -Create teal_module and teal_modules objects — teal_modules • teal + + + + + + +Create teal_module and teal_modules objects — teal_modules • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,7 +127,8 @@

    Create teal_module and teal_modules objects

    -

    Usage

    +

    Usage +

    module(
       label = "module",
       server = function(id, data, ...) moduleServer(id, function(input, output, session)
    @@ -121,16 +166,23 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    label
    +
    +
    label +

    (character(1)) Label shown in the navigation item for the module or module group. For modules() defaults to "root". See Details.

    -
    server
    -

    (function) shiny module with following arguments:

    • id - teal will set proper shiny namespace for this module (see shiny::moduleServer()).

    • +
      server +
      +
      +

      (function) shiny module with following arguments:

      +
        +
      • id - teal will set proper shiny namespace for this module (see shiny::moduleServer()).

      • input, output, session - (optional; not recommended) When provided, then shiny::callModule() will be used to call a module. From shiny 1.5.0, the recommended way is to use shiny::moduleServer() instead which doesn't require these arguments.

      • @@ -144,90 +196,120 @@

        Argumentsteal.slice::FilterPanelAPI).

      • ... (optional) When provided, server_args elements will be passed to the module named argument or to the ....

      • -

      +
    +
    -
    ui
    -

    (function) shiny UI module function with following arguments:

    • id - teal will set proper shiny namespace for this module.

    • +
      ui +
      +
      +

      (function) shiny UI module function with following arguments:

      +
        +
      • id - teal will set proper shiny namespace for this module.

      • ... (optional) When provided, ui_args elements will be passed to the module named argument or to the ....

      • -
      +
    +
    -
    filters
    +
    filters +

    (character) Deprecated. Use datanames instead.

    -
    datanames
    -

    (character) Names of the datasets relevant to the item. -There are 2 reserved values that have specific behaviors:

    • The keyword "all" includes all datasets available in the data passed to the teal application.

    • +
      datanames +
      +
      +

      (character) Names of the datasets relevant to the item. +There are 2 reserved values that have specific behaviors:

      +
        +
      • The keyword "all" includes all datasets available in the data passed to the teal application.

      • NULL hides the sidebar panel completely.

      • If transformers are specified, their datanames are automatically added to this datanames argument.

      • -
      +
    +
    -
    server_args
    +
    server_args +

    (named list) with additional arguments passed on to the server function.

    -
    ui_args
    +
    ui_args +

    (named list) with additional arguments passed on to the UI function.

    -
    transformers
    +
    transformers +

    (list of teal_data_module) that will be applied to transform the data. Each transform module UI will appear in the teal's sidebar panel. Transformers' datanames are added to the datanames. See teal_transform_module().

    -
    ...
    -
    • For modules(): (teal_module or teal_modules) Objects to wrap into a tab.

    • +
      ... +
      +
        +
      • For modules(): (teal_module or teal_modules) Objects to wrap into a tab.

      • For format() and print(): Arguments passed to other methods.

      -
      x
      +
      x +

      (teal_module or teal_modules) Object to format/print.

      -
      indent
      +
      indent +

      (integer(1)) Indention level; each nested element is indented one level more.

      -
      is_last
      +
      is_last +

      (logical(1)) Whether this is the last item in its parent's children list. Affects the tree branch character used (L- vs |-)

      -
      parent_prefix
      +
      parent_prefix +

      (character(1)) The prefix inherited from parent nodes, used to maintain the tree structure in nested levels

      -
      what
      +
      what +

      (character) Specifies which metadata to display. Possible values: "datasets", "properties", "ui_args", "server_args", "transformers"

      -
      is_root
      +
      is_root +

      (logical(1)) Whether this is the root node of the tree. Only used in format.teal_modules(). Determines whether to show "TEAL ROOT" header

      -
      modules
      +
      modules +

      (teal_module or teal_modules)

      -
    + +
    -

    Value

    +

    Value +

    module() returns an object of class teal_module.

    -

    modules() returns a teal_modules object which contains following fields:

    • label: taken from the label argument.

    • +

      modules() returns a teal_modules object which contains following fields:

      +
        +
      • label: taken from the label argument.

      • children: a list containing objects passed in .... List elements are named after their label attribute converted to a valid shiny id.

      • -
    + +
    -

    Details

    +

    Details +

    module() creates an instance of a teal_module that can be placed in a teal application. modules() shapes the structure of a the application by organizing teal_module within the navigation panel. It wraps teal_module and teal_modules objects in a teal_modules object, @@ -239,29 +321,39 @@

    Detailsreporter_previewer_module(), respectively.

    -

    Restricting datasets used by teal_module:

    +

    Restricting datasets used by teal_module: +

    The datanames argument controls which datasets are used by the module’s server. These datasets, passed via server's data argument, are the only ones shown in the module's tab.

    When datanames is set to "all", all datasets in the data object are treated as relevant. -However, this may include unnecessary datasets, such as:

    • Proxy variables for column modifications

    • +However, this may include unnecessary datasets, such as:

      +
        +
      • Proxy variables for column modifications

      • Temporary datasets used to create final versions

      • Connection objects

      • -

      To exclude irrelevant datasets, use the set_datanames() function to change datanames from +

    +

    To exclude irrelevant datasets, use the set_datanames() function to change datanames from "all" to specific names. Trying to modify non-"all" values with set_datanames() will result in a warning. Datasets with names starting with . are ignored globally unless explicitly listed in datanames.

    -

    datanames with transformers

    +

    +datanames with transformers +

    When transformers are specified, their datanames are added to the module’s datanames, which -changes the behavior as follows:

    • If module(datanames) is NULL and the transformers have defined datanames, the sidebar +changes the behavior as follows:

      +
        +
      • If module(datanames) is NULL and the transformers have defined datanames, the sidebar will appear showing the transformers' datasets, instead of being hidden.

      • If module(datanames) is set to specific values and any transformer has datanames = "all", the module may receive extra datasets that could be unnecessary

      • -
    + +
    -

    Examples

    +

    Examples +

    library(shiny)
     
     module_1 <- module(
    @@ -572,17 +664,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/teal_slices.html b/main/reference/teal_slices.html index 171b1713ce..fd234baa0e 100644 --- a/main/reference/teal_slices.html +++ b/main/reference/teal_slices.html @@ -1,5 +1,21 @@ - -Filter settings for teal applications — teal_slices • teal + + + + + + +Filter settings for teal applications — teal_slices • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    Filter settings for teal applications

    -

    Usage

    +

    Usage +

    teal_slices(
       ...,
       exclude_varnames = NULL,
    @@ -99,85 +144,112 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    ...
    +
    +
    ... +

    any number of teal_slice objects.

    -
    include_varnames, exclude_varnames
    +
    include_varnames, exclude_varnames +

    (named lists of character) where list names match names of data sets and vector elements match variable names in respective data sets; specify which variables are allowed to be filtered; see Details.

    -
    count_type
    -

    [Experimental] +

    count_type +
    +
    +

    [Experimental] This is a new feature. Do kindly share your opinions on teal.slice's GitHub repository.

    (character(1)) string specifying how observations are tallied by these filter states. -Possible options:

    • "none" (default) to have counts of single FilterState to show unfiltered number only.

    • +Possible options:

      +
        +
      • "none" (default) to have counts of single FilterState to show unfiltered number only.

      • "all" to have counts of single FilterState to show number of observation in filtered and unfiltered dataset. Note, that issues were reported when using this option with MultiAssayExperiment. Please make sure that adding new filters doesn't fail on target platform before deploying for production.

      • -
    + + -
    allow_add
    +
    allow_add +

    (logical(1)) logical flag specifying whether the user will be able to add new filters

    -
    module_specific
    -

    (logical(1)) optional,

    • FALSE (default) when one filter panel applied to all modules. +

      module_specific +
      +
      +

      (logical(1)) optional,

      +
        +
      • FALSE (default) when one filter panel applied to all modules. All filters will be shared by all modules.

      • TRUE when filter panel module-specific. Modules can have different set of filters specified - see mapping argument.

      • -
      +
    +
    -
    mapping
    -

    [Experimental] +

    mapping +
    +
    +

    [Experimental] This is a new feature. Do kindly share your opinions on teal's GitHub repository.

    (named list) specifies which filters will be active in which modules on app start. Elements should contain character vector of teal_slice ids (see teal.slice::teal_slice). -Names of the list should correspond to teal_module label set in module() function.

    • ids listed under "global_filters will be active in all modules.

    • +Names of the list should correspond to teal_module label set in module() function.

      +
        +
      • ids listed under "global_filters will be active in all modules.

      • If missing, all filters will be applied to all modules.

      • If empty list, all filters will be available to all modules but will start inactive.

      • If module_specific is FALSE, only global_filters will be active on start.

      • -
    + + -
    app_id
    +
    app_id +

    (character(1)) For internal use only, do not set manually. Added by init so that a teal_slices can be matched to the app in which it was used. Used for verifying snapshots uploaded from file. See snapshot.

    -
    x
    +
    x +

    (list) of lists to convert to teal_slices

    -
    + +
    -

    Value

    +

    Value +

    A teal_slices object.

    -

    Details

    +

    Details +

    Produces a teal_slices object. The teal_slice components will specify filter states that will be active when the app starts. Attributes (created with the named arguments) will configure the way the app applies filters. See argument descriptions for details.

    -

    Examples

    +

    Examples +

    filter <- teal_slices(
       teal_slice(dataname = "iris", varname = "Species", id = "species"),
       teal_slice(dataname = "iris", varname = "Sepal.Length", id = "sepal_length"),
    @@ -208,17 +280,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/teal_transform_module.html b/main/reference/teal_transform_module.html index f572a08211..2e973b064e 100644 --- a/main/reference/teal_transform_module.html +++ b/main/reference/teal_transform_module.html @@ -1,9 +1,25 @@ - -Data module for teal transformers. — teal_transform_module • teal + + + + + +Data module for teal transformers. — teal_transform_module • teal + + + + + + + +before passing the data into the module."> + + + + Skip to contents @@ -19,11 +35,13 @@ + + @@ -86,7 +130,8 @@

    Data module for teal transformers.

    -

    Usage

    +

    Usage +

    teal_transform_module(
       ui = function(id) NULL,
       server = function(id, data) data,
    @@ -96,36 +141,46 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    ui
    +
    +
    ui +

    (function(id)) shiny module UI function; must only take id argument

    -
    server
    -

    (function(id, data)) +

    server +
    +
    +

    (function(id, data)) shiny module server function; that takes id and data argument, where the id is the module id and data is the reactive teal_data input. The server function must return reactive expression containing teal_data object.

    The server function definition should not use eventReactive as it may lead to unexpected behavior. -See vignettes("data-transform-as-shiny-module") for more information.

    +See vignettes("data-transform-as-shiny-module") for more information.

    + -
    label
    +
    label +

    (character(1)) Label of the module.

    -
    datanames
    +
    datanames +

    (character) Names of the datasets that are relevant for this module to evaluate. If set to character(0) then module would receive modules() datanames.

    -
    + +
    -

    Details

    +

    Details +

    teal_transform_module creates a teal_data_module object to transform data in a teal application. This transformation happens after the data has passed through the filtering activity in teal. The transformed data is then sent to the server of the teal_module().

    @@ -133,7 +188,8 @@

    Details
    -

    Examples

    +

    Examples +

    my_transformers <- list(
       teal_transform_module(
         label = "Custom transform for iris",
    @@ -162,17 +218,19 @@ 

    Examples

    + +

    - + + - + + diff --git a/main/reference/validate_app_title_tag.html b/main/reference/validate_app_title_tag.html index f3ccb04dfb..a033f3b44c 100644 --- a/main/reference/validate_app_title_tag.html +++ b/main/reference/validate_app_title_tag.html @@ -1,5 +1,21 @@ - -Function for validating the title parameter of teal::init — validate_app_title_tag • teal + + + + + + +Function for validating the title parameter of teal::init — validate_app_title_tag • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -70,7 +114,8 @@
    @@ -80,31 +125,38 @@

    Function for validating the title parameter of teal::init

    -

    Usage

    +

    Usage +

    validate_app_title_tag(shiny_tag)
    -

    Arguments

    +

    Arguments +

    -
    shiny_tag
    +
    +
    shiny_tag +

    (shiny.tag) Object to validate for a valid title.

    -
    + + + + - + + - + + diff --git a/main/reference/validate_has_data.html b/main/reference/validate_has_data.html index 9dfe4b068a..c49d42a5b2 100644 --- a/main/reference/validate_has_data.html +++ b/main/reference/validate_has_data.html @@ -1,5 +1,21 @@ - -Validate that dataset has a minimum number of observations — validate_has_data • teal + + + + + + +Validate that dataset has a minimum number of observations — validate_has_data • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,7 +124,8 @@

    Validate that dataset has a minimum number of observations

    -

    Usage

    +

    Usage +

    validate_has_data(
       x,
       min_nrow = NULL,
    @@ -91,36 +136,46 @@ 

    Usage

    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    (data.frame)

    -
    min_nrow
    +
    min_nrow +

    (numeric(1)) Minimum allowed number of rows in x.

    -
    complete
    +
    complete +

    (logical(1)) Flag specifying whether to check only complete cases. Defaults to FALSE.

    -
    allow_inf
    +
    allow_inf +

    (logical(1)) Flag specifying whether to allow infinite values. Defaults to TRUE.

    -
    msg
    +
    msg +

    (character(1)) Additional message to display alongside the default message.

    -
    + +
    -

    Details

    +

    Details +

    This function is a wrapper for shiny::validate.

    -

    Examples

    +

    Examples +

    library(teal)
     ui <- fluidPage(
       sliderInput("len", "Max Length of Sepal",
    @@ -149,17 +204,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/validate_has_elements.html b/main/reference/validate_has_elements.html index 9979a1529f..c03d21e7ee 100644 --- a/main/reference/validate_has_elements.html +++ b/main/reference/validate_has_elements.html @@ -1,5 +1,21 @@ - -Validates that vector has length greater than 0 — validate_has_elements • teal + + + + + + +Validates that vector has length greater than 0 — validate_has_elements • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,29 +124,37 @@

    Validates that vector has length greater than 0

    -

    Usage

    +

    Usage +

    validate_has_elements(x, msg)
    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    vector

    -
    msg
    +
    msg +

    message to display

    -
    + +
    -

    Details

    +

    Details +

    This function is a wrapper for shiny::validate.

    -

    Examples

    +

    Examples +

    data <- data.frame(
       id = c(1:10, 11:20, 1:10),
       strata = rep(c("A", "B"), each = 15)
    @@ -137,17 +189,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/validate_has_variable.html b/main/reference/validate_has_variable.html index b9bc96ce46..833c223c42 100644 --- a/main/reference/validate_has_variable.html +++ b/main/reference/validate_has_variable.html @@ -1,5 +1,21 @@ - -Validates that dataset contains specific variable — validate_has_variable • teal + + + + + + +Validates that dataset contains specific variable — validate_has_variable • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,33 +124,42 @@

    Validates that dataset contains specific variable

    -

    Usage

    +

    Usage +

    validate_has_variable(data, varname, msg)
    -

    Arguments

    +

    Arguments +

    -
    data
    +
    +
    data +

    (data.frame)

    -
    varname
    +
    varname +

    (character(1)) name of variable to check for in data

    -
    msg
    +
    msg +

    (character(1)) message to display if data does not include varname

    -
    + +
    -

    Details

    +

    Details +

    This function is a wrapper for shiny::validate.

    -

    Examples

    +

    Examples +

    data <- data.frame(
       one = rep("a", length.out = 20),
       two = rep(c("a", "b"), length.out = 20)
    @@ -133,17 +186,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/validate_in.html b/main/reference/validate_in.html index 8f19d100c6..dd86b609a4 100644 --- a/main/reference/validate_in.html +++ b/main/reference/validate_in.html @@ -1,5 +1,21 @@ - -Validates that vector includes all expected values — validate_in • teal + + + + + + +Validates that vector includes all expected values — validate_in • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,33 +124,42 @@

    Validates that vector includes all expected values

    -

    Usage

    +

    Usage +

    validate_in(x, choices, msg)
    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    Vector of values to test.

    -
    choices
    +
    choices +

    Vector to test against.

    -
    msg
    +
    msg +

    (character(1)) Error message to display if some elements of x are not elements of choices.

    -
    + +
    -

    Details

    +

    Details +

    This function is a wrapper for shiny::validate.

    -

    Examples

    +

    Examples +

    ui <- fluidPage(
       selectInput(
         "species",
    @@ -131,17 +184,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/validate_inputs.html b/main/reference/validate_inputs.html index 293d7de4d4..a032c20386 100644 --- a/main/reference/validate_inputs.html +++ b/main/reference/validate_inputs.html @@ -1,7 +1,23 @@ - -Send input validation messages to output — validate_inputs • teal + + + + + + +Send input validation messages to output — validate_inputs • teal + + + + + + + + + + + Skip to contents @@ -17,11 +33,13 @@ + + @@ -83,30 +127,38 @@

    Send input validation messages to output

    -

    Usage

    +

    Usage +

    validate_inputs(..., header = "Some inputs require attention")
    -

    Arguments

    +

    Arguments +

    -
    ...
    +
    +
    ... +

    either any number of InputValidator objects or an optionally named, possibly nested list of InputValidator objects, see Details

    -
    header
    +
    header +

    (character(1)) generic validation message; set to NULL to omit

    -
    + +
    -

    Value

    +

    Value +

    Returns NULL if the final validation call passes and a shiny.silent.error if it fails.

    -

    Details

    +

    Details +

    shiny::validate is used to withhold rendering of an output element until certain conditions are met and to print a validation message in place of the output element. @@ -125,12 +177,14 @@

    Detailsheader.

    -

    Examples

    +

    Examples +

    library(shiny)
     library(shinyvalidate)
     
    @@ -203,17 +257,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/validate_n_levels.html b/main/reference/validate_n_levels.html index 98a093f2c0..e58b03100d 100644 --- a/main/reference/validate_n_levels.html +++ b/main/reference/validate_n_levels.html @@ -1,5 +1,21 @@ - -Validate that variables has expected number of levels — validate_n_levels • teal + + + + + + +Validate that variables has expected number of levels — validate_n_levels • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,41 +124,51 @@

    Validate that variables has expected number of levels

    -

    Usage

    +

    Usage +

    validate_n_levels(x, min_levels = 1, max_levels = 12, var_name)
    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    variable name. If x is not a factor, the unique values are treated as levels.

    -
    min_levels
    +
    min_levels +

    cutoff for minimum number of levels of x

    -
    max_levels
    +
    max_levels +

    cutoff for maximum number of levels of x

    -
    var_name
    +
    var_name +

    name of variable being validated for use in validation message

    -
    + +
    -

    Details

    +

    Details +

    If the number of levels of x is less than min_levels or greater than max_levels the validation will fail. This function is a wrapper for shiny::validate.

    -

    Examples

    +

    Examples +

    data <- data.frame(
       one = rep("a", length.out = 20),
       two = rep(c("a", "b"), length.out = 20),
    @@ -149,17 +203,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/validate_no_intersection.html b/main/reference/validate_no_intersection.html index c2f1e77632..7872b477ca 100644 --- a/main/reference/validate_no_intersection.html +++ b/main/reference/validate_no_intersection.html @@ -1,5 +1,21 @@ - -Validates no intersection between two vectors — validate_no_intersection • teal + + + + + + +Validates no intersection between two vectors — validate_no_intersection • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,33 +124,42 @@

    Validates no intersection between two vectors

    -

    Usage

    +

    Usage +

    validate_no_intersection(x, y, msg)
    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    vector

    -
    y
    +
    y +

    vector

    -
    msg
    +
    msg +

    (character(1)) message to display if x and y intersect

    -
    + +
    -

    Details

    +

    Details +

    This function is a wrapper for shiny::validate.

    -

    Examples

    +

    Examples +

    data <- data.frame(
       id = c(1:10, 11:20, 1:10),
       strata = rep(c("A", "B", "C"), each = 10)
    @@ -146,17 +199,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/reference/validate_one_row_per_id.html b/main/reference/validate_one_row_per_id.html index 49a9e4a57f..a7f9cc7572 100644 --- a/main/reference/validate_one_row_per_id.html +++ b/main/reference/validate_one_row_per_id.html @@ -1,5 +1,21 @@ - -Validate that dataset has unique rows for key variables — validate_one_row_per_id • teal + + + + + + +Validate that dataset has unique rows for key variables — validate_one_row_per_id • teal + + + + + + + + + + + Skip to contents @@ -15,11 +31,13 @@ + + @@ -80,29 +124,37 @@

    Validate that dataset has unique rows for key variables

    -

    Usage

    +

    Usage +

    validate_one_row_per_id(x, key = c("USUBJID", "STUDYID"))
    -

    Arguments

    +

    Arguments +

    -
    x
    +
    +
    x +

    (data.frame)

    -
    key
    +
    key +

    (character) Vector of ID variables from x that identify unique records.

    -
    + +
    -

    Details

    +

    Details +

    This function is a wrapper for shiny::validate.

    -

    Examples

    +

    Examples +

    iris$id <- rep(1:50, times = 3)
     ui <- fluidPage(
       selectInput(
    @@ -129,17 +181,19 @@ 

    Examples

    + +
    - + + - + + diff --git a/main/search.json b/main/search.json index aea4d9baef..3010d8e919 100644 --- a/main/search.json +++ b/main/search.json @@ -1 +1 @@ -[{"path":[]},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement [INSERT CONTACT METHOD]. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://insightsengineering.github.io/teal/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contribution Guidelines","title":"Contribution Guidelines","text":"🙏 Thank taking time contribute! input deeply valued, whether issue, pull request, even feedback, regardless size, content scope.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"table-of-contents","dir":"","previous_headings":"","what":"Table of contents","title":"Contribution Guidelines","text":"👶 Getting started 📔 Code Conduct 🗃 License 📜 Issues 🚩 Pull requests 💻 Coding guidelines 🏆 Recognition model ❓ Questions","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"getting-started","dir":"","previous_headings":"","what":"Getting started","title":"Contribution Guidelines","text":"Please refer project documentation brief introduction. Please also see articles within project documentation additional information.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contribution Guidelines","text":"Code Conduct governs project. Participants contributors expected follow rules outlined therein.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Contribution Guidelines","text":"contributions covered project’s license.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"Contribution Guidelines","text":"use GitHub track issues, feature requests, bugs. submitting new issue, please check issue already reported. issue already exists, please upvote existing issue 👍. new feature requests, please elaborate context benefit feature users, developers, relevant personas.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"github-flow","dir":"","previous_headings":"Pull requests","what":"GitHub Flow","title":"Contribution Guidelines","text":"repository uses GitHub Flow model collaboration. submit pull request: Create branch Please see branch naming convention . don’t write access repository, please fork . Make changes Make sure code passes checks imposed GitHub Actions well documented well tested unit tests sufficiently covering changes introduced Create pull request (PR) pull request description, please link relevant issue (), provide detailed description change, include assumptions. Address review comments, Post approval Merge PR write access. Otherwise, reviewer merge PR behalf. Pat back Congratulations! 🎉 now official contributor project! grateful contribution.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"branch-naming-convention","dir":"","previous_headings":"Pull requests","what":"Branch naming convention","title":"Contribution Guidelines","text":"Suppose changes related current issue current project; please name branch follows: _. Please use underscore (_) delimiter word separation. example, 420_fix_ui_bug suitable branch name change resolving UI-related bug reported issue number 420 current project. change affects multiple repositories, please name branches follows: __. example, 69_awesomeproject_fix_spelling_error reference issue 69 reported project awesomeproject aims resolve one spelling errors multiple (likely related) repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"monorepo-and-stageddependencies","dir":"","previous_headings":"Pull requests","what":"monorepo and staged.dependencies","title":"Contribution Guidelines","text":"Sometimes might need change upstream dependent package(s) able submit meaningful change. using staged.dependencies functionality simulate monorepo behavior. dependency configuration already specified project’s staged_dependencies.yaml file. need name feature branches appropriately. exception branch naming convention described . Please refer staged.dependencies package documentation details.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"coding-guidelines","dir":"","previous_headings":"","what":"Coding guidelines","title":"Contribution Guidelines","text":"repository follows unified processes standards adopted maintainers ensure software development carried consistently within teams cohesively across repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"style-guide","dir":"","previous_headings":"Coding guidelines","what":"Style guide","title":"Contribution Guidelines","text":"repository follows standard tidyverse style guide uses lintr lint checks. Customized lint configurations available repository’s .lintr file.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"dependency-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency management","title":"Contribution Guidelines","text":"Lightweight right weight. repository follows tinyverse recommedations limiting dependencies minimum.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"dependency-version-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency version management","title":"Contribution Guidelines","text":"code compatible (!) historical versions given dependenct package, required specify minimal version DESCRIPTION file. particular: development version requires (imports) development version another package - required put abc (>= 1.2.3.9000).","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"r--package-versions","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"R & package versions","title":"Contribution Guidelines","text":"continuously test packages newest R version along recent dependencies CRAN BioConductor. recommend working environment also set way. can find details R version packages used R CMD check GitHub Action execution log - step prints R sessionInfo(). discover bugs older R versions older set dependencies, please create relevant bug reports.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"pre-commit","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"pre-commit","title":"Contribution Guidelines","text":"highly recommend use pre-commit tool combined R hooks pre-commit execute checks committing pushing changes. Pre-commit hooks already available repository’s .pre-commit-config.yaml file.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"recognition-model","dir":"","previous_headings":"","what":"Recognition model","title":"Contribution Guidelines","text":"mentioned previously, contributions deeply valued appreciated. contribution data available part repository insights, recognize significant contribution hence add contributor package authors list, following rules enforced: Minimum 5% lines code authored* (determined git blame query) top 5 contributors terms number commits lines added lines removed* *Excluding auto-generated code, including limited roxygen comments renv.lock files. package maintainer also reserves right adjust criteria recognize contributions.","code":""},{"path":"https://insightsengineering.github.io/teal/CONTRIBUTING.html","id":"questions","dir":"","previous_headings":"","what":"Questions","title":"Contribution Guidelines","text":"questions regarding contribution guidelines, please contact package/repository maintainer.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/SECURITY.html","id":"reporting-security-issues","dir":"","previous_headings":"","what":"Reporting Security Issues","title":"Security Policy","text":"believe found security vulnerability repositories organization, please report us coordinated disclosure. Please report security vulnerabilities public GitHub issues, discussions, pull requests. Instead, please send email vulnerability.management[@]roche.com. Please include much information listed can help us better understand resolve issue: type issue (e.g., buffer overflow, SQL injection, cross-site scripting) Full paths source file(s) related manifestation issue location affected source code (tag/branch/commit direct URL) special configuration required reproduce issue Step--step instructions reproduce issue Proof--concept exploit code (possible) Impact issue, including attacker might exploit issue information help us triage report quickly.","code":""},{"path":"https://insightsengineering.github.io/teal/SECURITY.html","id":"data-security-standards-dss","dir":"","previous_headings":"","what":"Data Security Standards (DSS)","title":"Security Policy","text":"Please make sure reporting issues form bug, feature, pull request, sensitive information PII, PHI, PCI completely removed text attachments, including pictures videos.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Adding Support for Reporting to Custom Modules","text":"teal package offers integrated reporting feature utilizing teal.reporter package. comprehensive explanation reporting functionality , please refer documentation therein. article intended module developers aims provide guidance enhancing custom teal module automatic reporting feature. enhancement enables users incorporate snapshots module outputs report can reviewed another module automatically provided teal. Thus app user can interact report. responsibilities module developer include: Adding support reporting module. Specifying outputs constitute snapshot module. entire life cycle objects involved creating report configuring module preview report handled teal.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"custom-module","dir":"Articles","previous_headings":"","what":"Custom module","title":"Adding Support for Reporting to Custom Modules","text":"Let us consider example module, based example module teal: Using teal, can launch example module following:","code":"library(teal) my_module <- function(label = \"example teal module\") { module( label = label, server = function(id, data) { assert_reactive(data) checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"modify-the-declaration-of-the-server-function","dir":"Articles","previous_headings":"Add support for reporting","what":"Modify the declaration of the server function","title":"Adding Support for Reporting to Custom Modules","text":"first step add additional argument server function declaration - reporter. informs teal module requires reporter, included module called. See : modifications, module now ready launched teal: teal adds another tab application, titled Report previewer. However, visible change module operates appears user add content report module. requires inserting UI server elements teal.reporter module module body.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"insert-teal-reporter-module","dir":"Articles","previous_headings":"Add support for reporting","what":"Insert teal.reporter module","title":"Adding Support for Reporting to Custom Modules","text":"UI server logic necessary adding cards my_module_with_reporting report provided teal.reporter::simple_reporter_ui teal.reporter::simple_reporter_srv. updated module now ready launched: new piece UI added, buttons clickable. user can now add card report view Report previewer module preview still empty since instructed module put card.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = function(card) card ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"add-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add content to the card","title":"Adding Support for Reporting to Custom Modules","text":"add content card, utilize public API exposed TealReportCard class. teal.reporter::simple_reporter_srv module accepts card_fun argument determines appearance output custom module. ReportCard derivatives allow sequential addition content according order method calls. explore content, can use $get_content method. details, refer documentation TealReportCard teal.reporter::ReportCard. add simple text card modifying card_fun argument passed teal.reporter::simple_reporter_srv. function must return card object, otherwise errors may occur teal. Now, application user can see text added custom_function Report previewer module.","code":"custom_function <- function(card = teal.reporter::ReportCard$new()) { card$append_text(\"This is content from a custom teal module!\") card } my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = custom_function ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"add-non-text-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add non-text content to the card","title":"Adding Support for Reporting to Custom Modules","text":"teal.reporter supports addition tables, charts, . information, explore API teal.reporter::ReportCard learn supported content types.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"tealreportcard","dir":"Articles","previous_headings":"Add support for reporting","what":"TealReportCard","title":"Adding Support for Reporting to Custom Modules","text":"teal exports TealReportCard class, extends teal.reporter::ReportCard class provides several convenient methods facilitate working teal features like filter panel source code. details, refer documentation TealReportCard. support TealReportCard, function passed teal.reporter::simple_reporter_srv must define default value card, shown : Without definition, API TealReportCard available within function.","code":"custom_function <- function(card = TealReportCard$new()) { # ... some code ... # card }"},{"path":"https://insightsengineering.github.io/teal/articles/adding-support-for-reporting.html","id":"example","dir":"Articles","previous_headings":"","what":"Example","title":"Adding Support for Reporting to Custom Modules","text":"conclusion, demonstrated build standard teal app code reproducibility reporter functionalities. Note server function requires filter_panel_api argument filter panel state can added report. final example, incorporated teal.code snippets. teal.code R library offers utilities storing code associating execution environment. allows ReporterCard store code necessary generate table along table . learn teal.code see vignette qenv teal.code.","code":"library(teal) library(teal.reporter) ## example_reporter_module <- function(label = \"Example\") { module( label = label, server = function(id, data, reporter, filter_panel_api) { with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, \"FilterPanelApi\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) dat <- reactive(data()[[input$dataname]]) observe({ req(dat()) updateSliderInput(session, \"nrow\", max = nrow(dat()), value = floor(nrow(dat()) / 5)) }) table_q <- reactive({ req(input$dataname) req(input$nrow) within( data(), result <- head(dataset, nrows), dataset = as.name(input$dataname), nrows = input$nrow ) }) output$table <- renderTable(table_q()[[\"result\"]]) ### REPORTER card_fun <- function(card = teal.reporter::ReportCard$new(), comment) { card$set_name(\"Table Module\") card$append_text(paste(\"Selected dataset\", input$dataname), \"header2\") card$append_text(\"Selected Filters\", \"header3\") if (with_filter) { card$append_text(filter_panel_api$get_filter_state(), \"verbatim\") } card$append_text(\"Encoding\", \"header3\") card$append_text( yaml::as.yaml( stats::setNames( lapply(c(\"dataname\", \"nrow\"), function(x) input[[x]]), c(\"dataname\", \"nrow\") ) ), \"verbatim\" ) card$append_text(\"Module Table\", \"header3\") card$append_table(table_q()[[\"result\"]]) card$append_text(\"Show R Code\", \"header3\") card$append_text(teal.code::get_code(table_q()), \"verbatim\") if (!comment == \"\") { card$append_text(\"Comment\", \"header3\") card$append_text(comment) } card } teal.reporter::add_card_button_srv( \"addReportCard\", reporter = reporter, card_fun = card_fun ) teal.reporter::download_report_button_srv(\"downloadButton\", reporter = reporter) teal.reporter::reset_report_button_srv(\"resetButton\", reporter) ### }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), verbatimTextOutput(ns(\"dataset\")) ) ) sidebarLayout( sidebarPanel( tags$div( teal.reporter::add_card_button_ui(ns(\"addReportCard\")), teal.reporter::download_report_button_ui(ns(\"downloadButton\")), teal.reporter::reset_report_button_ui(ns(\"resetButton\")) ), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL), sliderInput(ns(\"nrow\"), \"Number of rows\", min = 1, max = 1, value = 1, step = 1) ), mainPanel(tableOutput(ns(\"table\"))) ) } ) } app <- init( data = teal_data(AIR = airquality, IRIS = iris), modules = list( example_reporter_module(label = \"with Reporter\"), my_module(label = \"without Reporter\") ), filter = teal_slices(teal_slice(dataname = \"AIR\", varname = \"Temp\", selected = c(72, 85))), header = \"Example teal app with reporter\" ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/actors.html","id":"teal-app-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal app developer","title":"Actors","text":"primary responsibility teal app developer leverage available building blocks teal framework create functional teal app analyses data. expedite app creation process, developers can take advantage pre-existing teal modules found R packages like teal.modules.general teal.modules.clinical. modules designed focus standardization versatility, making suitable wide range use cases. developing teal app, developer select appropriate teal modules integrate app’s interface ensure seamless usability end-users. learn existing modules, visit teal.gallery, contains several demo applications source code.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[teal App Developer]--utilizes--> B[teal modules] B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style C fill:gold style D fill:pink"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/actors.html","id":"teal-module-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal module developer","title":"Actors","text":"main duty teal module developer construct compatible teal module can utilized within teal framework. Several factors influence scope requirements building teal module. creating reusable teal module, ’s advisable focus making general adaptable feasible maximize possibilities re-used future. However, developers freedom create teal module customized suit specific demands project. Ultimately, one teal modules employed construct teal app. learn creating custom modules follow Tutorial Creating Custom Module.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[Teal App Developer]--utilizes--> B[teal modules] E[Teal Module Developer]--develops--> B B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style E fill:lightgreen style D fill:pink style C fill:gold"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/actors.html","id":"workflow-in-a-clinical-trial-study","dir":"Articles > Blueprint","previous_headings":"","what":"Workflow in a clinical trial study","title":"Actors","text":"clinical trial study setting, unique study teal app developer assigned study team accountable developing tailored teal app respective study. study teal app developer initially leverage existing teal modules R packages created teal module developers. cases need create new modules tailored study, study teal module developer need involved. Upon completion, study team designated teal app tailored specific study.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. %%| fig-width: 7.5 graph LR subgraph Study B A2[Study Teal App Developer]--utilizes--> B2[teal modules] E2[Study Teal Module Developer]-.develops.-> B2 B2--to create--> C2[study teal app] D2[study app user]--uses--> C2 end E3[Teal Module Developer]--develops--> B E3--develops-->B2 subgraph Study A A[Study Teal App Developer]--utilizes--> B[teal modules] E[Study Teal Module Developer]-.develops.-> B B--to create--> C[study teal app] D[study app user]--uses--> C end style A fill:lightblue style A2 fill:lightblue style E fill:limegreen style E2 fill:limegreen style E3 fill:lightgreen style D fill:pink style D2 fill:pink style C fill:gold style C2 fill:gold"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/filter_panel.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Filter Panel","text":"teal.slice package provides teal applications filter panel, powerful tool exploring analyzing data, key component teal framework. One great things filter panel comes built-teal, requiring programming knowledge use. filter panel provides convenient way users subset data, simplifying process exploration comprehension. Moreover, users can activate deactivate filter states interactively, either individually globally, using filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/filter_panel.html","id":"filter-flow","dir":"Articles > Blueprint","previous_headings":"","what":"Filter flow","title":"Filter Panel","text":"filter panel creates subsets data. Subsetting achieved creating filter states, holds logical predicate (filter condition) applied single variables. filter conditions composed single expression, call particular function (e.g. dplyr::filter), expression evaluated create filtered data subset. process entirely interactive. Filter states can created, removed, changed , however, app developer may choose constrain even restrict . filter state created, filter panel generates filter card shiny inputs appropriate type variable, e.g. range selectors numeric columns sets checkboxes drop-menus categorical ones. users interact filter cards, subsetting complete expression updated filtered data recomputed. filtered data passed teal modules downstream analysis. subsetting expression returned along data, ensuring unbroken track record entire analysis. Signature data also stored ensure reproducible results.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. sequenceDiagram autonumber data->teal.slice: processed by teal.slice->>shiny inputs: creates Note over teal.slice,shiny inputs: based on data type shiny inputs->>reactive dataset: updates reactive dataset->>teal modules: processed by"},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/in_app_data.html","id":"building-data-in-the-app","dir":"Articles > Blueprint","previous_headings":"","what":"Building data in the App","title":"In-App Data","text":"Typically data passed teal application available app run. However, always true cases data built app started. good example pulling data external repository, like database, uploading file. Additional authentication may required.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/in_app_data.html","id":"teal_data_module","dir":"Articles > Blueprint","previous_headings":"Building data in the App","what":"teal_data_module","title":"In-App Data","text":"Preprocessing actions can performed -app using teal_data_module. Rather passing teal_data object app, one may pass shiny module returns teal_data object (wrapped reactive expression). allows app developer include user actions data creation, fetching, even pre-filtering modification.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/in_app_data.html","id":"further-reading","dir":"Articles > Blueprint","previous_headings":"","what":"Further reading","title":"In-App Data","text":"complete explanation using teal_data_module can found teal vignette","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/input_data.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Input Data","text":"Reproducibility paramount pharmaceutical industry. Accurate consistent results essential ensure high-quality research safety patients. prioritizing reproducibility, researchers can validate methods, confirm findings, contribute advancement field. teal.code package provides qenv class facilitates code reproducibility. Code passed qenv object, evaluated specific environment. qenv also stores code can retrieved request. teal_data class, serves primary data interface teal applications, inherits code tracking behavior qenv.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/input_data.html","id":"preparing-data-for-a-teal-application","dir":"Articles > Blueprint","previous_headings":"","what":"Preparing data for a teal application","title":"Input Data","text":"teal applications run data provided teal_data object. Data objects stored modified within environment teal_data object R code used tracked, allows code evaluated executed teal application, reproduced outside teal application. includes data loading, preprocessing, filtering, transformations, plotting, etc. teal_data object makes easy users reproduce validate results analyses. Learn use teal_data teal.data package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/input_data.html","id":"show-r-code-and-reporter","dir":"Articles > Blueprint","previous_headings":"","what":"Show R Code and Reporter","title":"Input Data","text":"teal.modules.clinical teal.modules.general packages, ’ll find modules include convenient Show R Code button. button clicked, modal window appears, revealing R code responsible generating module’s output. functionality achieved inspecting teal_data object retrieving code . Show R Code button, users can easily copy independently run code reproduce analysis presented teal module. Reporter feature also leverages teal_data object operation. Much like Show R Code mechanism, code displayed Reporter Card extracted teal_data object. learn Reporter feature, please visit teal.reporter documentation. Overall, qenv teal.code child class, teal_data, powerful tools ensuring code reproducibility promoting high-quality research R programming language.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/module_encapsulation.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Module Encapsulation","text":"teal framework leverages shiny module concept enable encapsulation analytical actions teal modules, maintaining seamless communication modules application.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/module_encapsulation.html","id":"benefits","dir":"Articles > Blueprint","previous_headings":"","what":"Benefits","title":"Module Encapsulation","text":"implementing modular app technique shiny module creation teal module, several benefits realized: Streamlined maintenance development teal module becomes manageable, can function independently teal framework. separation allows developers maintain module ease. approach successfully applied R packages dedicated teal module development, teal.modules.general teal.modules.clinical. Enhanced focus outputteal module developers can concentrate solely refining parameters encoding, output aspects (data summarization visualization) without need concern intricacies teal framework. developed correctly, module seamlessly integrates teal. Facilitated collaborationteal module development becomes accessible entry point developers interested collaborating. approach encourages user collaboration improvement teal modules, developers gain deeper understanding mechanics teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/blueprint/product_map.html","id":"why-so-many-packages","dir":"Articles > Blueprint","previous_headings":"","what":"Why so many packages?","title":"Product Map","text":"breaking teal features, modules, calculations dedicated packages, maintenance made significantly manageable.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Bootstrap Themes in teal","text":"offer easy application custom Bootstrap theme teal app. teal uses bslib R package provides tools customizing Bootstrap themes, including shiny apps.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"usage","dir":"Articles","previous_headings":"","what":"Usage","title":"Bootstrap Themes in teal","text":"teal app developers can specify custom Bootstrap themes setting teal.bs_theme R option, set bslib::bs_theme object. bslib::bs_theme(...) function creates Bootstrap theme object, one specifies (major) Bootstrap version (default one 3, 4, 5). Optionally one can choose bootswatch theme customize app CSS functions like bslib::bs_add_rules. Please read custom themes bslib getting started vignette. teal.bs_theme R option specified top code script. Please install bslib package run code .","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"teal-bs_theme-r-option","dir":"Articles","previous_headings":"Usage","what":"teal.bs_theme R option","title":"Bootstrap Themes in teal","text":"","code":"options(\"teal.bs_theme\" = bslib::bs_theme(\"Custom Options\")) ####################### # teal::init() app code #######################"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"bootstrap-version-and-themes","dir":"Articles","previous_headings":"Usage","what":"Bootstrap version and themes","title":"Bootstrap Themes in teal","text":"best recommended ways explore Bootstrap themes use bslib::run_with_themer(shinyApp(app$ui, app$server)) bslib::bs_theme_preview(), offer interactive explore mode (supported Bootstrap 3). bslib::bs_theme_preview() recommended end user shiny app yet. already shiny app want test different Bootstrap themes (CSS styling) bslib::run_with_themer(shinyApp(app$ui, app$server)) recommended. Available Bootstrap versions checked bslib::versions() Bootstrap themes (bootswatch) bslib::bootswatch_themes(version = \"5\").","code":"# bslib::versions() # bslib::bootswatch_themes(version = \"5\") options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"lux\")) # or options(\"teal.bs_theme\" = bslib::bs_theme_update(bslib::bs_theme(version = \"5\"), bootswatch = \"lux\"))"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"default-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Default Bootstrap theme","title":"Bootstrap Themes in teal","text":"using default bslib theme version (3, 4 5), styling might expected. Please run interactive themer (recommended) apply custom theme explore theme options. many scenarios updating theme might enough e.g. font color specifications updated .","code":"# instead of options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) # try non-default themes options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"THEME NAME\". ...)) # or run the app inside bslib::run_with_themer"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"reset-the-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Reset the Bootstrap theme","title":"Bootstrap Themes in teal","text":"Please use options(\"teal.bs_theme\" = NULL) call return default shiny Bootstrap teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"theme-not-updated","dir":"Articles","previous_headings":"Usage","what":"Theme not updated","title":"Bootstrap Themes in teal","text":"One reason theme updated web browser caches previous one, especially different themes run one another. Please, use Cmd+Shift+R (Mac) Ctrl+F5 (Windows) hard refresh webpage.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"custom-teal-css","dir":"Articles","previous_headings":"Usage","what":"Custom teal CSS","title":"Bootstrap Themes in teal","text":"important HTML tags teal specific id class, can directly styled. bslib::bs_add_rules function used around bslib::bs_theme object apply custom CSS rules. bslib::bs_add_* family functions used specify low-level Bootstrap elements.","code":"library(magrittr) options(\"teal.bs_theme\" = bslib::bs_add_rules( bslib::bs_theme(version = \"5\"), \"Anything understood by sass::as_sass()\" ))"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"bootstrap-null-vs-bootstrap-3","dir":"Articles","previous_headings":"Usage","what":"Bootstrap NULL vs Bootstrap 3","title":"Bootstrap Themes in teal","text":"important note statements options(\"teal.bs_theme\" = NULL) options(\"teal.bs_theme\" = bslib::bs_theme(version = \"3\") equivalent bslib approximation default shiny theme Bootstrap version 3 can introduce discrepancies. One important difference using bslib::bs_theme(version = \"3\", bootswatch = \"THEME NAME\") one can apply custom Bootstrap theme. Another one usage bslib::bs_theme(version = \"3\") requires installation shinyWidgets package minimum version 0.7.4.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"regular-shinyfluidpage","dir":"Articles","previous_headings":"Usage","what":"Regular shiny::fluidPage","title":"Bootstrap Themes in teal","text":"want update theme regular shiny::fluidPage-like app, need teal.bs_theme option. Simply provide bslib::bs_theme directly: shiny::fluidPage(theme = bslib::bs_theme(...), ...).","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"interactive-theming-guide","dir":"Articles","previous_headings":"Usage","what":"Interactive theming guide","title":"Bootstrap Themes in teal","text":"section provide step--step guide customizing teal application theme interactively bslib::run_with_themer(). recommend starting simple case satisfied, verifying full application. end use teal application . example assume want use Bootstrap 5. start, launch app bslib::run_with_themer(app$ui, app$server) instead shiny::shinyApp. gives us following. Note Theme Customizer section right hand side. added bslib customize theme.","code":"options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()), header = \"My first teal application\" ) bslib::run_with_themer(shinyApp(app$ui, app$server))"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"set-overall-app-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Set overall app theme","title":"Bootstrap Themes in teal","text":"Instead starting scratch, want start Bootswatch theme. Let us select Minty theme “Overall theme” drop-. bslib updated CSS styles use new theme, including customizer theme. Additionally, look R console, see helpful guide provides code update theme. teal applications don’t actually use bs_theme_update opt bs_theme instead. However, printed code still helpful.","code":"#### Update your bs_theme() R code with: ##### bs_theme_update(theme, bootswatch = \"minty\")"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"customize-a-bootswatch-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Customize a bootswatch theme","title":"Bootstrap Themes in teal","text":"base theme (Minty) close want let’s make modifications. start, increase base font size. , choose “Fonts” section customizer theme set value “Base font size” input. use 1.25 , means fonts increased factor 1.25. check R console, see bslib printed bs_theme_update(theme, font_scale = 1.25, bootswatch = \"minty\"), now includes font size adjustment. Finally, suppose want borders rounded. customizer theme, can go “Options” uncheck “Rounded corners” box. expected, corners longer rounded. look R console, now see bs_theme_update(theme, font_scale = 1.25,enable-rounded= FALSE, bootswatch = \"minty\").","code":""},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"apply-the-customized-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Apply the customized theme","title":"Bootstrap Themes in teal","text":"customization complete, apply changes application. , use option teal.bs_theme like time expand bslib::bs_theme call include changes. Luckily, arguments printed R console running app themer can plugged right . Now application custom theme applied. Please note interactive themer contains commonly applied options. customization options, review bslib documentation.","code":"options( \"teal.bs_theme\" = bslib::bs_theme( version = \"5\", font_scale = 1.25, `enable-rounded` = FALSE, bootswatch = \"minty\" ) ) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/bootstrap-themes-in-teal.html","id":"sources","dir":"Articles","previous_headings":"","what":"Sources","title":"Bootstrap Themes in teal","text":"https://rstudio.github.io/bslib/","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Creating Custom Modules","text":"teal framework provides large catalog plug--ready analysis modules can incorporated teal applications. However, also possible create modules using module function, leverages Shiny modules. custom teal module built Shiny module, combining Shiny’s reactive capabilities modularized UI server logic encapsulate functionality. design enables structured reusable approach creating interactive components integrate seamlessly within teal ecosystem. guide, use simple histogram example, demonstrate convert histogram function robust teal module step--step: module allow users dynamically select datasets variables create histograms within teal application. cover best practices, including: Setting dynamic inputs. Structuring server logic. Using teal_data object ensure reactivity reproducibility.","code":"my_plot <- hist( dataset[[vars]], las = 1, main = paste(\"Histogram of\", vars), xlab = vars, col = \"lightblue\", border = \"black\" )"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"understanding-the-inputs-and-requirements","dir":"Articles","previous_headings":"","what":"Understanding the Inputs and Requirements","title":"Creating Custom Modules","text":"developing custom teal module visualizations, first identify primary inputs users interact : Dataset Input (dataset): Allows users select dataset explore. Variable Input (vars): Allows users choose specific numeric variable chosen dataset, ensuring appropriate columns available plotting. inputs dynamically populated based available datasets variables teal_data object, cover later.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-ui","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module UI","title":"Creating Custom Modules","text":"UI function defines controls display area histogram. module, use: selectInput Dataset: Enables users select dataset list available datasets. selectInput Variable: Allows users choose numeric variable chosen dataset, dynamically filtering non-numeric columns. plotOutput Histogram: Displays histogram dataset variable inputs selected. verbatimTextOutput Code: Automatically displays code generated plot based user input. ’s code histogram_module_ui function:","code":"# UI function for the custom histogram module histogram_module_ui <- function(id) { ns <- shiny::NS(id) shiny::tagList( shiny::selectInput(ns(\"dataset\"), \"Select Dataset\", choices = NULL), shiny::selectInput(ns(\"variable\"), \"Select Variable\", choices = NULL), shiny::plotOutput(ns(\"histogram_plot\")), shiny::verbatimTextOutput(ns(\"plot_code\")) # To display the reactive plot code ) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-server","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module Server","title":"Creating Custom Modules","text":"server function main logic teal module handled. histogram module, server function handle user interactions manage reactive teal_data object, allows module dynamically respond user inputs.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"passing-the-data-argument-to-the-server-function","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Passing the data Argument to the Server Function","title":"Creating Custom Modules","text":"begin, ’s essential include data argument server function definition. data argument holds reactive teal_data object, contains datasets filters applied. including data, can ensure: server function receives reactive version teal_data, allowing automatically respond changes. server can access filtered datasets directly. correct function definition server function : need refresher teal_data object, please visit teal.data package documentation.","code":"histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Server logic goes here }) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"understanding-teal_data-as-a-reactive-object-in-server-logic","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Understanding teal_data as a Reactive Object in Server Logic","title":"Creating Custom Modules","text":"used server logic teal module, teal_data object becomes reactive data container. means access contents, need call like function, using parentheses: data(). syntax triggers reactivity, ensuring data within teal_data stays --date filters changes applied elsewhere application. Note: teal_data object behaves reactive data container used within server logic. accessed outside server, reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"using-names-to-access-dataset-names-in-teal_data-object","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Using names() to Access Dataset Names in teal_data object","title":"Creating Custom Modules","text":"teal_data object can contain multiple datasets. retrieve names datasets, use names() function: return character vector dataset names contained teal_data. can use names dynamically populate input controls, like dataset selection drop-.","code":"names(data())"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"accessing-specific-datasets-with-double-brackets","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Accessing Specific Datasets with Double Brackets ([[ ]])","title":"Creating Custom Modules","text":"access individual dataset teal_data, use double brackets ([[ ]]) along dataset name. allows extract specific dataset data frame: , input$dataset represents name dataset selected user. syntax highly flexible dynamically references whichever dataset user chosen. can subset manipulate extracted data frame needed.","code":"data()[[input$dataset]]"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"setting-up-server-logic-using-teal_data-and-dynamic-variable-injection","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Setting Up Server Logic Using teal_data and Dynamic Variable Injection","title":"Creating Custom Modules","text":"updated server function, perform following: Create new_data modified version data() using within(), dynamically injecting input$dataset input$variable. Render Plot: renderPlot() displays plot referencing plot stored updated teal_data object, new_data. ’s code: Let’s review ’ve done far: input_dataset = .name(input$dataset) passes dataset name dynamically input_dataset. input_vars = input$variable passes selected variable name directly input_vars. Inside within(), my_plot uses injected variables dynamically generate histogram plot. output$histogram_plot uses renderPlot() display plot stored new_data referencing result()[[\"my_plot\"]]. output$plot_code render function displays dynamically generated code using teal.code::get_code(result()), allowing users see exact code used generate plot reactively.","code":"# Server function for the custom histogram module with injected variables in within() histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Update dataset choices based on available datasets in teal_data shiny::observe({ shiny::updateSelectInput( session, \"dataset\", choices = names(data()) ) }) # Update variable choices based on selected dataset, only including numeric variables observeEvent(input$dataset, { req(input$dataset) # Ensure dataset is selected numeric_vars <- names(data()[[input$dataset]])[sapply(data()[[input$dataset]], is.numeric)] shiny::updateSelectInput(session, \"variable\", choices = numeric_vars) }) # Create a reactive `teal_data` object with the histogram plot result <- reactive({ req(input$dataset, input$variable) # Ensure both dataset and variable are selected # Create a new teal_data object with the histogram plot new_data <- within( data(), { my_plot <- hist( input_dataset[[input_vars]], las = 1, main = paste(\"Histogram of\", input_vars), xlab = input_vars, col = \"lightblue\", border = \"black\" ) }, input_dataset = as.name(input$dataset), # Replace `input_dataset` with input$dataset input_vars = input$variable # Replace `input_vars` with input$variable ) new_data }) # Render the histogram from the updated teal_data object output$histogram_plot <- shiny::renderPlot({ result()[[\"my_plot\"]] # Access and render the plot stored in `new_data` }) # Reactive expression to get the generated code for the plot output$plot_code <- shiny::renderText({ teal.code::get_code(result()) # Retrieve and display the code for the updated `teal_data` object }) }) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"creating-the-custom-teal-module-function","dir":"Articles","previous_headings":"","what":"Creating the Custom teal Module Function","title":"Creating Custom Modules","text":"teal::module() function allows encapsulate UI server logic teal module, making reusable ready integrate teal application. setting datanames = \"\", give module access datasets specified teal_data object.","code":"# Custom histogram module creation create_histogram_module <- function(label = \"Histogram Module\") { teal::module( label = label, ui = histogram_module_ui, server = histogram_module_server, datanames = \"all\" ) }"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"integrating-the-custom-teal-module-into-a-teal-app","dir":"Articles","previous_headings":"","what":"Integrating the Custom teal Module into a teal App","title":"Creating Custom Modules","text":"custom teal module set , can now integrated teal app. ’ll use init() teal specify datasets modules used app, run app test newly created module. Congratulations! just created custom teal module used teal app! setup provides fully dynamic, user-controlled teal module allows interactive data exploration code visibility, enhancing usability transparency.","code":"library(teal) # Define datasets in `teal_data` data_obj <- teal_data( iris = iris, mtcars = mtcars ) # Initialize the teal app app <- init( data = data_obj, modules = modules(create_histogram_module()) ) # Run the app shiny::shinyApp(ui = app$ui, server = app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"whats-next","dir":"Articles","previous_headings":"","what":"What’s next?","title":"Creating Custom Modules","text":"Now ’ve mastered essentials building integrating modules teal, ’re ready explore advanced features. teal offers wide range capabilities enhance module’s functionality user experience.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"adding-reporting-to-a-module","dir":"Articles","previous_headings":"What’s next?","what":"Adding reporting to a module","title":"Creating Custom Modules","text":"Enhance custom teal module reporting features! Dive vignette see just simple add powerful reporting capabilities elevate module’s impact.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/creating-custom-modules.html","id":"using-standard-widgets-in-your-custom-module","dir":"Articles","previous_headings":"What’s next?","what":"Using standard widgets in your custom module","title":"Creating Custom Modules","text":"teal.widgets package provides various widgets can leveraged quickly create standard elements custom teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data as shiny Module","text":"Proper functioning teal application requires presence teal_data object. Typically, teal_data object created global environment passed data argument init. teal_data object contain elements necessary successful execution application’s modules. scenarios, however, application developers may opt postpone data operations application runtime. can done passing special shiny module data argument. teal_data_module function used build module following components: UI function; accepts one argument, id; defines user interface elements data module server function: accepts one argument, id; defines server logic data module, including data creation; must return reactive expression containing teal_data object teal run module application starts resulting teal_data object used throughout teal (analytic) modules.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"","what":"Creating data in-app","title":"Data as shiny Module","text":"One case postponing data operations datasets dynamic, frequently updated. data created kept global environment. Using teal_data_module enables creating dataset scratch every time user starts application. See ?qenv detailed explanation use within method.","code":"library(teal) data_module <- teal_data_module( ui = function(id) tags$div(), server = function(id) { moduleServer(id, function(input, output, session) { reactive({ data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"modification-of-data-in-app","dir":"Articles","previous_headings":"","what":"Modification of data in-app","title":"Data as shiny Module","text":"Another reason postpone data operations involve application user preprocessing stage. initial, constant form data can created global environment modified app starts. following example illustrates teal_data_module can utilized subset data based user inputs: Note running preprocessing code module opposed global environment increase app loading times. recommended keep constant code global environment move dynamic parts data module.","code":"data <- within(teal_data(), { dataset1 <- iris dataset2 <- mtcars }) data_module <- teal_data_module( ui = function(id) { ns <- NS(id) tags$div( selectInput(ns(\"species\"), \"Select species to keep\", choices = unique(iris$Species), multiple = TRUE ), actionButton(ns(\"submit\"), \"Submit\") ) }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data_modified <- within( data, dataset1 <- subset(dataset1, Species %in% selected), selected = input$species ) data_modified }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"warning","dir":"Articles","previous_headings":"","what":"Data as shiny Module","title":"Data as shiny Module","text":"using teal_data_module modify pre-existing teal_data object, crucial server function data object defined environment, otherwise server function able access data object. means server functions defined packages used.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-as-shiny-module.html","id":"extending-existing-teal_data_modules","dir":"Articles","previous_headings":"Modification of data in-app","what":"Extending existing teal_data_modules","title":"Data as shiny Module","text":"server logic teal_data_module can modified used app, using within function. allows teal_data object created teal_data_module processed . previous example, data_module takes predefined teal_data object allows app user select subset. following example modifies data_module new columns added data retrieved.","code":"data_module_2 <- within( data_module, { # Create new column with Ratio of Sepal.Width and Petal.Width dataset1$Ratio.Sepal.Petal.Width <- round(dataset1$Sepal.Width / dataset1$Petal.Width, digits = 2L) # Create new column that converts Miles per Galon to Liter per 100 Km dataset2$lp100km <- round(dataset2$mpg * 0.42514371, digits = 2L) } ) app <- init( data = data_module_2, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data Transformations as shiny Module","text":"teal version 0.16 introduced new argument teal::module called transformers. argument allows pass list teal_data_module objects created using teal_transform_module() function. main benefit teal_transform_module() ability transform data passing module. feature allows extend regular behavior existing modules specifying custom data operations data inside module. teal_transform_module() Shiny module takes ui server arguments. provided, teal execute data transformations specified module loaded whenever data changes. server extend logic behind data manipulations, ui extends filter panel new UI elements orchestrate transformer inputs. vignette presents way manage custom data transformations teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"creating-your-first-custom-data-transformation-module","dir":"Articles","previous_headings":"","what":"Creating your first custom data transformation module","title":"Data Transformations as shiny Module","text":"initialize simple teal app pass iris mtcars input datasets.","code":"library(teal) data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) app <- init( data = data, modules = teal::example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"single-transformer","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Single Transformer","title":"Data Transformations as shiny Module","text":"Let’s create simple teal_transform_module returns first n number rows iris based user input. creating ui numericInput user input number rows displayed. server function take reactive data perform transformation return new reactive data. Note: recommended return reactive() teal_data() server code teal_transform_module robust maintaining reactivity Shiny. planning using eventReactive() server, event include data() (example eventReactive(list(input$, data()), {...})). discussion.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/data-transform-as-shiny-module.html","id":"multiple-transformers","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Multiple Transformers","title":"Data Transformations as shiny Module","text":"Note can add multiple teal transformers including teal_transform_module list. Let’s add another transformation mtcars dataset creates column rownames mtcars. Note module interactive UI elements.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ), teal_transform_module( label = \"Custom transform for mtcars\", ui = function(id) { ns <- NS(id) tags$div( \"Adding rownames column to mtcars\" ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { mtcars$rownames <- rownames(mtcars) rownames(mtcars) <- NULL }) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/filter-panel.html","id":"teal-apps-with-the-filter-panel","dir":"Articles","previous_headings":"","what":"teal apps with the filter panel","title":"Filter Panel","text":"filter panel integral part teal applications included right side. Based selections made filter panel, filter expressions executed passing data teal modules. technical details filter panel extensively described teal.slice documentation. default, init initializes filter panel without active filters allows user add filters column. start teal application predefined filters, one must specify filter argument. following example four filters specified using teal_slice function wrapped together teal_slices.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = example_module(), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Sepal.Length\"), teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\"), teal_slice(dataname = \"CARS\", varname = \"mpg\", selected = c(20, Inf)), teal_slice(dataname = \"CARS\", expr = \"qsec < 20\", title = \"1/4 mile under 20 sec\", id = \"qsec_20\") ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/filter-panel.html","id":"filter-panel-respective-to-teal_module","dir":"Articles","previous_headings":"Extending teal.slice","what":"Filter panel respective to teal_module","title":"Filter Panel","text":"teal_module (see ?module) object contains datanames attribute determines data sets sent module. filter panel display data sets hide rest module active.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = modules( example_module(label = \"all datasets\"), example_module(label = \"IRIS only\", datanames = \"IRIS\"), example_module(label = \"CARS only\", datanames = \"CARS\"), example_module(label = \"no filter panel\", datanames = NULL) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/filter-panel.html","id":"global-and-module-specific-filter-panel","dir":"Articles","previous_headings":"Extending teal.slice","what":"Global and module specific filter panel","title":"Filter Panel","text":"teal contains teal_slices function extends original teal_slices found teal.slice adding two arguments: module_specific mapping. default init initializes app “global” filter panel, modules use filters. Setting module_specific = TRUE switches “module-specific” filter panel, module can different set filters active time. still possible set global filters shared among modules. One possible scenario depicted figure : filter 1 shared modules filter 2 shared module 1 module 3 filter 3 used module 2 filter 4 used module 1 filter 5 filter 6 active modules achieve described setup, one must set module_specific argument TRUE use mapping argument match filters modules. mapping takes named list element names correspond module labels, elements vectors teal_slice ids applied module startup. teal_slices listed element called \"global_filters\" applied modules. detailed explanation filter states, see teal.slice vignette.","code":"library(teal) app <- init( data = teal_data(mtcars = mtcars), modules = modules( example_module(label = \"module 1\"), example_module(label = \"module 2\"), example_module(label = \"module 3\"), example_module(label = \"module 4\") ), filter = teal_slices( # filters created with id teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"filter 1\"), teal_slice(dataname = \"mtcars\", varname = \"cyl\", id = \"filter 2\"), teal_slice(dataname = \"mtcars\", varname = \"disp\", id = \"filter 3\"), teal_slice(dataname = \"mtcars\", varname = \"hp\", id = \"filter 4\"), teal_slice(dataname = \"mtcars\", varname = \"drat\", id = \"filter 5\"), teal_slice(dataname = \"mtcars\", varname = \"wt\", id = \"filter 6\"), # module-specific filtering enabled module_specific = TRUE, # filters mapped to modules mapping = list( \"module 1\" = c(\"filter 2\", \"filter 4\"), \"module 2\" = \"filter 3\", \"module 3\" = \"filter 2\", global_filters = \"filter 1\" ) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Getting Started with teal","text":"teal shiny-based interactive exploration framework analyzing data, particular emphasis CDISC clinical trial data. teal applications allow users : “Pull” data external data sources Dynamically filter data used analyses Generate reproducible code regenerate -screen analyses Create download reports containing results analyses (analysis modules support reporting) addition, teal framework provides application developers : large suite custom-made standard analysis modules included applications logging framework facilitate debugging applications advanced users framework can also create new analysis modules can added teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"your-first-teal-application","dir":"Articles","previous_headings":"","what":"Your first teal application:","title":"Getting Started with teal","text":"simple teal application takes iris mtcars datasets displays contents: Hovering image shows teal application generated code. Every teal application composed following elements, can controlled app developer passing arguments init function: Application Title (browser’s tab title): title application. Application Header Footer (top bottom app): content placed top bottom application. example code: two modules named “Module 1” “Module 2”. Module Content (panel middle): outputs currently active module. example code: filter panel initialized filter Species variable iris dataset.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = modules( example_module(\"Module 1\"), example_module(\"Module 2\") ), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\") ), title = build_app_title(title = \"My first teal app\"), header = h3(\"My first teal application\"), footer = tags$div(a(\"Powered by teal\", href = \"https://insightsengineering.github.io/teal/latest-tag/\")) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"creating-your-own-applications","dir":"Articles","previous_headings":"","what":"Creating your own applications","title":"Getting Started with teal","text":"key function use create teal application init, requires two mandatory arguments: data modules. optional arguments init, can used customize application. Please refer documentation init details.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"application-data","dir":"Articles","previous_headings":"Creating your own applications","what":"Application data","title":"Getting Started with teal","text":"data argument init function specifies data used application. datasets used teal application must passed teal_data object. also possible specify relationships datasets using join_keys argument case datasets related. See vignette details. data available pulled remote source, init must receive teal_data_module specifies obtain desired datasets put teal_data object. See vignette details. order use CDISC clinical trial data teal application cdisc_data function used instead. Custom SDTM standards can handled teal_data join_keys. details, recommend exploring teal.data package documentation.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"modules","dir":"Articles","previous_headings":"Creating your own applications","what":"Modules","title":"Getting Started with teal","text":"modules argument init consists list teal modules (can wrapped together using function modules). Core teal developers created several universal teal modules can useful teal application. learn create modules, please explore Creating Custom Modules vignette. use predefined modules, see references links modules.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"defining-filters","dir":"Articles","previous_headings":"Creating your own applications","what":"Defining filters","title":"Getting Started with teal","text":"optional filter argument init allows initialize application predefined filters. details see Filter Panel vignette .","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"reporting","dir":"Articles","previous_headings":"Creating your own applications","what":"Reporting","title":"Getting Started with teal","text":"modules teal application support reporting (see teal.reporter details), users application can add outputs modules report. report can downloaded special Report Previewer module added application additional tab, users can view configure reports downloading . See details vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"reproducible-code","dir":"Articles","previous_headings":"Creating your own applications","what":"Reproducible code","title":"Getting Started with teal","text":"teal hands data reproducible code every module included application. Note teal display code, modules’ responsibility. example, example_module function used shows code main panel together outputs. details see vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/getting-started-with-teal.html","id":"where-to-go-next","dir":"Articles","previous_headings":"","what":"Where to go next","title":"Getting Started with teal","text":"learn teal framework recommend first exploring available analysis modules. example see: general analysis modules clinical trial reporting modules modules analyzing MultiAssayExperiment objects demo teal apps see: gallery sample apps based teal catalog Tables, Listings Graphs catalog Biomarker Analysis Templates Tables Graphs teal framework relies set supporting packages whose documentation provides -depth information. packages interest defining tealapplications : teal.data: defining data teal application. teal.slice: defining data filtering passing teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"data-in-teal-applications","dir":"Articles","previous_headings":"","what":"Data in teal Applications","title":"Including Data in teal Applications","text":"teal framework readily accepts general, non-relational data. Modules defined teal.modules.general package designed work well kind data. Relational data handled just well mechanism passing data applications virtually . includes clinical data conforms ADaM standard. working making framework extendable support data structures can added relative ease. Currently support offered MultiAssayExperiment class. applications use teal_data class data container. teal_data objects passed init build application, modified filter panel (applicable) passed modules. Thus, first step building teal app creating teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"general-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"General data","title":"Including Data in teal Applications","text":"teal_data object created calling teal_data function passing data objects name:value pairs. Note iris cars added datanames property data (see datanames property). sufficient run teal app.","code":"library(teal) # create teal_data data <- teal_data(iris = iris, cars = mtcars) # build app app <- init( data = data, modules = example_module() ) # run app shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"reproducible-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"Reproducible data","title":"Including Data in teal Applications","text":"teal_data object stores data separate environment. Therefore, modifying stored datasets requires processing code evaluated environment. Following logic, one can create empty teal_data object populate evaluating code. can done using eval_code function , conveniently, using within function. key difference eval_code within former accepts code character vector language objects (calls expressions), within accepts inline code. See ?qenv details. Note first example data created passing data objects, code used create data objects unknown therefore process reproduced. Inspecting code app created reveals note preprocessing code absent. necessary code can supplied code argument teal_data function. Keep mind code executed teal_data’s environment, may reproduce environment. object considered unverified (see verified property). reproducibility required, recommend creating empty teal_data object evaluating code.","code":"# create empty object data_empty <- teal_data() # run code in the object data_populated_1 <- eval_code(data_empty, code = \"iris <- iris cars <- mtcars\") # alternative data_populated_2 <- within(data_empty, { iris <- iris cars <- mtcars }) data_with_code <- teal_data( iris = iris, cars = mtcars, code = \"iris <- iris cars <- mtcars\" )"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"code-from-file","dir":"Articles","previous_headings":"Data in teal Applications > Reproducible data","what":"code from file","title":"Including Data in teal Applications","text":"ability pass code character vector eval_code opens door using code stored file.","code":"# not run data_from_file <- teal_data() data_from_file <- eval_code(data, readLines(\"\"))"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"Data in teal Applications","what":"Creating data in-app","title":"Including Data in teal Applications","text":"one departure passing teal_data object init data exist environment app run, e.g. pulled remote source. cases teal_data_module must used. See vignette detailed description.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"clinical-data","dir":"Articles","previous_headings":"","what":"Clinical data","title":"Including Data in teal Applications","text":"Currently teal supports two specialized data formats.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"adam-data","dir":"Articles","previous_headings":"Clinical data","what":"ADaM data","title":"Including Data in teal Applications","text":"ADaM data model, defined CDISC standards, specifies relationships subject-level parent dataset observation-level child datasets. cdisc_data function takes advantage fact automatically set default joining keys (see join_keys property). example , two standard ADaM datasets (ADSL ADTTE) passed cdisc_data.","code":"# create cdisc_data data_cdisc <- cdisc_data(ADSL = teal.data::rADSL, ADTTE = teal.data::rADSL) names(data_cdisc) #> [1] \"ADSL\" \"ADTTE\" join_keys(data_cdisc) #> A join_keys object containing foreign keys between 2 datasets: #> ADSL: [STUDYID, USUBJID] #> <-- ADTTE: [STUDYID, USUBJID] #> ADTTE: [STUDYID, USUBJID, PARAMCD] #> --> ADSL: [STUDYID, USUBJID] app <- init( data = data_cdisc, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"multiassayexperiment-data","dir":"Articles","previous_headings":"Clinical data","what":"MultiAssayExperiment data","title":"Including Data in teal Applications","text":"MultiAssayExperiment package offers data structure representing analyzing multi-omics experiments involve multi-modal, high-dimensionality data, DNA mutations, protein RNA abundance, chromatin occupancy, etc., biological specimens. MultiAssayExperiment class described detail . MultiAssayExperiment objects (MAEs) placed teal_data just like normal objects. Due unique structure MAE, teal requires special considerations building teal modules. Therefore, guarantee modules work properly MAEs. package teal.modules.hermes developed specifically MAE mind reliable. filter panel supports MAEs box.","code":"library(MultiAssayExperiment) utils::data(miniACC) data_mae <- teal_data(MAE = miniACC) app <- init( data = data_mae, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"join_keys","dir":"Articles","previous_headings":"teal_data properties","what":"join_keys","title":"Including Data in teal Applications","text":"Using relational data requires specifying joining keys pair datasets. Primary keys unique row identifiers individual datasets thus specified dataset. Foreign keys describe mapping variables datasets. Joining keys stored join_keys property, can set creating teal_data object, using join_keys argument, using join_keys function. detailed explanation join keys, see teal.data vignette. (back ADaM Data)","code":"ds1 <- data.frame( id = seq(1, 10), group = rep(c(\"A\", \"B\"), each = 5) ) ds2 <- data.frame( group = c(\"A\", \"B\"), condition = c(\"condition1\", \"condition2\") ) keys <- join_keys( join_key(\"DS1\", keys = \"id\"), join_key(\"DS2\", keys = \"group\"), join_key(\"DS1\", \"DS2\", keys = c(\"group\" = \"group\")) ) data_relational1 <- teal_data(DS1 = ds1, DS2 = ds2, join_keys = keys) data_relational2 <- teal_data(DS1 = ds1, DS2 = ds2) join_keys(data_relational2) <- keys"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"verified","dir":"Articles","previous_headings":"teal_data properties","what":"verified","title":"Including Data in teal Applications","text":"teal_data allows tracking code data creation data filtering data analysis whole process can reproduced. verified property designates whether reproducibility confirmed. teal_data objects created empty modified evaluating code within considered verified default. created data objects alone data objects code verified default, can become verified running verify function. detailed explanation verification, see teal.data vignette. (back Reproducible Data)","code":"data_with_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code <- teal_data(iris = iris, cars = mtcars, code = expression(iris <- iris, cars <- mtcars)) data_with_objects_and_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code_ver <- verify(data_with_objects_and_code) data_with_objects_and_code_ver #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L]"},{"path":"https://insightsengineering.github.io/teal/articles/including-data-in-teal-applications.html","id":"further-reading","dir":"Articles","previous_headings":"","what":"Further reading","title":"Including Data in teal Applications","text":"complete guide teal_data class, please refer teal.data package.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"motivation","dir":"Articles","previous_headings":"","what":"Motivation","title":"Modifying a teal Application With R Options","text":"R packages use options modify runtime behavior. usually specify sensible default values internal function arguments determine responses users actions. example, testthat uses option testthat.progress.max_fails define default number failed expectations testing functions terminate execution. adjustable values can exposed function parameters, confined option. vignette details options available package teal ’s supporting packages teal.logger, teal.widgets, teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"setting-an-option","dir":"Articles","previous_headings":"","what":"Setting an option","title":"Modifying a teal Application With R Options","text":"time interactive session, can change option using: way change options execution specific block code withr package like : line run option, digits, go back value line run. function getOption allows inspect value option: set, value option persists session, returns default value new session. Make sure change options teal-related packages loaded initialize options overwrite custom values.","code":"options(option_to_set = \"value\") withr::with_options(list(digits = 3), print(pi)) ## [1] 3.14 getOption(\"option_to_set\") ## [1] \"value\""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-bs_theme-bslibbs_theme-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.bs_theme (bslib::bs_theme object)","title":"Modifying a teal Application With R Options","text":"option controls bootstrap theme version used teal apps. Achieve better UX customized UI app. Please see vignette Bootstrap themes read functionality. Default: NULL","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-load_nest_code-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.load_nest_code (character)","title":"Modifying a teal Application With R Options","text":"value option appended top code rendered using Show R Code modal button. Default: \"# Add code install/load NEST environment \".","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-threshold_slider_vs_checkboxgroup-numeric","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.threshold_slider_vs_checkboxgroup (numeric)","title":"Modifying a teal Application With R Options","text":"threshold determines variable treated factor filter panel. number unique values variable less threshold variable treated factor instead original class. example, imagine teal.threshold_slider_vs_checkboxgroup equals 2. numeric variable c(1, 1, 1), one unique value, treated factor filter panel (filter panel !). filter panel creates checkbox widget filter values variable, factor variable, instead usual numeric range selector. Default: 5.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-basic_table_args-basic_table_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.basic_table_args (basic_table_args object)","title":"Modifying a teal Application With R Options","text":"specifies list arguments passed every call rtables::basic_table made teal application. can used format rtables without making changes application code. See documentation teal.widgets::basic_table_args information. Default: teal.widgets::basic_table_args().","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-ggplot2_args-ggplot2_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.ggplot2_args (ggplot2_args object)","title":"Modifying a teal Application With R Options","text":"option allows modifying labels themes ggplot2 plots teal application. See documentation teal.widgets::ggplot2_args information. Default: teal.widgets::ggplot2_args().","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-plot_dpi-integer-value-24-or-larger","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.plot_dpi (integer value 24 or larger)","title":"Modifying a teal Application With R Options","text":"option controls dots per inch graphs rendered downloaded using module plot_with_settings teal.widgets package. Default: 72","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-log_layout-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_layout (character)","title":"Modifying a teal Application With R Options","text":"defines layout log message used teal application. teal uses layout format emitted log messages. Read documentation teal.logger::register_logger information. must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"[{level}] {format(time, \\\"%Y-%m-%d %H:%M:%OS4\\\")} pid:{pid} token:[{token}] {ans} {msg}\". Note layout formatted glue package.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-log_level-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_level (character)","title":"Modifying a teal Application With R Options","text":"logging level threshold used teal application. teal application emit logs level. See documentation logger::TRACE possible values logging threshold information . must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"INFO\". Note two levels considered less severe \"INFO\": \"DEBUG\" \"TRACE\". order see log messages two levels well, change log level default \"TRACE\", least severe log level.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-show_js_log-logical","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.show_js_log (logical)","title":"Modifying a teal Application With R Options","text":"indicates whether print JavaScript console logs R console. set TRUE, logs printed; otherwise, won’t. Default: FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal-lockfile-mode-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.lockfile.mode (character)","title":"Modifying a teal Application With R Options","text":"enables compute renv lockfile shows button \"download lockfile\" footer. Values: \"auto\" - auto detect whether compute lockfile \"enabled\" - compute lockfile show \"download lockfile\" footer \"disabled\" - compute lockfile show \"download lockfile\" footer Default: \"auto\". read lockfile usage creation check ?teal::module_teal_lockfile.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal_logging","dir":"Articles","previous_headings":"Deprecated options","what":"teal_logging","title":"Modifying a teal Application With R Options","text":"Deprecated favor using teal.logger package logging.","code":""},{"path":"https://insightsengineering.github.io/teal/articles/teal-options.html","id":"teal_show_js_log","dir":"Articles","previous_headings":"Deprecated options","what":"teal_show_js_log","title":"Modifying a teal Application With R Options","text":"Deprecated favor teal.show_js_log (see ).","code":""},{"path":"https://insightsengineering.github.io/teal/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Dawid Kaledkowski. Author, maintainer. Pawel Rucki. Author. Aleksander Chlebowski. Author. Andre Verissimo. Author. Kartikeya Kirar. Author. Vedha Viyash. Author. Marcin Kosinski. Author. Adrian Waddell. Author. Chendi Liao. Reviewer. Dony Unardi. Reviewer. Nikolas Burkoff. Author. Mahmoud Hallal. Author. Maciej Nasinski. Author. Konrad Pagacz. Author. Junlue Zhao. Author. Tadeusz Lewandowski. Author. F. Hoffmann-La Roche AG. Copyright holder, funder. Maximilian Mordig. Contributor.","code":""},{"path":"https://insightsengineering.github.io/teal/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Kaledkowski D, Rucki P, Chlebowski , Verissimo , Kirar K, Viyash V, Kosinski M, Waddell , Burkoff N, Hallal M, Nasinski M, Pagacz K, Zhao J, Lewandowski T (2024). teal: Exploratory Web Apps Analyzing Clinical Trials Data. R package version 0.15.2.9082, https://github.com/insightsengineering/teal/, https://insightsengineering.github.io/teal/.","code":"@Manual{, title = {teal: Exploratory Web Apps for Analyzing Clinical Trials Data}, author = {Dawid Kaledkowski and Pawel Rucki and Aleksander Chlebowski and Andre Verissimo and Kartikeya Kirar and Vedha Viyash and Marcin Kosinski and Adrian Waddell and Nikolas Burkoff and Mahmoud Hallal and Maciej Nasinski and Konrad Pagacz and Junlue Zhao and Tadeusz Lewandowski}, year = {2024}, note = {R package version 0.15.2.9082, https://github.com/insightsengineering/teal/}, url = {https://insightsengineering.github.io/teal/}, }"},{"path":"https://insightsengineering.github.io/teal/index.html","id":"teal-interactive-exploratory-data-analysis-with-shiny-web-applications-","dir":"","previous_headings":"","what":"Exploratory Web Apps for Analyzing Clinical Trials Data","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"teal shiny-based interactive exploration framework analyzing data. teal applications require app developers specify: CDISC data, commonly used clinical trial reporting Independent datasets, example data.frame Related datasets, example set data.frames key columns enable data joins MultiAssayExperiment objects R data structures representing analyzing multi-omics experiments teal.modules.general: general modules exploring relational/independent/CDISC data teal.modules.clinical: modules specific CDISC data clinical trial reporting teal.modules.hermes: modules analyzing MultiAssayExperiment objects lot functionality teal framework derives following packages: teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.logger: standardizes logging within teal framework. teal.reporter: allows teal applications generate reports. Dive deeper teal comprehensive video guide. Please click image start learning:","code":""},{"path":"https://insightsengineering.github.io/teal/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Alternatively, might also use development version.","code":"install.packages(\"teal\") # install.packages(\"pak\") pak::pak(\"insightsengineering/teal\")"},{"path":"https://insightsengineering.github.io/teal/index.html","id":"usage","dir":"","previous_headings":"","what":"Usage","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Please see teal.gallery TLG Catalog see examples teal apps. Please start “Technical Blueprint” article, “Getting Started” article, package vignettes detailed guide.","code":"library(teal) app <- init( data = teal_data(iris = iris), modules = list( module( label = \"iris histogram\", server = function(input, output, session, data) { updateSelectInput(session = session, inputId = \"var\", choices = names(data()[[\"iris\"]])[1:4]) output$hist <- renderPlot({ req(input$var) hist(x = data()[[\"iris\"]][[input$var]]) }) }, ui = function(id) { ns <- NS(id) list( selectInput(inputId = ns(\"var\"), label = \"Column name\", choices = NULL), plotOutput(outputId = ns(\"hist\")) ) } ) ) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/index.html","id":"getting-help","dir":"","previous_headings":"","what":"Getting help","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"encounter bug feature request, please file issue. questions, discussions, updates, use teal channel pharmaverse slack workspace.","code":""},{"path":"https://insightsengineering.github.io/teal/index.html","id":"acknowledgment","dir":"","previous_headings":"","what":"Acknowledgment","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"package result joint efforts many developers stakeholders. like thank everyone contributed far!","code":""},{"path":[]},{"path":[]},{"path":[]},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":null,"dir":"Reference","previous_headings":"","what":"Drive a teal application — TealAppDriver","title":"Drive a teal application — TealAppDriver","text":"Drive teal application Drive teal application","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Drive a teal application — TealAppDriver","text":"Extension shinytest2::AppDriver class methods driving teal application performing interactions shinytest2 tests.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver -> TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver$expect_download() shinytest2::AppDriver$expect_html() shinytest2::AppDriver$expect_js() shinytest2::AppDriver$expect_screenshot() shinytest2::AppDriver$expect_text() shinytest2::AppDriver$expect_unique_names() shinytest2::AppDriver$expect_values() shinytest2::AppDriver$get_chromote_session() shinytest2::AppDriver$get_dir() shinytest2::AppDriver$get_download() shinytest2::AppDriver$get_html() shinytest2::AppDriver$get_js() shinytest2::AppDriver$get_logs() shinytest2::AppDriver$get_screenshot() shinytest2::AppDriver$get_text() shinytest2::AppDriver$get_url() shinytest2::AppDriver$get_value() shinytest2::AppDriver$get_values() shinytest2::AppDriver$get_variant() shinytest2::AppDriver$get_window_size() shinytest2::AppDriver$log_message() shinytest2::AppDriver$run_js() shinytest2::AppDriver$set_inputs() shinytest2::AppDriver$set_window_size() shinytest2::AppDriver$stop() shinytest2::AppDriver$upload_file() shinytest2::AppDriver$view() shinytest2::AppDriver$wait_for_idle() shinytest2::AppDriver$wait_for_js() shinytest2::AppDriver$wait_for_value()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver$new() TealAppDriver$click() TealAppDriver$expect_no_shiny_error() TealAppDriver$expect_no_validation_error() TealAppDriver$expect_validation_error() TealAppDriver$set_input() TealAppDriver$navigate_teal_tab() TealAppDriver$active_ns() TealAppDriver$active_module_ns() TealAppDriver$active_module_element() TealAppDriver$active_module_element_text() TealAppDriver$active_filters_ns() TealAppDriver$active_data_summary_ns() TealAppDriver$active_data_summary_element() TealAppDriver$get_active_module_input() TealAppDriver$get_active_module_output() TealAppDriver$get_active_module_table_output() TealAppDriver$get_active_module_plot_output() TealAppDriver$set_active_module_input() TealAppDriver$get_active_filter_vars() TealAppDriver$get_active_data_summary_table() TealAppDriver$is_visible() TealAppDriver$get_active_data_filters() TealAppDriver$add_filter_var() TealAppDriver$remove_filter_var() TealAppDriver$set_active_filter_selection() TealAppDriver$get_attr() TealAppDriver$get_html_rvest() TealAppDriver$open_url() TealAppDriver$wait_for_active_module_value() TealAppDriver$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"Drive a teal application — TealAppDriver","text":"Initialize TealAppDriver object testing teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$new( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), landing_popup = NULL, timeout = rlang::missing_arg(), load_timeout = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"data, modules, filter, title, header, footer, landing_popup arguments passed init timeout (numeric) Default number milliseconds timeout timeout_ parameter TealAppDriver class. Defaults 20s. See shinytest2::AppDriver new method details change via options environment variables. load_timeout (numeric) long wait app load, ms. includes time start R. Defaults 100s. See shinytest2::AppDriver new method details change via options environment variables ... Additional arguments passed shinytest2::AppDriver$new","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Object class TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-click-","dir":"Reference","previous_headings":"","what":"Method click()","title":"Drive a teal application — TealAppDriver","text":"Append parent shinytest2::AppDriver click method call waif_for_idle() method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$click(...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"... arguments passed parent shinytest2::AppDriver click() method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-expect-no-shiny-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_shiny_error()","title":"Drive a teal application — TealAppDriver","text":"Check app shiny errors. checks global shiny errors. Note shiny errors dependent shiny server render captured teal module tab visited shiny trigger server computations tab invisible. , navigate module tab want test calling function. Although, catches errors hidden module tabs already rendered.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_shiny_error()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-expect-no-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_validation_error()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-expect-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_validation_error()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-set-input-","dir":"Reference","previous_headings":"","what":"Method set_input()","title":"Drive a teal application — TealAppDriver","text":"Set input teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-5","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id complete name space. value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-navigate-teal-tab-","dir":"Reference","previous_headings":"","what":"Method navigate_teal_tab()","title":"Drive a teal application — TealAppDriver","text":"Navigate teal tabs teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-6","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$navigate_teal_tab(tabs)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"tabs (character) Labels tabs navigate . order tabs important, start parent level tab. Note: case teal tab group duplicate names, first tab selected, wish select second tab name, use suffix \"_1\". wish select third tab name, use suffix \"_2\" .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-ns-","dir":"Reference","previous_headings":"","what":"Method active_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space different components teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-7","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(list) list active shiny name space teal components.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-module-ns-","dir":"Reference","previous_headings":"","what":"Method active_module_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting module content.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-8","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-4","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-module-element-","dir":"Reference","previous_headings":"","what":"Method active_module_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-9","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element(element)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-4","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-5","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-module-element-text-","dir":"Reference","previous_headings":"","what":"Method active_module_element_text()","title":"Drive a teal application — TealAppDriver","text":"Get text active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-10","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element_text(element)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-5","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) text custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-6","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) text active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-filters-ns-","dir":"Reference","previous_headings":"","what":"Method active_filters_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-11","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_filters_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-7","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-data-summary-ns-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting data-summary panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-12","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_ns()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-8","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space data-summary component.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-active-data-summary-element-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-13","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_element(element)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-6","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-9","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-input-","dir":"Reference","previous_headings":"","what":"Method get_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Get input module teal app. function access inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-14","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_input(input_id)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-7","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-10","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny input.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-15","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_output(output_id)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-8","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"output_id (character) shiny output id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-11","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny output.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-table-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_table_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::table_with_settings DT::DTOutput teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-16","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_table_output(table_id, which = 1)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-9","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"table_id (character(1)) id table active teal module's name space. (integer) one table, extracted. default look table built using teal.widgets::table_with_settings.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-12","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame table contents.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-module-plot-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_plot_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::plot_with_settings teal app. function access plots name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-17","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_plot_output(plot_id)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-10","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"plot_id (character(1)) id plot active teal module's name space.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-13","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"src attribute character(1) vector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-set-active-module-input-","dir":"Reference","previous_headings":"","what":"Method set_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Set input module teal app. function set inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-18","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_module_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-11","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value . value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-14","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-filter-vars-","dir":"Reference","previous_headings":"","what":"Method get_active_filter_vars()","title":"Drive a teal application — TealAppDriver","text":"Get active datasets can accessed via filter panel current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-19","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_filter_vars()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-data-summary-table-","dir":"Reference","previous_headings":"","what":"Method get_active_data_summary_table()","title":"Drive a teal application — TealAppDriver","text":"Get active data summary table","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-20","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_summary_table()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-15","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-is-visible-","dir":"Reference","previous_headings":"","what":"Method is_visible()","title":"Drive a teal application — TealAppDriver","text":"Test DOM elements visible page JavaScript call.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-21","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$is_visible( selector, content_visibility_auto = FALSE, opacity_property = FALSE, visibility_property = FALSE )"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-12","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) CSS selector check visibility. CSS id return one element UI well formed. content_visibility_auto, opacity_property, visibility_property (logical(1)) See information https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-16","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Logical vector occurrences selector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-active-data-filters-","dir":"Reference","previous_headings":"","what":"Method get_active_data_filters()","title":"Drive a teal application — TealAppDriver","text":"Get active filter variables dataset teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-22","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_filters(dataset_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-13","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset get filter variables . NULL, filter variables datasets returned list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-add-filter-var-","dir":"Reference","previous_headings":"","what":"Method add_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Add new variable dataset filtered.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-23","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$add_filter_var(dataset_name, var_name, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-14","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset add filter variable . var_name (character) name variable add filter panel. ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-17","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-remove-filter-var-","dir":"Reference","previous_headings":"","what":"Method remove_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Remove active filter variable dataset active filter variables panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-24","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$remove_filter_var(dataset_name = NULL, var_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-15","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset remove filter variable . NULL, filter variables removed. var_name (character) name variable remove filter panel. NULL, filter variables dataset removed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-18","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-set-active-filter-selection-","dir":"Reference","previous_headings":"","what":"Method set_active_filter_selection()","title":"Drive a teal application — TealAppDriver","text":"Set active filter values variable dataset active filter variable panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-25","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_filter_selection(dataset_name, var_name, input, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-16","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset set filter value . var_name (character) name variable set filter value . input value set filter . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-19","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-attr-","dir":"Reference","previous_headings":"","what":"Method get_attr()","title":"Drive a teal application — TealAppDriver","text":"Extract html attribute (found selector).","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-26","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_attr(selector, attribute)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-17","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) specifying selector used get content specific node. attribute (character(1)) name attribute retrieve node specified selector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-20","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"character vector.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-get-html-rvest-","dir":"Reference","previous_headings":"","what":"Method get_html_rvest()","title":"Drive a teal application — TealAppDriver","text":"Wrapper around get_html passes output directly rvest::read_html.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-27","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_html_rvest(selector)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-18","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) passed get_html.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-21","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"XML document. Wrapper around get_url() method opens app browser.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-28","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$open_url()"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"returns-22","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Nothing. Opens underlying teal app browser.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-wait-for-active-module-value-","dir":"Reference","previous_headings":"","what":"Method wait_for_active_module_value()","title":"Drive a teal application — TealAppDriver","text":"Waits specified input, output, export value. function serves wrapper around wait_for_value method, providing flexible interface waiting different types values within active module namespace.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-29","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$wait_for_active_module_value( input = rlang::missing_arg(), output = rlang::missing_arg(), export = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-19","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input, output, export name input, output, export value. one parameters may used. ... Must empty. Allows parameter expansion. Parameter additional value passed wait_for_value.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"Drive a teal application — TealAppDriver","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"usage-30","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/reference/TealAppDriver.html","id":"arguments-20","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":null,"dir":"Reference","previous_headings":"","what":"TealReportCard — TealReportCard","title":"TealReportCard — TealReportCard","text":"Child class ReportCard used teal specific applications. addition parent methods, supports rendering teal specific elements source code, encodings panel content filter panel content part meta data.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard -> TealReportCard","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard$append_content() teal.reporter::ReportCard$append_metadata() teal.reporter::ReportCard$append_plot() teal.reporter::ReportCard$append_rcode() teal.reporter::ReportCard$append_table() teal.reporter::ReportCard$append_text() teal.reporter::ReportCard$from_list() teal.reporter::ReportCard$get_content() teal.reporter::ReportCard$get_metadata() teal.reporter::ReportCard$get_name() teal.reporter::ReportCard$initialize() teal.reporter::ReportCard$reset() teal.reporter::ReportCard$set_name() teal.reporter::ReportCard$to_list()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealReportCard — TealReportCard","text":"TealReportCard$append_src() TealReportCard$append_fs() TealReportCard$append_encodings() TealReportCard$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-append-src-","dir":"Reference","previous_headings":"","what":"Method append_src()","title":"TealReportCard — TealReportCard","text":"Appends source code content meta data TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_src(src, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"src (character(1)) code text. ... rmarkdown R chunk parameter value. eval parameter always set FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"Object class TealReportCard, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-append-fs-","dir":"Reference","previous_headings":"","what":"Method append_fs()","title":"TealReportCard — TealReportCard","text":"Appends filter state list content metadata TealReportCard. filter state list attribute named formatted, appends card otherwise uses default yaml::.yaml format list. filter state list empty, nothing appended content.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_fs(fs)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"fs (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-append-encodings-","dir":"Reference","previous_headings":"","what":"Method append_encodings()","title":"TealReportCard — TealReportCard","text":"Appends encodings list content metadata TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_encodings(encodings)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"encodings (list) list encodings selections teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealReportCard — TealReportCard","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealReportCard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"## ------------------------------------------------ ## Method `TealReportCard$append_src` ## ------------------------------------------------ card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content() #> [1] \"plot(iris)\" ## ------------------------------------------------ ## Method `TealReportCard$append_encodings` ## ------------------------------------------------ card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content() #> [1] \"Selected Options\""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":null,"dir":"Reference","previous_headings":"","what":"TealSlicesBlock — TealSlicesBlock","title":"TealSlicesBlock — TealSlicesBlock","text":"Specialized TealSlicesBlock block managing filter panel content reports.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"super-classes","dir":"Reference","previous_headings":"","what":"Super classes","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock -> teal.reporter::TextBlock -> TealSlicesBlock","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock$get_content() teal.reporter::TextBlock$get_available_styles() teal.reporter::TextBlock$get_style() teal.reporter::TextBlock$set_style()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealSlicesBlock — TealSlicesBlock","text":"TealSlicesBlock$new() TealSlicesBlock$set_content() TealSlicesBlock$from_list() TealSlicesBlock$to_list() TealSlicesBlock$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$new(content = teal_slices(), style = \"verbatim\")"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function. style (character(1)) string specifying style apply.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object content parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"Object class TealSlicesBlock, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-set-content-","dir":"Reference","previous_headings":"","what":"Method set_content()","title":"TealSlicesBlock — TealSlicesBlock","text":"Sets content TealSlicesBlock. Sets content YAML text represents list generated teal_slices. list displays limited number fields teal_slice objects, list sufficient conclude filters applied. selected field teal_slice object range, displayed \"min\"","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$set_content(content)"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-from-list-","dir":"Reference","previous_headings":"","what":"Method from_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Create TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$from_list(x)"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"x (named list) two fields text style. Use get_available_styles method get possible styles.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\"))"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-to-list-","dir":"Reference","previous_headings":"","what":"Method to_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Convert TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$to_list()"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"named list text style.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list()"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealSlicesBlock — TealSlicesBlock","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/TealSlicesBlock.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"## ------------------------------------------------ ## Method `TealSlicesBlock$from_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\")) ## ------------------------------------------------ ## Method `TealSlicesBlock$to_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list() #> $text #> [1] \"\" #> #> $style #> [1] \"verbatim\" #>"},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Append a teal_module to children of a teal_modules object — append_module","title":"Append a teal_module to children of a teal_modules object — append_module","text":"Append teal_module children teal_modules object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append a teal_module to children of a teal_modules object — append_module","text":"","code":"append_module(modules, module)"},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append a teal_module to children of a teal_modules object — append_module","text":"modules (teal_modules) module (teal_module) object appended onto children modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/append_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Append a teal_module to children of a teal_modules object — append_module","text":"teal_modules object module appended.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":null,"dir":"Reference","previous_headings":"","what":"Compare bookmarks. — bookmarks_identical","title":"Compare bookmarks. — bookmarks_identical","text":"Test two bookmarks store identical state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compare bookmarks. — bookmarks_identical","text":"","code":"bookmarks_identical(book1, book2)"},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compare bookmarks. — bookmarks_identical","text":"book1, book2 bookmark directories stored shiny_bookmarks/; default two recently modified directories","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compare bookmarks. — bookmarks_identical","text":"Invisible NULL bookmarks identical bookmarks test. FALSE inconsistencies detected.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Compare bookmarks. — bookmarks_identical","text":"input environments compared one variable time identical, values bookmarks reported. States datatables stripped time element comparing time stamp always different. contents printed large contents informative. Elements present one bookmark absent also reported. Differences printed messages. values environments compared .equal.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/bookmarks_identical.html","id":"how-to-use","dir":"Reference","previous_headings":"","what":"How to use","title":"Compare bookmarks. — bookmarks_identical","text":"Open application, change relevant inputs (typically, ), create bookmark. open bookmark immediately create bookmark . restoring bookmarks occurred properly, two bookmarks store state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":null,"dir":"Reference","previous_headings":"","what":"Build app title with favicon — build_app_title","title":"Build app title with favicon — build_app_title","text":"helper function create browser title along logo.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Build app title with favicon — build_app_title","text":"","code":"build_app_title( title = \"teal app\", favicon = \"https://raw.githubusercontent.com/insightsengineering/hex-stickers/main/PNG/nest.png\" )"},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Build app title with favicon — build_app_title","text":"title (character) browser title teal app. favicon (character) path icon title. image/icon path can remote static path accessible shiny, like www/","code":""},{"path":"https://insightsengineering.github.io/teal/reference/build_app_title.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Build app title with favicon — build_app_title","text":"shiny.tag containing element adds title logo shiny app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls expression when condition is met — call_once_when","title":"Calls expression when condition is met — call_once_when","text":"Function postpones handlerExpr moment eventExpr (condition) returns TRUE, otherwise nothing happens.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls expression when condition is met — call_once_when","text":"","code":"call_once_when( eventExpr, handlerExpr, event.env = parent.frame(), handler.env = parent.frame(), ... )"},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls expression when condition is met — call_once_when","text":"eventExpr (quoted unquoted) logical expression represents event; can simple reactive value like input$click, call reactive expression like dataset(), even complex expression inside curly braces. handlerExpr expression call whenever eventExpr invalidated. side-effect-producing action (return value ignored). executed within isolate() scope. event.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. eventExpr quosure event.quoted TRUE, event.env ignored. handler.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. handlerExpr quosure handler.quoted TRUE, handler.env ignored. ... additional arguments passed observeEvent exception eventExpr allowed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/call_once_when.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls expression when condition is met — call_once_when","text":"observer.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in filters — check_filter_datanames","title":"Check datanames in filters — check_filter_datanames","text":"function checks whether datanames filters correspond data, returning character vector error messages TRUE checks pass.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in filters — check_filter_datanames","text":"","code":"check_filter_datanames(filters, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in filters — check_filter_datanames","text":"filters (teal_slices) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_filter_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in filters — check_filter_datanames","text":"character(1) containing error message TRUE validation passes.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in modules — check_modules_datanames","title":"Check datanames in modules — check_modules_datanames","text":"functions check specified datanames modules match data object, returning error messages TRUE successful validation. Two functions return error message different forms: check_modules_datanames returns character(1) basic assertion usage check_modules_datanames_html returns shiny.tag.list display app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in modules — check_modules_datanames","text":"","code":"check_modules_datanames(modules, datanames) check_modules_datanames_html(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in modules — check_modules_datanames","text":"modules (teal_modules) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in modules — check_modules_datanames","text":"TRUE validation passes, otherwise character(1) shiny.tag.list","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":null,"dir":"Reference","previous_headings":"","what":"Check that argument is reactive. — check_reactive","title":"Check that argument is reactive. — check_reactive","text":"Check argument reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check that argument is reactive. — check_reactive","text":"","code":"check_reactive(x, null.ok = FALSE) test_reactive(x, null.ok = FALSE) assert_reactive( x, null.ok = FALSE, .var.name = checkmate::vname(x), add = NULL )"},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check that argument is reactive. — check_reactive","text":"x [] Object check. null.ok [logical(1)] set TRUE, x may also NULL. case type check x performed, additional checks disabled. .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname. add [AssertCollection] Collection store assertion messages. See AssertCollection.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/check_reactive.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check that argument is reactive. — check_reactive","text":"Depending function prefix: check successful, functions assertClass/assert_class return x invisibly, whereas checkClass/check_class testClass/test_class return TRUE. check successful, assertClass/assert_class throws error message, testClass/test_class returns FALSE, checkClass/check_class return string error message. function expect_class always returns expectation.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":null,"dir":"Reference","previous_headings":"","what":"Application ID — create_app_id","title":"Application ID — create_app_id","text":"Creates App ID used match filter snapshots application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Application ID — create_app_id","text":"","code":"create_app_id(data, modules)"},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Application ID — create_app_id","text":"data (teal_data teal_data_module) accepted init modules (teal_modules) object accepted init","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Application ID — create_app_id","text":"single character string.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/create_app_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Application ID — create_app_id","text":"Calculate app ID used stamp filter state snapshots. App ID hash app's data modules. See \"transferring snapshots\" section ?snapshot.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":null,"dir":"Reference","previous_headings":"","what":"Capture error and decorate error message. — decorate_err_msg","title":"Capture error and decorate error message. — decorate_err_msg","text":"Capture error decorate error message.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Capture error and decorate error message. — decorate_err_msg","text":"","code":"decorate_err_msg(x, pre = character(0), post = character(0))"},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Capture error and decorate error message. — decorate_err_msg","text":"x object evaluate pre (character(1)) string prepend error message post (character(1)) string append error message","code":""},{"path":"https://insightsengineering.github.io/teal/reference/decorate_err_msg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Capture error and decorate error message. — decorate_err_msg","text":"x error, otherwise throws error decorated message","code":""},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":null,"dir":"Reference","previous_headings":"","what":"Deep copy teal_slices — deep_copy_filter","title":"Deep copy teal_slices — deep_copy_filter","text":"important create new copy teal_slices starting new shiny session. Otherwise, object shared multiple users created global environment shiny session starts.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deep copy teal_slices — deep_copy_filter","text":"","code":"deep_copy_filter(filter)"},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Deep copy teal_slices — deep_copy_filter","text":"filter (teal_slices)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/deep_copy_filter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Deep copy teal_slices — deep_copy_filter","text":"teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Adds signature protection to the datanames in the data — .add_signature_to_data","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"Adds signature protection datanames data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"","code":".add_signature_to_data(data)"},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"data (teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-add_signature_to_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"teal_data additional code signature datanames","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":null,"dir":"Reference","previous_headings":"","what":"Get code that tests the integrity of the reproducible data — .get_hashes_code","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"Get code tests integrity reproducible data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"","code":".get_hashes_code(data, datanames = names(data))"},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"data (teal_data) object holding data datanames (character) names datasets","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-get_hashes_code.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"character vector code lines.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-smart_rbind.html","id":null,"dir":"Reference","previous_headings":"","what":"Smart rbind — .smart_rbind","title":"Smart rbind — .smart_rbind","text":"Combine data.frame objects different columns","code":""},{"path":"https://insightsengineering.github.io/teal/reference/dot-smart_rbind.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Smart rbind — .smart_rbind","text":"","code":".smart_rbind(...)"},{"path":"https://insightsengineering.github.io/teal/reference/dot-smart_rbind.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Smart rbind — .smart_rbind","text":"... (data.frame)","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"An example teal module — example_module","text":"","code":"example_module( label = \"example teal module\", datanames = \"all\", transformers = list() )"},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"An example teal module — example_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"An example teal module — example_module","text":"teal module can included modules argument init().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/example_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"An example teal module — example_module","text":"","code":"app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract all transformers from modules. — extract_transformers","title":"Extract all transformers from modules. — extract_transformers","text":"Extract transformers modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract all transformers from modules. — extract_transformers","text":"","code":"extract_transformers(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract all transformers from modules. — extract_transformers","text":"modules teal_modules teal_module","code":""},{"path":"https://insightsengineering.github.io/teal/reference/extract_transformers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract all transformers from modules. — extract_transformers","text":"list teal_transform_module nested way input modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":null,"dir":"Reference","previous_headings":"","what":"Get client timezone — get_client_timezone","title":"Get client timezone — get_client_timezone","text":"User timezone browser may different one server. script can run register shiny input contains information timezone browser.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get client timezone — get_client_timezone","text":"","code":"get_client_timezone(ns)"},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get client timezone — get_client_timezone","text":"ns (function) namespace function passed session object shiny server. shiny modules allow proper name spacing registered input.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_client_timezone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get client timezone — get_client_timezone","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_rcode_libraries.html","id":null,"dir":"Reference","previous_headings":"","what":"Generates library calls from current session info — get_rcode_libraries","title":"Generates library calls from current session info — get_rcode_libraries","text":"Function create multiple library calls current session info ensure reproducible code works.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_rcode_libraries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generates library calls from current session info — get_rcode_libraries","text":"","code":"get_rcode_libraries()"},{"path":"https://insightsengineering.github.io/teal/reference/get_rcode_libraries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generates library calls from current session info — get_rcode_libraries","text":"Character vector library() calls.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Get unique labels — get_unique_labels","title":"Get unique labels — get_unique_labels","text":"Get unique labels modules avoid namespace conflicts.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get unique labels — get_unique_labels","text":"","code":"get_unique_labels(labels)"},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get unique labels — get_unique_labels","text":"labels (character) vector labels","code":""},{"path":"https://insightsengineering.github.io/teal/reference/get_unique_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get unique labels — get_unique_labels","text":"(character) vector unique labels","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include CSS files from /inst/css/ package directory to application header — include_css_files","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"","code":"include_css_files(pattern = \"*\")"},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"pattern (character) pattern files included","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_css_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"HTML code includes CSS files.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include JS files from /inst/js/ package directory to application header — include_js_files","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"","code":"include_js_files(pattern = NULL, except = NULL)"},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"pattern (character) pattern files included, passed system.file except (character) vector basename filenames excluded","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"HTML code includes JS files.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":null,"dir":"Reference","previous_headings":"","what":"Code to include teal CSS and JavaScript files — include_teal_css_js","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"useful want use JavaScript CSS files used teal application. also useful running standalone modules teal correct styles. Also initializes shinyjs can use .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"","code":"include_teal_css_js()"},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"shiny.tag.list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/include_teal_css_js.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"Simply add include_teal_css_js() one UI elements.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":null,"dir":"Reference","previous_headings":"","what":"Create the server and UI function for the shiny app — init","title":"Create the server and UI function for the shiny app — init","text":"End-users: important function start teal app composed teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create the server and UI function for the shiny app — init","text":"","code":"init( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), id = character(0), landing_popup = NULL )"},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create the server and UI function for the shiny app — init","text":"data (teal_data teal_data_module) constructing data object, refer teal_data() teal_data_module(). datanames set teal_data object, defaults teal_data environment used. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices(). title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. landing_popup (teal_module_landing) Optionally, landing_popup_module show soon teal app initialized.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create the server and UI function for the shiny app — init","text":"Named list containing server UI functions.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/init.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create the server and UI function for the shiny app — init","text":"","code":"app <- init( data = within( teal_data(), { new_iris <- transform(iris, id = seq_len(nrow(iris))) new_mtcars <- transform(mtcars, id = seq_len(nrow(mtcars))) } ), modules = modules( module( label = \"data source\", server = function(input, output, session, data) {}, ui = function(id, ...) tags$div(p(\"information about data source\")), datanames = \"all\" ), example_module(label = \"example teal module\"), module( \"Iris Sepal.Length histogram\", server = function(input, output, session, data) { output$hist <- renderPlot( hist(data()[[\"new_iris\"]]$Sepal.Length) ) }, ui = function(id, ...) { ns <- NS(id) plotOutput(ns(\"hist\")) }, datanames = \"new_iris\" ) ), filter = teal_slices( teal_slice(dataname = \"new_iris\", varname = \"Species\"), teal_slice(dataname = \"new_iris\", varname = \"Sepal.Length\"), teal_slice(dataname = \"new_mtcars\", varname = \"cyl\"), exclude_varnames = list(new_iris = c(\"Sepal.Width\", \"Petal.Width\")), module_specific = TRUE, mapping = list( `example teal module` = \"new_iris Species\", `Iris Sepal.Length histogram` = \"new_iris Species\", global_filters = \"new_mtcars cyl\" ) ), title = \"App title\", header = tags$h1(\"Sample App\"), footer = tags$p(\"Sample footer\") ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":null,"dir":"Reference","previous_headings":"","what":"Does the object make use of the arg — is_arg_used","title":"Does the object make use of the arg — is_arg_used","text":"object make use arg","code":""},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Does the object make use of the arg — is_arg_used","text":"","code":"is_arg_used(modules, arg)"},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Does the object make use of the arg — is_arg_used","text":"modules (teal_module teal_modules) object arg (character(1)) names arguments checked formals teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/is_arg_used.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Does the object make use of the arg — is_arg_used","text":"logical whether object makes use arg.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Landing popup module — landing_popup_module","title":"Landing popup module — landing_popup_module","text":"Creates landing welcome popup teal applications. module used display popup dialog application starts. dialog blocks access application must closed button application can viewed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Landing popup module — landing_popup_module","text":"","code":"landing_popup_module( label = \"Landing Popup\", title = NULL, content = NULL, buttons = modalButton(\"Accept\") )"},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Landing popup module — landing_popup_module","text":"label (character(1)) Label module. title (character(1)) Text displayed popup title. content (character(1), shiny.tag shiny.tag.list) content popup. Passed ... shiny::modalDialog. See examples. buttons (shiny.tag shiny.tag.list) Typically modalButton actionButton. See examples.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Landing popup module — landing_popup_module","text":"teal_module (extended teal_landing_module class) used teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/landing_popup_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Landing popup module — landing_popup_module","text":"","code":"app1 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( content = \"A place for the welcome message or a disclaimer statement.\", buttons = modalButton(\"Proceed\") ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app1$ui, app1$server) } app2 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( title = \"Welcome\", content = tags$b( \"A place for the welcome message or a disclaimer statement.\", style = \"color: red;\" ), buttons = tagList( modalButton(\"Proceed\"), actionButton(\"read\", \"Read more\", onclick = \"window.open('http://google.com', '_blank')\" ), actionButton(\"close\", \"Reject\", onclick = \"window.close()\") ) ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app2$ui, app2$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"App state management. — module_bookmark_manager","title":"App state management. — module_bookmark_manager","text":"Capture restore global (app) input state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"App state management. — module_bookmark_manager","text":"","code":"ui_bookmark_panel(id, modules) srv_bookmark_panel(id, modules) get_bookmarking_option() need_bookmarking(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"App state management. — module_bookmark_manager","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"App state management. — module_bookmark_manager","text":"Invisible NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"App state management. — module_bookmark_manager","text":"module introduces bookmarks teal apps: shiny bookmarking mechanism becomes enabled server-side bookmarks can created. bookmark manager presents button bookmark icon placed tab-bar. clicked, button creates bookmark opens modal displays bookmark URL. teal guarantee modules (teal_module objects) bookmarkable. , teal_bookmarkable attribute set TRUE. modules bookmarkable, bookmark manager modal displays warning bookmark button displays flag. order communicate external module bookmarkable, module developer set teal_bookmarkable attribute TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"App state management. — module_bookmark_manager","text":"bookmark URL contains app address /?_state_id_= suffix. directory created server, state application saved. Accessing bookmark URL opens new session app starts previously saved state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_bookmark_manager.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"App state management. — module_bookmark_manager","text":"enable bookmarking use either: shiny app using shinyApp(..., enableBookmarking = \"server\") (supported shinytest2) set options(shiny.bookmarkStore = \"server\") running app","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":null,"dir":"Reference","previous_headings":"","what":"Data summary — module_data_summary","title":"Data summary — module_data_summary","text":"Module utils display number rows subjects filtered unfiltered data.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data summary — module_data_summary","text":"","code":"ui_data_summary(id) srv_data_summary(id, teal_data) get_filter_overview_wrapper(teal_data) get_filter_overview(current_data, initial_data, dataname, subject_keys) get_filter_overview_array(current_data, initial_data, dataname, subject_keys) get_filter_overview_MultiAssayExperiment(current_data, initial_data, dataname)"},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data summary — module_data_summary","text":"id (character(1)) shiny module instance id. teal_data (reactive returning teal_data) current_data (object) current object (filtering transforming). initial_data (object) initial object. dataname (character(1)) subject_keys (character) names columns determine single unique subjects","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data summary — module_data_summary","text":"NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_data_summary.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data summary — module_data_summary","text":"Handling different data classes: get_filter_overview() pseudo S3 method variants : array (data.frame, DataFrame, array, Matrix SummarizedExperiment): Method variant can applied two-dimensional objects ncol() can used. MultiAssayExperiment: summary contains counts colData experiments. data types module displays data name warning icon details. Module includes also \"Show/Hide unsupported\" button toggle rows summary table containing datasets number observations calculated.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter panel module in teal — module_filter_data","title":"Filter panel module in teal — module_filter_data","text":"Creates filter panel module teal_data object returns teal_data. build way filter panel changes anything happens (e.g. module_init_data) triggering reactive events something changed module visible. Thanks special implementation modules' data recalculated modules currently displayed.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter panel module in teal — module_filter_data","text":"","code":"ui_filter_data(id) srv_filter_data(id, datasets, active_datanames, data_rv, is_active) .make_filtered_teal_data(modules, data, datasets = NULL, datanames) .observe_active_filter_changed(datasets, is_active, active_datanames, data_rv) .get_filter_expr(datasets, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter panel module in teal — module_filter_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". active_datanames (reactive returning character) module's data names data_rv (reactive returning teal_data) modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter panel module in teal — module_filter_data","text":"eventReactive containing teal_data containing filtered objects filter code. eventReactive triggers conditions met: tab selected (is_active) filters changed (get_filter_expr different previous)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Manage multiple FilteredData objects — module_filter_manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Oversee filter states across entire application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manage multiple FilteredData objects — module_filter_manager","text":"","code":"ui_filter_manager_panel(id) srv_filter_manager_panel(id, slices_global) ui_filter_manager(id) srv_filter_manager(id, slices_global) srv_module_filter_manager(id, module_fd, slices_global)"},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Manage multiple FilteredData objects — module_filter_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) containing teal_slices. module_fd (FilteredData) Object containing data filtered single teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Module returns slices_global (reactiveVal) containing teal_slices object mapping.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"slices-global","dir":"Reference","previous_headings":"","what":"Slices global","title":"Manage multiple FilteredData objects — module_filter_manager","text":"key role maintaining module-specific filter states played .slicesGlobal object. reference class holds following fields: all_slices (reactiveVal) - reactive value containing filters registered app. module_slices_api (reactiveValues) - reactive field containing references modules' FilteredData object methods. moment used srv_filter_manager display filter states table combining informations all_slices FilteredData$get_available_teal_slices(). session new filters added all_slices unless module_snapshot_manager used restore previous state. Filters all_slices can activated deactivated module linked (ways) attr(, \"mapping\") : module's filter added removed FilteredData object, information passed SlicesGlobal updates attr(, \"mapping\") accordingly. mapping changes SlicesGlobal, filters set removed module's FilteredData.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_filter_manager.html","id":"filter-manager","dir":"Reference","previous_headings":"","what":"Filter manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Filter-manager split two parts: ui/srv_filter_manager_panel - Called whole app. module observes changes filters slices_global displays table utilizing information mapping: (TRUE) - filter active module (FALSE) - filter inactive module (NA) - filter available module ui/srv_module_filter_manager - Called teal_module. Handling filter states single module keeping module FilteredData consistent slices_global, local filters always reflected slices_global mapping vice versa.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Module for teal — module_init_data","title":"Data Module for teal — module_init_data","text":"module manages data argument srv_teal. teal framework uses teal_data(), can provided various ways: Directly teal.data::teal_data() object. automatically convert reactive teal_data. reactive object returns teal.data::teal_data() object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Module for teal — module_init_data","text":"","code":"ui_init_data(id) srv_init_data(id, data)"},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data Module for teal — module_init_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data Module for teal — module_init_data","text":"reactive object returns: Output data. data fails returned error handled (tryCatch()) rest application can respond respectively.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/module_init_data.html","id":"reactive-teal-data-","dir":"Reference","previous_headings":"","what":"Reactive teal_data:","title":"Data Module for teal — module_init_data","text":"data application can reactively updated, prompting srv_teal() rebuild content accordingly. two methods creating interactive teal_data: Using reactive object provided outside teal application. scenario, reactivity controlled external module, srv_teal responds changes. Using teal_data_module(), embedded within teal application, allowing data resubmitted user needed. Since server teal_data_module() must return reactive teal_data object, methods (1 2) produce reactive behavior within teal application. distinction lies data control: first method involves external control, second method involves control custom module within app. details, see module_teal_data.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve labels from teal_modules — module_labels","title":"Retrieve labels from teal_modules — module_labels","text":"Retrieve labels teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve labels from teal_modules — module_labels","text":"","code":"module_labels(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve labels from teal_modules — module_labels","text":"modules (teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve labels from teal_modules — module_labels","text":"list containing labels modules. modules nested, function returns nested list labels.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract/Remove module(s) of specific class — extract_module","title":"Extract/Remove module(s) of specific class — extract_module","text":"Given teal_module teal_modules, return elements structure according class.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract/Remove module(s) of specific class — extract_module","text":"","code":"extract_module(modules, class) drop_module(modules, class)"},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract/Remove module(s) of specific class — extract_module","text":"modules (teal_modules) class class name teal_module extracted dropped.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_management.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract/Remove module(s) of specific class — extract_module","text":"extract_module, teal_module class class teal_modules containing modules class class. drop_module, opposite, teal_modules class class. teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter state snapshot management — module_snapshot_manager","title":"Filter state snapshot management — module_snapshot_manager","text":"Capture restore snapshots global (app) filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter state snapshot management — module_snapshot_manager","text":"","code":"ui_snapshot_manager_panel(id) srv_snapshot_manager_panel(id, slices_global) ui_snapshot_manager(id) srv_snapshot_manager(id, slices_global)"},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter state snapshot management — module_snapshot_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) contains teal_slices object containing teal_slices existing app, active inactive.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter state snapshot management — module_snapshot_manager","text":"list containing snapshot history, element unlisted teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter state snapshot management — module_snapshot_manager","text":"module introduces snapshots: stored descriptions filter state entire application. Snapshots allow user save current filter state application later use session, well save file order share app developer users, turn can upload session. snapshot manager accessed camera icon tabset bar. beginning session presents three icons: camera, upload, circular arrow. Clicking camera captures snapshot, clicking upload adds snapshot file applies filter states therein, clicking arrow resets initial application state. snapshots added, show rows table select button save button.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots basically teal_slices objects, however, since module served separate instance FilteredData objects require shared state, teal_slice reactiveVal teal_slices stored . Therefore, teal_slices reversibly converted list lists representation (attributes maintained). Snapshots stored reactiveVal named list. first snapshot initial state application user can add snapshot whenever see fit. every snapshot except initial one, piece UI generated contains snapshot name, select button restore snapshot, save button save file. initial snapshot restored separate \"reset\" button. saved directly user welcome capture initial state snapshot save .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"snapshot-mechanics","dir":"Reference","previous_headings":"","what":"Snapshot mechanics","title":"Filter state snapshot management — module_snapshot_manager","text":"snapshot captured, user prompted name . Names displayed since used create button ids, hood converted syntactically valid strings. New snapshot names validated valid versions unique. Leading trailing white space trimmed. module can read global state application slices_global mapping_matrix. former provides list existing teal_slices latter says slice active module. name accepted, slices_global converted list lists - snapshot. snapshot contains mapping attribute initial application state (one restored), may reflect current one, mapping_matrix transformed obtain current mapping, .e. list , passed mapping argument teal_slices(), result current mapping. substituted snapshot's mapping attribute snapshot added snapshot list. restore app state, snapshot retrieved storage rebuilt teal_slices object. state FilteredData objects (provided datasets) cleared set anew according mapping attribute snapshot. snapshot set current content slices_global. save snapshot, snapshot retrieved reassembled just like restoring, saved file slices_store(). snapshot uploaded, first added storage just like newly created one, used restore app state much like snapshot taken storage. Upon clicking upload icon user prompted file upload may choose name new snapshot. name defaults name file (extension dropped) normal naming rules apply. Loading file yields teal_slices object, disassembled storage used directly restoring app state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"transferring-snapshots","dir":"Reference","previous_headings":"","what":"Transferring snapshots","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots uploaded disk used application come , .e. application uses data modules. ensure case, init stamps teal_slices app id stored app_id attribute teal_slices object. snapshot restored file, app_id compared current app state match snapshot admitted session.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"bookmarks","dir":"Reference","previous_headings":"","what":"Bookmarks","title":"Filter state snapshot management — module_snapshot_manager","text":"onBookmark callback creates snapshot current filter state. done app session, module session. (snapshot retrieved module_teal order set initial app state restored app.) snapshot, previous snapshot history dumped values.rds file .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_snapshot_manager.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Filter state snapshot management — module_snapshot_manager","text":"Aleksander Chlebowski","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":null,"dir":"Reference","previous_headings":"","what":"teal main module — module_teal","title":"teal main module — module_teal","text":"Module create teal app. module can called directly instead init() included custom application. Please note init() adds reporter_previewer_module automatically, case calling ui/srv_teal directly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal main module — module_teal","text":"","code":"ui_teal( id, modules, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal main module — module_teal","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal main module — module_teal","text":"NULL invisibly","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal main module — module_teal","text":"Module responsible creating main shiny app layout initializing necessary components. module establishes reactive connection input data every component app. Reactive change data passed argument, reloads app possibly keeps input settings user can continue one left .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"data-flow-in-teal-application","dir":"Reference","previous_headings":"","what":"data flow in teal application","title":"teal main module — module_teal","text":"module supports multiple data inputs eventually, converted reactive returning teal_data module. reactive teal_data object several actions performed: data loading module_init_data data filtering module_filter_data data transformation module_transform_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal.html","id":"fallback-on-failure","dir":"Reference","previous_headings":"","what":"Fallback on failure","title":"teal main module — module_teal","text":"teal designed way app never crash error introduced custom shiny module provided app developer (e.g. teal_data_module(), teal_transform_module()). module returns failing object, app halt evaluation display warning message. App user always chance fix improper input continue without restarting session.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute and validate teal_data_module — module_teal_data","title":"Execute and validate teal_data_module — module_teal_data","text":"low level module handle teal_data_module execution validation. teal_transform_module() inherits teal_data_module() handled module . srv_teal() accepts various data objects eventually transformed reactive teal_data() standard data class whole teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute and validate teal_data_module — module_teal_data","text":"","code":"ui_teal_data(id, data_module = function(id) NULL) srv_teal_data( id, data_module = function(id) NULL, modules = NULL, validate_shiny_silent_error = TRUE, is_transformer_failed = reactiveValues() ) ui_validate_reactive_teal_data(id) srv_validate_reactive_teal_data( id, data, modules = NULL, validate_shiny_silent_error = FALSE, hide_validation_error = reactive(FALSE) )"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute and validate teal_data_module — module_teal_data","text":"id (character(1)) Module id data_module (teal_data_module) modules (teal_modules teal_module) datanames validation purpose validate_shiny_silent_error (logical) TRUE, shiny.silent.error validated is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message. data (reactive teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute and validate teal_data_module — module_teal_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_data.html","id":"data-validation","dir":"Reference","previous_headings":"","what":"data validation","title":"Execute and validate teal_data_module — module_teal_data","text":"Executed teal_data_module() validated output validated consistency. Output data invalid : teal_data_module() invalid server return reactive. Immediately crashes app! reactive throws shiny.error - happens module creating teal_data() fails. reactive returns qenv.error - happens teal_data() evaluates failing code. reactive object return teal_data(). teal_data() object lacks datanames specified modules argument. teal (observers srv_teal) always waits render app reactive teal_data returned. error 2-4 occurs, relevant error message displayed app user. issue resolved, app continue run. teal guarantees errors data crash app (except error 1).","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"Generate lockfile application's environment reproducibility","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"","code":"ui_teal_lockfile(id) srv_teal_lockfile(id) .teal_lockfile_process_invoke(lockfile_path) .renv_snapshot(lockfile_path) .is_lockfile_deps_installed() .is_disabled_lockfile_scenario()"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"lockfile_path (character) path lockfile.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"NULL","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"different-ways-of-creating-lockfile","dir":"Reference","previous_headings":"","what":"Different ways of creating lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"teal leverages renv::snapshot(), offers multiple methods lockfile creation. Working directory lockfile: teal, default, create implicit type lockfile uses renv::dependencies() detect R packages current project's working directory. DESCRIPTION-based lockfile: generate lockfile based DESCRIPTION file working directory, set renv::settings$snapshot.type(\"explicit\"). naming convention type follows renv::snapshot(). \"explicit\" type, refer renv::settings$package.dependency.fields() DESCRIPTION fields included lockfile. Custom files-based lockfile: specify custom files basis lockfile, set renv::settings$snapshot.type(\"custom\") configure renv.snapshot.filter option.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_lockfile.html","id":"lockfile-usage","dir":"Reference","previous_headings":"","what":"lockfile usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"creating lockfile, can restore application's environment using renv::restore().","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls all modules — module_teal_module","title":"Calls all modules — module_teal_module","text":"UI side teal_modules translated tabsetPanel teal_module tabPanel. , UI server called recursively tab separate module reflect nested structure modules argument.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls all modules — module_teal_module","text":"","code":"ui_teal_module(id, modules, depth = 0L) # Default S3 method ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_modules' ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_module' ui_teal_module(id, modules, depth = 0L) srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # Default S3 method srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_modules' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_module' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) )"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls all modules — module_teal_module","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth (integer(1)) number helps determine depth modules nesting. data_rv (reactive returning teal_data) datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". slices_global (reactiveVal returning modules_teal_slices) see module_filter_manager data_load_status (reactive returning character) Determines action dependent data loading status: \"ok\" teal_data returned data loading. \"teal_data_module failed\" teal_data_module() return teal_data. Disables tabs buttons. \"external failed\" reactive passed srv_teal(data) return teal_data. Hides whole tab panel.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls all modules — module_teal_module","text":"output currently active module. srv_teal_module.teal_module returns reactiveVal containing output called module. srv_teal_module.teal_modules returns output module selected input$active_tab.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":null,"dir":"Reference","previous_headings":"","what":"UI and server modules of teal — module_teal_with_splash","title":"UI and server modules of teal — module_teal_with_splash","text":"Please use module_teal instead.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"UI and server modules of teal — module_teal_with_splash","text":"","code":"ui_teal_with_splash( id, data, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal_with_splash(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"UI and server modules of teal — module_teal_with_splash","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_teal_with_splash.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"UI and server modules of teal — module_teal_with_splash","text":"Returns reactive expression containing teal_data object data loaded NULL .","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Module to transform reactive teal_data — module_transform_data","title":"Module to transform reactive teal_data — module_transform_data","text":"Module calls multiple module_teal_data sequence reactive teal_data output one module handed following module's input.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Module to transform reactive teal_data — module_transform_data","text":"","code":"ui_transform_data(id, transformers = list(), class = \"well\") srv_transform_data( id, data, transformers = list(), modules, is_transformer_failed = reactiveValues() )"},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Module to transform reactive teal_data — module_transform_data","text":"id (character(1)) Module id transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). data (reactive teal_data) modules (teal_modules teal_module) datanames validation purpose is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/module_transform_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Module to transform reactive teal_data — module_transform_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"Retrieve teal_bookmarkable attribute teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"","code":"modules_bookmarkable(modules)"},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"modules (teal_modules teal_module) object","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_bookmarkable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"named list structure modules TRUE FALSE values indicating whether module bookmarkable.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":null,"dir":"Reference","previous_headings":"","what":"Get module depth — modules_depth","title":"Get module depth — modules_depth","text":"Depth starts 0, single teal.module depth 0. Nesting increases overall depth 1.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get module depth — modules_depth","text":"","code":"modules_depth(modules, depth = 0L)"},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get module depth — modules_depth","text":"modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth optional integer determining current depth level","code":""},{"path":"https://insightsengineering.github.io/teal/reference/modules_depth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get module depth — modules_depth","text":"Depth level given module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":null,"dir":"Reference","previous_headings":"","what":"Template function for TealReportCard creation and customization — report_card_template","title":"Template function for TealReportCard creation and customization — report_card_template","text":"function generates report card title, optional description, option append filter state list.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Template function for TealReportCard creation and customization — report_card_template","text":"","code":"report_card_template( title, label, description = NULL, with_filter, filter_panel_api )"},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Template function for TealReportCard creation and customization — report_card_template","text":"title (character(1)) title card (unless overwritten label) label (character(1)) label provided user adding card description (character(1)) optional, additional description with_filter (logical(1)) flag indicating add filter state filter_panel_api (FilterPanelAPI) object API allows generation filter state report","code":""},{"path":"https://insightsengineering.github.io/teal/reference/report_card_template.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Template function for TealReportCard creation and customization — report_card_template","text":"(TealReportCard) populated title, description filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a teal module for previewing a report — reporter_previewer_module","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"function wraps teal.reporter::reporter_previewer_ui() teal.reporter::reporter_previewer_srv() teal_module used teal applications. creating teal application using init() module added application automatically teal_modules support report generation.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"","code":"reporter_previewer_module(label = \"Report previewer\", server_args = list())"},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server_args (named list) Arguments passed teal.reporter::reporter_previewer_srv().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/reporter_previewer_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"teal_module (extended teal_module_previewer class) containing teal.reporter previewer functionality.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":null,"dir":"Reference","previous_headings":"","what":"Restore value from bookmark. — restoreValue","title":"Restore value from bookmark. — restoreValue","text":"Get value bookmark return default.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Restore value from bookmark. — restoreValue","text":"","code":"restoreValue(value, default)"},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Restore value from bookmark. — restoreValue","text":"value (character(1)) name value restore default fallback value","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Restore value from bookmark. — restoreValue","text":"application restored server-side bookmark, variable specified value values environment. Otherwise default.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/restoreValue.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Restore value from bookmark. — restoreValue","text":"Bookmarks can store inputs also arbitrary values. values stored onBookmark callbacks restored onBookmarked callbacks, placed values environment session$restoreContext field. Using teal_data_module makes impossible run callbacks app becomes ready modules execute callbacks registered. cases stored values can still recovered session object directly. Note variable names values environment prefixed module name space names, therefore, using function modules, value must run name space function.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Run JS file from /inst/js/ package directory — run_js_files","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"triggered server execute client rather triggered directly client. Unlike include_js_files includes JavaScript functions, run_js actually executes JavaScript functions.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"","code":"run_js_files(files)"},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"files (character) vector filenames.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/run_js_files.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":null,"dir":"Reference","previous_headings":"","what":"Show R code modal — show_rcode_modal","title":"Show R code modal — show_rcode_modal","text":"Use shiny::showModal() function show R code inside.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Show R code modal — show_rcode_modal","text":"","code":"show_rcode_modal(title = NULL, rcode, session = getDefaultReactiveDomain())"},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Show R code modal — show_rcode_modal","text":"title (character(1)) Title modal, displayed first comment R code. rcode (character) vector R code show inside modal. session (ShinySession) optional shiny session object, defaults shiny::getDefaultReactiveDomain().","code":""},{"path":"https://insightsengineering.github.io/teal/reference/show_rcode_modal.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Show R code modal — show_rcode_modal","text":"shiny::showModal()","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":null,"dir":"Reference","previous_headings":"","what":"Store and restore teal_slices object — slices_store","title":"Store and restore teal_slices object — slices_store","text":"Functions write teal_slices object file JSON format, also restore object disk.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Store and restore teal_slices object — slices_store","text":"","code":"slices_store(tss, file) slices_restore(file)"},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Store and restore teal_slices object — slices_store","text":"tss (teal_slices) object stored. file (character(1)) file path teal_slices object saved restored. file extension \".json\".","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Store and restore teal_slices object — slices_store","text":"slices_store returns NULL, invisibly. slices_restore returns teal_slices object restored file.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/slices_store.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Store and restore teal_slices object — slices_store","text":"Date date time objects stored following formats: Date class converted \"ISO8601\" standard (YYYY-MM-DD). POSIX*t classes converted character using format.POSIX*t(usetz = TRUE, tz = \"UTC\") (YYYY-MM-DD HH:MM:SS UTC, UTC Coordinated Universal Time timezone short-code). format assumed slices_restore. POSIX*t objects selected choices fields teal_slice objects always printed UTC timezone well.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a tdata object — tdata","title":"Create a tdata object — tdata","text":"Recent changes teal cause modules fail modules expect tdata object passed data argument instead receive teal_data object, additionally wrapped reactive expression server functions. order easily adapt modules without proper refactor, use function downgrade data argument.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a tdata object — tdata","text":"","code":"new_tdata(...) tdata2env(...) get_code_tdata(...) # S3 method for class 'tdata' join_keys(...) get_metadata(...) as_tdata(...)"},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a tdata object — tdata","text":"... ignored","code":""},{"path":"https://insightsengineering.github.io/teal/reference/tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a tdata object — tdata","text":"nothing","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal-package.html","id":null,"dir":"Reference","previous_headings":"","what":"teal: Interactive exploration of clinical trials data — teal-package","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"teal package provides shiny based framework creating interactive data analysis environment.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"learn mode package, visit project website read init() manual page.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/teal-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"Maintainer: Dawid Kaledkowski dawid.kaledkowski@roche.com (ORCID) Authors: Pawel Rucki pawel.rucki@roche.com Aleksander Chlebowski aleksander.chlebowski@contractors.roche.com (ORCID) Andre Verissimo andre.verissimo@roche.com (ORCID) Kartikeya Kirar kartikeya.kirar@businesspartner.roche.com Vedha Viyash vedha.viyash@roche.com Marcin Kosinski marcin.kosinski.mk1@roche.com Adrian Waddell adrian.waddell@gene.com Nikolas Burkoff Mahmoud Hallal Maciej Nasinski Konrad Pagacz Junlue Zhao Tadeusz Lewandowski contributors: Chendi Liao chendi.liao@roche.com [reviewer] Dony Unardi unardid@gene.com [reviewer] F. Hoffmann-La Roche AG [copyright holder, funder] Maximilian Mordig [contributor]","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal applications — teal_data_module","title":"Data module for teal applications — teal_data_module","text":"Create teal_data_module object evaluate code history tracking.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal applications — teal_data_module","text":"","code":"teal_data_module(ui, server, label = \"data module\", once = TRUE) # S4 method for class 'teal_data_module,character' eval_code(object, code) # S3 method for class 'teal_data_module' within(data, expr, ...)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal applications — teal_data_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id)) shiny module server function; must take id argument; must return reactive expression containing teal_data object label (character(1)) Label module. (logical(1)) TRUE, data module shown disappear successful data loading. App user longer able interact module anymore. FALSE, data module can reused multiple times. App user able interact change data output module multiple times. object (teal_data_module) code (character language) code evaluate. character, comments retained. data (teal_data_module) object expr (expression) evaluate. Must inline code. See ... See Details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data module for teal applications — teal_data_module","text":"teal_data_module returns list class teal_data_module containing two elements, ui server provided via arguments. eval_code returns teal_data_module object delayed evaluation code module run. within returns teal_data_module object delayed evaluation expr module run.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal applications — teal_data_module","text":"teal_data_module creates shiny module interactively supply modify data teal application. module allows running code (creation modification) app starts reloads. body server function run app rather global environment. means run every time app starts, use sparingly. Pass module instead teal_data object call init(). Note server function must always return teal_data object wrapped reactive expression. See vignette vignette(\"data--shiny-module\", package = \"teal\") details. eval_code evaluates given code environment teal_data object created teal_data_module. code added @code slot teal_data. within convenience function evaluating inline code inside environment teal_data_module. accepts inline expressions (simple compound) allows injecting values expr ... argument: name:value pairs passed ..., name expr replaced value.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal applications — teal_data_module","text":"","code":"tdm <- teal_data_module( ui = function(id) { ns <- NS(id) actionButton(ns(\"submit\"), label = \"Load data\") }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) eval_code(tdm, \"dataset1 <- subset(dataset1, Species == 'virginica')\") #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE within(tdm, dataset1 <- subset(dataset1, Species == \"virginica\")) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE # use additional parameter for expression value substitution. valid_species <- \"versicolor\" within(tdm, dataset1 <- subset(dataset1, Species %in% species), species = valid_species) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a FilteredData — teal_data_to_filtered_data","title":"Create a FilteredData — teal_data_to_filtered_data","text":"Create FilteredData object teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a FilteredData — teal_data_to_filtered_data","text":"","code":"teal_data_to_filtered_data(x, datanames = names(x))"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a FilteredData — teal_data_to_filtered_data","text":"x (teal_data) object datanames (character) vector data set names include; must subset names(x)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_to_filtered_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a FilteredData — teal_data_to_filtered_data","text":"FilteredData object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":null,"dir":"Reference","previous_headings":"","what":"teal_data utils — teal_data_utilities","title":"teal_data utils — teal_data_utilities","text":"teal need recreate teal_data object due two operations: need append filter-data code objects evaluated FilteredData want avoid double-evaluation. need subset teal_data datanames used module, shorten obtainable R-code","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal_data utils — teal_data_utilities","text":"","code":".append_evaluated_code(data, code) .append_modified_data(data, objects) .subset_teal_data(data, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal_data utils — teal_data_utilities","text":"data (teal_data) code (character) code append object's code slot. objects (list) objects append object's environment. datanames (character) names datasets","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal_data utils — teal_data_utilities","text":"modified teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_data_utilities.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal_data utils — teal_data_utilities","text":"Due recreation teal_data object done simply using public teal.code teal.data methods.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":null,"dir":"Reference","previous_headings":"","what":"Create teal_module and teal_modules objects — teal_modules","title":"Create teal_module and teal_modules objects — teal_modules","text":"Create nested tab structure embed modules teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"module( label = \"module\", server = function(id, data, ...) moduleServer(id, function(input, output, session) NULL), ui = function(id, ...) tags$p(paste0(\"This module has no UI (id: \", id, \" )\")), filters, datanames = \"all\", server_args = NULL, ui_args = NULL, transformers = list() ) modules(..., label = \"root\") # S3 method for class 'teal_module' format( x, indent = 0, is_last = FALSE, parent_prefix = \"\", what = c(\"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\"), ... ) # S3 method for class 'teal_modules' format(x, indent = 0, is_root = TRUE, is_last = FALSE, parent_prefix = \"\", ...) # S3 method for class 'teal_module' print(x, ...) # S3 method for class 'teal_modules' print(x, ...) set_datanames(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create teal_module and teal_modules objects — teal_modules","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server (function) shiny module following arguments: id - teal set proper shiny namespace module (see shiny::moduleServer()). input, output, session - (optional; recommended) provided, shiny::callModule() used call module. shiny 1.5.0, recommended way use shiny::moduleServer() instead require arguments. data (optional) provided, module called teal_data object (.e. list reactive (filtered) data specified filters argument) value argument. datasets (optional) provided, module called FilteredData object value argument. (See teal.slice::FilteredData). reporter (optional) provided, module called Reporter object value argument. (See teal.reporter::Reporter). filter_panel_api (optional) provided, module called FilterPanelAPI object value argument. (See teal.slice::FilterPanelAPI). ... (optional) provided, server_args elements passed module named argument .... ui (function) shiny UI module function following arguments: id - teal set proper shiny namespace module. ... (optional) provided, ui_args elements passed module named argument .... filters (character) Deprecated. Use datanames instead. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. server_args (named list) additional arguments passed server function. ui_args (named list) additional arguments passed UI function. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). ... modules(): (teal_module teal_modules) Objects wrap tab. format() print(): Arguments passed methods. x (teal_module teal_modules) Object format/print. indent (integer(1)) Indention level; nested element indented one level . is_last (logical(1)) Whether last item parent's children list. Affects tree branch character used (L- vs |-) parent_prefix (character(1)) prefix inherited parent nodes, used maintain tree structure nested levels (character) Specifies metadata display. Possible values: \"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\" is_root (logical(1)) Whether root node tree. used format.teal_modules(). Determines whether show \"TEAL ROOT\" header modules (teal_module teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() returns object class teal_module. modules() returns teal_modules object contains following fields: label: taken label argument. children: list containing objects passed .... List elements named label attribute converted valid shiny id.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() creates instance teal_module can placed teal application. modules() shapes structure application organizing teal_module within navigation panel. wraps teal_module teal_modules objects teal_modules object, results nested structure corresponding nested tabs final application. Note modules() label comes ..., must passed named argument, otherwise captured .... labels \"global_filters\" \"Report previewer\" reserved used mapping argument teal_slices() report previewer module reporter_previewer_module(), respectively.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"restricting-datasets-used-by-teal-module-","dir":"Reference","previous_headings":"","what":"Restricting datasets used by teal_module:","title":"Create teal_module and teal_modules objects — teal_modules","text":"datanames argument controls datasets used module’s server. datasets, passed via server's data argument, ones shown module's tab. datanames set \"\", datasets data object treated relevant. However, may include unnecessary datasets, : Proxy variables column modifications Temporary datasets used create final versions Connection objects exclude irrelevant datasets, use set_datanames() function change datanames \"\" specific names. Trying modify non-\"\" values set_datanames() result warning. Datasets names starting . ignored globally unless explicitly listed datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"datanames-with-transformers","dir":"Reference","previous_headings":"","what":"datanames with transformers","title":"Create teal_module and teal_modules objects — teal_modules","text":"transformers specified, datanames added module’s datanames, changes behavior follows: module(datanames) NULL transformers defined datanames, sidebar appear showing transformers' datasets, instead hidden. module(datanames) set specific values transformer datanames = \"\", module may receive extra datasets unnecessary","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_modules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"library(shiny) module_1 <- module( label = \"a module\", server = function(id, data) { moduleServer( id, module = function(input, output, session) { output$data <- renderDataTable(data()[[\"iris\"]]) } ) }, ui = function(id) { ns <- NS(id) tagList(dataTableOutput(ns(\"data\"))) }, datanames = \"all\" ) module_2 <- module( label = \"another module\", server = function(id) { moduleServer( id, module = function(input, output, session) { output$text <- renderText(\"Another Module\") } ) }, ui = function(id) { ns <- NS(id) tagList(textOutput(ns(\"text\"))) }, datanames = NULL ) modules <- modules( label = \"modules\", modules( label = \"nested modules\", module_1 ), module_2 ) app <- init( data = teal_data(iris = iris), modules = modules ) if (interactive()) { shinyApp(app$ui, app$server) } mod <- module( label = \"My Custom Module\", server = function(id, data, ...) {}, ui = function(id, ...) {}, datanames = c(\"ADSL\", \"ADTTE\"), transformers = list(), ui_args = list(a = 1, b = \"b\"), server_args = list(x = 5, y = list(p = 1)) ) cat(format(mod)) #> |- My Custom Module #> | |- Datasets : ADSL, ADTTE #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : a (numeric) #> | | b (character) #> | |- Server Arguments : x (numeric) #> | | y (list) #> | L- Transformers : custom_module <- function( label = \"label\", ui_args = NULL, server_args = NULL, datanames = \"all\", transformers = list(), bk = FALSE) { ans <- module( label, server = function(id, data, ...) {}, ui = function(id, ...) { }, datanames = datanames, transformers = transformers, ui_args = ui_args, server_args = server_args ) attr(ans, \"teal_bookmarkable\") <- bk ans } dummy_transformer <- teal_transform_module( label = \"Dummy Transform\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) plot_transformer <- teal_transform_module( label = \"Plot Settings\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) complete_modules <- modules( custom_module( label = \"Data Overview\", datanames = c(\"ADSL\", \"ADAE\", \"ADVS\"), ui_args = list( view_type = \"table\", page_size = 10, filters = c(\"ARM\", \"SEX\", \"RACE\") ), server_args = list( cache = TRUE, debounce = 1000 ), transformers = list(dummy_transformer), bk = TRUE ), modules( label = \"Nested 1\", custom_module( label = \"Interactive Plots\", datanames = c(\"ADSL\", \"ADVS\"), ui_args = list( plot_type = c(\"scatter\", \"box\", \"line\"), height = 600, width = 800, color_scheme = \"viridis\" ), server_args = list( render_type = \"svg\", cache_plots = TRUE ), transformers = list(dummy_transformer, plot_transformer), bk = TRUE ), modules( label = \"Nested 2\", custom_module( label = \"Summary Statistics\", datanames = \"ADSL\", ui_args = list( stats = c(\"mean\", \"median\", \"sd\", \"range\"), grouping = c(\"ARM\", \"SEX\") ) ), modules( label = \"Labeled nested modules\", custom_module( label = \"Subgroup Analysis\", datanames = c(\"ADSL\", \"ADAE\"), ui_args = list( subgroups = c(\"AGE\", \"SEX\", \"RACE\"), analysis_type = \"stratified\" ), bk = TRUE ) ), modules(custom_module(label = \"Subgroup Analysis in non-labled modules\")) ) ), custom_module(\"Non-nested module\") ) cat(format(complete_modules)) #> TEAL ROOT #> |- Data Overview #> | |- Datasets : ADSL, ADAE, ADVS #> | |- Properties: #> | | |- Bookmarkable : TRUE #> | | L- Reportable : FALSE #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- Datasets : ADSL, ADVS #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- Datasets : ADSL #> | | |- Properties: #> | | | |- Bookmarkable : FALSE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- Datasets : ADSL, ADAE #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- Datasets : all #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- Datasets : all #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : cat(format(complete_modules, what = c(\"ui_args\", \"server_args\", \"transformers\"))) #> TEAL ROOT #> |- Data Overview #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : # change the module's datanames set_datanames(module(datanames = \"all\"), \"a\") #> |- module #> | |- Datasets : a #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : # change modules' datanames set_datanames( modules( module(datanames = \"all\"), module(datanames = \"a\") ), \"b\" ) #> Warning: Not possible to modify datanames of the module module. set_datanames() can only change datanames if it was set to \"all\". #> TEAL ROOT #> |- module #> | |- Datasets : b #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- module #> |- Datasets : a #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers :"},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter settings for teal applications — teal_slices","title":"Filter settings for teal applications — teal_slices","text":"Specify initial filter states filtering settings teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter settings for teal applications — teal_slices","text":"","code":"teal_slices( ..., exclude_varnames = NULL, include_varnames = NULL, count_type = NULL, allow_add = TRUE, module_specific = FALSE, mapping, app_id = NULL ) as.teal_slices(x) # S3 method for class 'teal_slices' c(...)"},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter settings for teal applications — teal_slices","text":"... number teal_slice objects. include_varnames, exclude_varnames (named lists character) list names match names data sets vector elements match variable names respective data sets; specify variables allowed filtered; see Details. count_type new feature. kindly share opinions teal.slice's GitHub repository. (character(1)) string specifying observations tallied filter states. Possible options: \"none\" (default) counts single FilterState show unfiltered number . \"\" counts single FilterState show number observation filtered unfiltered dataset. Note, issues reported using option MultiAssayExperiment. Please make sure adding new filters fail target platform deploying production. allow_add (logical(1)) logical flag specifying whether user able add new filters module_specific (logical(1)) optional, FALSE (default) one filter panel applied modules. filters shared modules. TRUE filter panel module-specific. Modules can different set filters specified - see mapping argument. mapping new feature. kindly share opinions teal's GitHub repository. (named list) specifies filters active modules app start. Elements contain character vector teal_slice ids (see teal.slice::teal_slice). Names list correspond teal_module label set module() function. ids listed \"global_filters active modules. missing, filters applied modules. empty list, filters available modules start inactive. module_specific FALSE, global_filters active start. app_id (character(1)) internal use , set manually. Added init teal_slices can matched app used. Used verifying snapshots uploaded file. See snapshot. x (list) lists convert teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter settings for teal applications — teal_slices","text":"teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter settings for teal applications — teal_slices","text":"Produces teal_slices object. teal_slice components specify filter states active app starts. Attributes (created named arguments) configure way app applies filters. See argument descriptions details.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/teal_slices.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Filter settings for teal applications — teal_slices","text":"","code":"filter <- teal_slices( teal_slice(dataname = \"iris\", varname = \"Species\", id = \"species\"), teal_slice(dataname = \"iris\", varname = \"Sepal.Length\", id = \"sepal_length\"), teal_slice( dataname = \"iris\", id = \"long_petals\", title = \"Long petals\", expr = \"Petal.Length > 5\" ), teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"mtcars_mpg\"), mapping = list( module1 = c(\"species\", \"sepal_length\"), module2 = c(\"mtcars_mpg\"), global_filters = \"long_petals\" ) ) app <- init( data = teal_data(iris = iris, mtcars = mtcars), modules = list( module(\"module1\"), module(\"module2\") ), filter = filter ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal transformers. — teal_transform_module","title":"Data module for teal transformers. — teal_transform_module","text":"Create teal_data_module object custom transformation data pre-processing passing data module.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"teal_transform_module( ui = function(id) NULL, server = function(id, data) data, label = \"transform module\", datanames = character(0) )"},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal transformers. — teal_transform_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id, data)) shiny module server function; takes id data argument, id module id data reactive teal_data input. server function must return reactive expression containing teal_data object. server function definition use eventReactive may lead unexpected behavior. See vignettes(\"data-transform--shiny-module\") information. label (character(1)) Label module. datanames (character) Names datasets relevant module evaluate. set character(0) module receive modules() datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal transformers. — teal_transform_module","text":"teal_transform_module creates teal_data_module object transform data teal application. transformation happens data passed filtering activity teal. transformed data sent server teal_module(). See vignette vignette(\"data-transform--shiny-module\", package = \"teal\") details.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/teal_transform_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", datanames = \"iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Subset n rows\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) )"},{"path":"https://insightsengineering.github.io/teal/reference/validate_app_title_tag.html","id":null,"dir":"Reference","previous_headings":"","what":"Function for validating the title parameter of teal::init — validate_app_title_tag","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"Checks input title teal::init create valid title favicon tag.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_app_title_tag.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"","code":"validate_app_title_tag(shiny_tag)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_app_title_tag.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"shiny_tag (shiny.tag) Object validate valid title.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"validate_has_data( x, min_nrow = NULL, complete = FALSE, allow_inf = TRUE, msg = NULL )"},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"x (data.frame) min_nrow (numeric(1)) Minimum allowed number rows x. complete (logical(1)) Flag specifying whether check complete cases. Defaults FALSE. allow_inf (logical(1)) Flag specifying whether allow infinite values. Defaults TRUE. msg (character(1)) Additional message display alongside default message.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_data.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"library(teal) ui <- fluidPage( sliderInput(\"len\", \"Max Length of Sepal\", min = 4.3, max = 7.9, value = 5 ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_df <- iris[iris$Sepal.Length <= input$len, ] validate_has_data( iris_df, min_nrow = 10, complete = FALSE, msg = \"Please adjust Max Length of Sepal\" ) hist(iris_df$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"validate_has_elements(x, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"x vector msg message display","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_elements.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\"), each = 15) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"arm_summary\") ) server <- function(input, output) { output$arm_summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_has_elements(sample_1, \"No subjects in strata1.\") validate_has_elements(sample_2, \"No subjects in strata2.\") paste0( \"Number of samples in: strata1=\", length(sample_1), \" comparions strata2=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"validate_has_variable(data, varname, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that dataset contains specific variable — validate_has_variable","text":"data (data.frame) varname (character(1)) name variable check data msg (character(1)) message display data include varname","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that dataset contains specific variable — validate_has_variable","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_has_variable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20) ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_has_variable(data, input$var) paste0(\"Selected treatment variables: \", paste(input$var, collapse = \", \")) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector includes all expected values — validate_in","text":"","code":"validate_in(x, choices, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector includes all expected values — validate_in","text":"x Vector values test. choices Vector test . msg (character(1)) Error message display elements x elements choices.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector includes all expected values — validate_in","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_in.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector includes all expected values — validate_in","text":"","code":"ui <- fluidPage( selectInput( \"species\", \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\", \"unknown species\"), selected = \"setosa\", multiple = FALSE ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderPrint({ validate_in(input$species, iris$Species, \"Species does not exist.\") nrow(iris[iris$Species == input$species, ]) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":null,"dir":"Reference","previous_headings":"","what":"Send input validation messages to output — validate_inputs","title":"Send input validation messages to output — validate_inputs","text":"Captures messages InputValidator objects collates one message passed validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Send input validation messages to output — validate_inputs","text":"","code":"validate_inputs(..., header = \"Some inputs require attention\")"},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Send input validation messages to output — validate_inputs","text":"... either number InputValidator objects optionally named, possibly nested list InputValidator objects, see Details header (character(1)) generic validation message; set NULL omit","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Send input validation messages to output — validate_inputs","text":"Returns NULL final validation call passes shiny.silent.error fails.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Send input validation messages to output — validate_inputs","text":"shiny::validate used withhold rendering output element certain conditions met print validation message place output element. shinyvalidate::InputValidator allows validate input elements display specific messages respective input widgets. validate_inputs provides hybrid solution. Given InputValidator object, messages corresponding inputs fail validation extracted placed one validation message passed validate/need call. way input validator messages repeated output. ... argument accepts number InputValidator objects nested list objects. validators passed directly, messages printed together one (optional) header message specified header. list passed, messages grouped validator. list's names used headers respective message groups. neither nested list elements named, header message taken header.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_inputs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Send input validation messages to output — validate_inputs","text":"","code":"library(shiny) library(shinyvalidate) ui <- fluidPage( selectInput(\"method\", \"validation method\", c(\"sequential\", \"combined\", \"grouped\")), sidebarLayout( sidebarPanel( selectInput(\"letter\", \"select a letter:\", c(letters[1:3], LETTERS[4:6])), selectInput(\"number\", \"select a number:\", 1:6), tags$br(), selectInput(\"color\", \"select a color:\", c(\"black\", \"indianred2\", \"springgreen2\", \"cornflowerblue\"), multiple = TRUE ), sliderInput(\"size\", \"select point size:\", min = 0.1, max = 4, value = 0.25 ) ), mainPanel(plotOutput(\"plot\")) ) ) server <- function(input, output) { # set up input validation iv <- InputValidator$new() iv$add_rule(\"letter\", sv_in_set(LETTERS, \"choose a capital letter\")) iv$add_rule(\"number\", function(x) { if (as.integer(x) %% 2L == 1L) \"choose an even number\" }) iv$enable() # more input validation iv_par <- InputValidator$new() iv_par$add_rule(\"color\", sv_required(message = \"choose a color\")) iv_par$add_rule(\"color\", function(x) { if (length(x) > 1L) \"choose only one color\" }) iv_par$add_rule( \"size\", sv_between( left = 0.5, right = 3, message_fmt = \"choose a value between {left} and {right}\" ) ) iv_par$enable() output$plot <- renderPlot({ # validate output switch(input[[\"method\"]], \"sequential\" = { validate_inputs(iv) validate_inputs(iv_par, header = \"Set proper graphical parameters\") }, \"combined\" = validate_inputs(iv, iv_par), \"grouped\" = validate_inputs(list( \"Some inputs require attention\" = iv, \"Set proper graphical parameters\" = iv_par )) ) plot(faithful$eruptions ~ faithful$waiting, las = 1, pch = 16, col = input[[\"color\"]], cex = input[[\"size\"]] ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"validate_n_levels(x, min_levels = 1, max_levels = 12, var_name)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that variables has expected number of levels — validate_n_levels","text":"x variable name. x factor, unique values treated levels. min_levels cutoff minimum number levels x max_levels cutoff maximum number levels x var_name name variable validated use validation message","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that variables has expected number of levels — validate_n_levels","text":"number levels x less min_levels greater max_levels validation fail. function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_n_levels.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20), three = rep(c(\"a\", \"b\", \"c\"), length.out = 20), four = rep(c(\"a\", \"b\", \"c\", \"d\"), length.out = 20), stringsAsFactors = TRUE ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_n_levels(data[[input$var]], min_levels = 2, max_levels = 15, var_name = input$var) paste0( \"Levels of selected treatment variable: \", paste(levels(data[[input$var]]), collapse = \", \" ) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"validate_no_intersection(x, y, msg)"},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates no intersection between two vectors — validate_no_intersection","text":"x vector y vector msg (character(1)) message display x y intersect","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates no intersection between two vectors — validate_no_intersection","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_no_intersection.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\", \"C\"), each = 10) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_no_intersection( sample_1, sample_2, \"subjects within strata1 and strata2 cannot overlap\" ) paste0( \"Number of subject in: reference treatment=\", length(sample_1), \" comparions treatment=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"validate_one_row_per_id(x, key = c(\"USUBJID\", \"STUDYID\"))"},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"x (data.frame) key (character) Vector ID variables x identify unique records.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/reference/validate_one_row_per_id.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"iris$id <- rep(1:50, times = 3) ui <- fluidPage( selectInput( inputId = \"species\", label = \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\"), selected = \"setosa\", multiple = TRUE ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_f <- iris[iris$Species %in% input$species, ] validate_one_row_per_id(iris_f, key = c(\"id\")) hist(iris_f$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-15-2-9082","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.2.9082","text":"Possible call ui_teal srv_teal directly application delivering data argument reactive returning teal_data object. #669 Introduced teal_transform_module provide way interactively modify data delivered teal_module’s server. #1228 Introduced new argument = FALSE teal_data_module possibly reload data run time. Possibility download lockfile restore app session reproducibility. #479 Introduced function set_datanames() change datanames teal_module. Datasets name starts . ignored module’s datanames set \"\".","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-15-2-9082","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.2.9082","text":"Setting datanames() data passed teal application longer effect. order change teal_module’s datanames one modify module$datanames. landing_popup_module() needs passed landing_popup argument init instead passed module modules argument init. teal longer re-export %>%. Please load library(magrittr) instead use |> base.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancement-0-15-2-9082","dir":"Changelog","previous_headings":"","what":"Enhancement","title":"teal 0.15.2.9082","text":"Enhanced system data validation display error messages. Easier way call javascript events setting $(document).ready(function() { ... }). #1114 Provided progress bar modules loading data filtering teal app startup. Filter mapping display separate icon tab. Environment data passed teal_module’s server consists unfiltered datasets contained .raw_data.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0152","dir":"Changelog","previous_headings":"","what":"teal 0.15.2","title":"teal 0.15.2","text":"CRAN release: 2024-03-07","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-15-2","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.2","text":"Fixed bug handling datanames modules crashed module-specific applications filtering child datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0151","dir":"Changelog","previous_headings":"","what":"teal 0.15.1","title":"teal 0.15.1","text":"CRAN release: 2024-02-22","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-15-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.1","text":"Fixed bug stopped module_specific feature teal module specified datanames length 1.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-15-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.1","text":"Updated links vignettes","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0150","dir":"Changelog","previous_headings":"","what":"teal 0.15.0","title":"teal 0.15.0","text":"CRAN release: 2024-02-08","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-15-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.0","text":"Added landing_popup_module function creates module display popup app starts. popup block access app dismissed. Filter state snapshots can now uploaded file. See ?snapshot. Added as_tdata function facilitate migration modules new teal_data class. Added build_app_title function facilitate adding favicons app title.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-15-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.0","text":"data argument init now accepts teal_data teal_data_module. tdata deprecated replaced teal_data. Support tdata passed data argument module(server) removed next release. module(ui) argument longer accepts data datasets arguments. data dependent logic set server function. module(server) argument deprecated datasets argument. teal_modules’ server functions accept data (teal_data) instead. Changed order formal arguments init. filter now comes directly modules, title.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-15-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.0","text":"Enhanced module validation checks won’t throw messages data argument unnecessarily. Added argument teal_slices made modifications init enable tagging teal_slices app id safely upload snapshots disk. FilteredData longer stores pre-processing code specific slots. Code now attached attribute. Adjusted appropriately.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-15-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.0","text":"Removed Report previewer module mapping matrix display filter manager. Specified minimal version package dependencies.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-14-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.14.0","text":"Enabled module specific filter panel. See module_specific teal::teal_slices documentation. Enabled capturing resetting application filter state snapshots. See ?snapshot. Enabled reporter_previewer_module customize default values srv_args. Enabled passing reporter_previewer_module list modules override default one.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-14-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.14.0","text":"Specifying filter argument teal::init requires teal_slices object now. Details documentation teal::init. Soft deprecated filters argument module replaced datanames. Details documentation teal::module","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-14-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.14.0","text":"Removed scda package dependency examples. Updated header tag style enhance element containment.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-13-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.13.0","text":"use datasets argument modules deprecated removed future release. Please use data argument instead. data type tdata; see “Creating custom modules” vignettes function documentation teal::new_tdata details. Due deprecation chunks teal.code, teal framework now uses replacement (qenv) instead. documentation teal updated reflect custom modules written chunks updated use qenv. Due deprecation chunks teal.code, get_rcode, get_rcode_srv, get_rcode_ui removed.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-13-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.13.0","text":"Added validate_inputs function transfers input validation messages app output. modules argument init accepts teal_module type object. need wrap single module modules() list(). Updated module_nested_tabs active modules calculated teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-13-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.13.0","text":"Updated examples use scda.2022. Added R session information link footer teal applications. Added data hashing step using rlang instead digest package calculate hash (moved teal.data teal.slice). now explicit hashing check reproducible code output. Removed deprecated functions: root_modules, default_filter, bookmarkableShinyApp, well deprecated logging mechanism, including functions log_app_usage .log. Updated “Teal Bootstrap Themes” vignette provide details customizing teal app bslib::run_with_themer. Removed outdated diagram srv_nested_tabs documentation. Changed default values header footer arguments init empty text.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-12-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.12.0","text":"Added support custom bslib bootstrap themes teal::init apps, please read new teal-bs-themes vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-12-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.12.0","text":"Added option choose variables can filtered filter panel using filterable attributes per-dataset lists filter argument init. Updated teal_module data argument receives list reactive filter data \"code\" \"join_keys\" attributes. Updated teal_module filter_panel_api argument receives FilterPanelAPI object. Updated internals module_teal reflect changes teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-12-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.12.0","text":"Updated teal_module longer receive datasets object ... argument. order use datasets teal_module please specify datasets explicitly. Deprecated merge_expression argument get_rcode_srv function removed get_rcode function. Deprecated session argument get_rcode function.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-12-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.12.0","text":"Enhanced burger button disabled filter panel used.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-11-1","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.11.1","text":"Added new function reporter_previewer_module wrap teal.reporter package previewer functionality teal module. Updated teal support modules include reporting. module supports reporting included reporter_previewer_module included. Added default arguments module() server argument now function second argument can ... datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-11-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.1","text":"Deprecated bookmarkableShinyApp. future releases teal framework stop supporting shiny bookmarking (officially supported); may officially supported future. Note filter panel teal.slice retains ability save restore state used standalone shiny app bookmarking.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-11-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.1","text":"Added template pkgdown configuration. Removed unneeded shinytest app tests. Updated package authors. Added package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-0110","dir":"Changelog","previous_headings":"","what":"teal 0.11.0","title":"teal 0.11.0","text":"teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.transform: standardizes extracting merging data. teal.logger: standardizes logging within teal framework. teal package contains code create apps (teal::init), create module (teal::module) group modules app (teal::modules). teal depends teal.transform teal.data contain functions teal app creators likely need. package teal imports therefore teal module creators either fully specify functions packages required import custom packages library(teal) load .","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-11-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.11.0","text":"simple new teal module named example_module included package.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-11-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.0","text":"teal package split multiple smaller packages, see . Deprecated root_modules function, users use modules directly inside init. Due deprecation root_modules label argument modules must explicitly named. example modules(\"lab\", mod1, mod2) replaced modules(label = \"lab\", mod1, mod2).","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-11-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.0","text":"Minor changes internals teal: main module panel now fixed shiny name root active tab named active_tab Active_tab. MultiAssayExperiment now suggested packages, required. Objects dependent MultiAssayExperiment changed lazy-load now suggested package.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-11-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.11.0","text":"Showing R Code longer shows reproducibility warning message reproducibility check passed.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"breaking-changes-0-10-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.10.1","text":"Changed HTML identifiers teal modules - now nested module receives shiny namespace. Deprecated functions related connectors moved separate packages. Removed raw_dataset, raw_dataset_connector, named_dataset, named_dataset_file, named_dataset_connector, relational_dataset, relational_dataset_file, relational_dataset_connector, key, as_cdisc, as_cdisc_relational. Removed rcd_connection rcd_data; scda_dataset_connectors can passed cdisc_data teal_data directly. Replaced rcd_dataset_connector rcd_cdisc_dataset_connector scda_dataset_connector scda_cdisc_dataset_connector respectively. Renamed teal_show_js_log option teal.show_js_log match options naming convention. Removed %is_in% stop_shiny internal utility functions.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"logging-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Logging","title":"teal 0.10.1","text":"Added support logging using logger package. Added new function register_logger, registers logger given namespace. Added trace info levels log messages teal framework. Added pid shiny session token footnote app developers can identify logs apps.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"other-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Other","title":"teal 0.10.1","text":"Added print methods DatasetConnector, RelationalData, RelationalDataconnector JoinKeys classes added input validation implementation print method already Dataset object. Added public facing constructor functions CDISCDataConnector, RelationalDataConnector, DataConnection classes. Modified data_extract_spec allow filter select parameters NULL, results data_extract_ui acting filter_spec variables possible choices supplied filter argument select_spec multiple parameter set TRUE supplied select argument. Added support full screen module filters argument equal NULL. Added support shiny::moduleServer passed server parameter teal::module. Added teal.threshold_slider_vs_checkboxgroup R option: categorical variable number unique values, filter panel uses drop-select input instead checkbox group. Extended FilteredData API allow managing filter states programmatically UI teal application. Hid buttons remove filters datasets dataset active filters. Updated init accept RelationalData, data.frame, MultiAssayExperiment, Dataset, DatasetConnector, list function returning named list data input.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-10-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.1","text":"choices_selected now correctly removes duplicates array passed choices parameter. Fixed call returned FilterState case using MultiAssayExperiment::subsetByColData. Now single condition variable containing NA values !.na(var) & var == . Fixed data loading DatasetConnector dependent Dataset DatasetConnector objects. Fixed restoring bookmarked filter state teal application. Refactored module_nested_tabs fix issue filter panel reacting input change nested module. updateOptionalSelectInput longer sets input NULL logical value passed selected. Fixed setting JoinKeys key name two Dataset object differs. Fixed printing JavaScript console logs R console teal.show_js_log = TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-10-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.1","text":"Soft-deprecate mae_dataset() favor general dataset() constructor. Added vignette describing modifications teal applications users can apply using R options. Added default values label argument select_spec filter_spec. Added validation FilteredDataset::get_data accept logical input . Changed references outdated functions teal.devel documentation. Introduced Teal prefix public R6 classes avoid name collisions packages. Removed dependency utils.nest replaced functionality teal equivalents checkmate package base R. Replaced old shiny server functions DataConnection, RelationalDataConnector, DatasetConnector, RelationalData shiny::moduleServer equivalents. Running teal application via ui_teal_with_splash srv_teal_with_splash now longer recommended doesn’t support new features (e.g. logging, bookmarking). Use init instead. Updated R version requirement >= 4.0. Updated “filter panel collapse” icon remove warnings using shiny version >= 1.7. Removed non-exported, debugging modules. Updated footer tag style less visible.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-10-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.10.0","text":"Allow passing MultiAssayExperiment teal::init using mae_dataset function connectors. Refactored filter panel use MultiAssayExperiment objects. Filters can set subject level (colData MAE object) experiment level (colData rowData assay). Added cdse_dataset_connector create delayed data objects CDSE. Added datasetdb_dataset_connector create delayed data objects DataSetDB. Added ricepass_connection create delayed data objects entimICE via ricepass. Simplified setting initial filter state without need specify “choices” “range” named list element depending variable class. Dataset type determines appearance functionality related filters filters summary. Datasets passed (reference) DDL FilteredData skipping extracting data attributes. Redesigned variable filter labels “Active Filter Variables” panel. Fully testable server functions.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-10-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.0","text":"Fixed bug caused calling mutate_dataset multiple times DatasetConnector Dataset object. Fixed bug caused output get_code function reproduce raw data set. Changed filter_spec allow variable selection upon app initialization, first possible value previously selected.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-10-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.10.0","text":"modules parameter teal::init function can also receive list except root_modules function call. Added split merge methods JoinKeys object. Added all_choices() possible argument selected parameter filter_spec, select_spec choices_selected indicating choices selected. append method CodeClass object modified print warning message argument result code added duplicated. Implemented delayed functionality mutate method Dataset DatasetConnector objects. Modified teal_data return CDISCData object whenever arguments type CDISCData object. Updated filters show levels logical variable TRUE/FALSE even one missing original array.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-10-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.0","text":"Updated LICENCE README new package references. Added method get_hash Dataset class returning MD5 hash object stored inside Dataset object. Replaced random.cdisc.data scda examples tests. Implemented functionality store JoinKeys Dataset DatasetConnector classes. Added error_on_lintr: TRUE .lintr pipe operator %>% now exported downstream code packages can use . Removed hyperlinks rice package documentation.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-5","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.5","text":"Added informational stop message using mutate_data RelationalDataConnector. Modified as_cdisc behave similarly cdisc_dataset called Dataset object. Changed displayed format data name column name data_extract_spec UI elements. now compressed . don’t change runtime app. Added ADSAFTTE list recognized ADaM dataset names. Added another example data_extract_spec’s doc string showcasing app users can choose variable used filtering encoding panel. Added CSS styling tool tips teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-9-5","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.5","text":"Fixed edge case error creating filter variable missing values crashed app. Fixed bug crashes app whenever Date datetime column selected filter_spec.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-4","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.4","text":"Released snowflake connection connectors. Changed ordering datasets intuitive (topologically first CDISC datasets according input datasets order). closing teal app (ending user shiny session), DataConnections now try close connections. Added ADHY keys configuration file. Extended filter_spec function: parameter choices longer mandatory (function take possible choices default) vars parameter additionally accepts choices_selected allows change variables filtering using UI elements encoding panel.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-9-4","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.4","text":"Cleaned imports package. Modified value_choices function handle edge case \"NA\" NA values exist character column choices derived . Fixed issue cloning Callable class.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-9-3","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.3","text":"Support data-standard independent input filtering. includes refactor data dataset structures together refactor FilteredData class. New JoinKeys class (join_keys() constructors join_key() constructor elements) store joining key columns datasets. Refactored basic dataset() constructor, added cdisc_dataset() constructor as_cdisc() conversion function. Soft-deprecate removed class constructors obsolete functions (e.g. keys()). Added get_keys() set_keys() functions extract manipulate datasets primary keys respectively. Unexported filtered_data_new, filtered_data_set filtered_data_set_filters.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"bug-fixes-0-9-3","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.3","text":"Duplicated lines code passed teal::cdisc_dataset teal::RelationalDataset constructors now shown getting code teal::cdisc_data objects teal::RelationalData objects. Added ability press “Enter” key without set focus Submit button delayed data loading. Allow variable_choices use datasets missing labels. Fixed bug ignores input NULL selected argument select_spec function.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-3","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.3","text":"Added button remove active filters Filter Panel.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-9-2","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.2","text":"Added python_dataset_connector create delayed data objects python scripts directly python code. NOTE: python_dataset_connector yet ready deployed RSConnect contain numpy pandas, Python libraries used python_dataset_connector. Added support filtering Date Datetime variables Filter Panel. Added buttons date datetime filter widgets reset value original. Added new function check_key_duplicates, creates short summary rows duplicated primary key (row numbers number duplicates)","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"enhancements-0-9-2","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.2","text":"Fixed lack labels character factor variables Filter Panel. variables now displayed module_filter_panel, types numeric, logical, factor, character Date Fixed mutate_data accept whole scope objects vars. Clarified teal::init function documentation state custom CSS loading code htmltools::htmlDependency included header argument rather inside UI arguments modules. Enabled empty select field inside data_extract_spec. Added new argument drop_keys filter_spec decide whether drop keep keys columns single filter columns. Added new optional argument keys variable_choices. keys specifies names variables, new key icon shown next variable drop menus left-hand side encoding panels instead icon appropriate original R variable type. variable_choices now also works RelationalDataset RelationalDatasetConnector objects.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"miscellaneous-0-9-2","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.9.2","text":"Removed include_factors option get_class_colnames RawDataset.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-091","dir":"Changelog","previous_headings":"","what":"teal 0.9.1","title":"teal 0.9.1","text":"Adds method resolve nested lists containing delayed data objects, can used arm_ref_comp objects. Nested tabs module now better alignment filter panel page. Allow width argument optionalSelectInput. Added lifecycle badges exported functions. Added new code_dataset_connector code_cdisc_dataset_connector functions enable creation new delayed data objects given string code. Added new functions csv_dataset_connector csv_cdisc_dataset_connector. Updated set_ui_input method RawDatasetConnector NamedDatasetConnector handle user defined shiny inputs. Include Keep Inf checkbox numerical filter items. Keep NA Keep Inf checkbox doesn’t appear missing infinite values. Replace existing RelationalData class abstract class RelationalDataCollection rename RelationalDataList class RelationalData. data argument teal::init now always RelationalData object. Added fun_cdisc_dataset_connector enable providing custom function returning dataset. Removed code script arguments as_relational wrapper. intended done mutate_dataset functionality. filer argument init added validation step ensure compatibility rest app. Variables inherited ADSL specified ADSL dataset. Fixes issue connection close code present get_code results. Fixes issue occasional incorrect ordering bar charts filter panel. informative error displayed pull_fun DataConnection produces error.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-090","dir":"Changelog","previous_headings":"","what":"teal 0.9.0","title":"teal 0.9.0","text":"cdisc_dataset dataset now return R6 class objects (RelationalDataset). new teal_data function include datasets connectors teal application. cdisc_data function include datasets connectors teal application check argument still used consistency tests performed. get_raw_data can used derive raw data R6 objects e.g. (RelationalDataset). RawDatasetConnector, NamedDatasetConnector RelationalDatasetConnector execute custom function call order get data connection. CodeClass manage reproducibility data relationships datasets. directly exposed public interface. mutate_dataset allows modify dataset connector via code argument R script. mutate_data allows change dataset RelationalData, RelationalDataConnector RelationalDataList. New wrapper functions manipulate RelationalDatasetConnector RelationalDataset get_dataset, load_dataset, as_relational. New wrapper functions manipulate RelationalDataConnector, RelationalData RelationalDataList get_datasets, load_datasets. choices_labeled, filter_spec, select_spec, data_extract_spec, value_choices, variable_choices S3 class applied data.frame also delayed data. can longer modify app$datasets, must instead use argument filter init function. New modules created create module nested teal modules, another one adds right filter pane tab. teal::init function stays unchanged. teal::init function now returns UI function optional id argument. allows embed applications. split view two teal applications side--side one example shown vignette. teal::init turned wrapper function around module_teal_with_splash.R developers want embed teal shiny module directly work functions (ui_teal_with_splash srv_teal_with_splash) instead teal::init. teal::init function now title parameter set title browser window. Missing data NA now explicitly addressed filter panel: NAs excluded default checkbox include added. Statistics data visually depicted terms histograms bar charts overlayed onto shiny input elements. Added buttons remove filters applied dataset. Restored functionality hide filter panel module constructed filters = NULL. Moved helper functions utils.nest removed unused functions set_labels_df get_labels_df. optionalSelectInput now allows grouped choices.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"refactor-of-filtereddata-for-developers-0-9-0","dir":"Changelog","previous_headings":"","what":"Refactor of FilteredData (for developers)","title":"teal 0.9.0","text":"FilteredData now fully reactive. Now filtered data lazy evaluated per need. opens door bookmarking teal apps (bookmarking currently works right filtering panel, make feature sophisticated future release, module must reviewed adapted contains reactiveValues). Datasets materialized connectors provided FilteredData set_datasets_data function located init_datasets.R file. Renamed get_dataset() method get_data(). Renamed get_filter_call() method get_filter_expr(); returns expression rather list. Removed argument isolate get_data() method similar methods. must isolate needed. want temporarily deactivate shiny errors due missing errors, can set options(shiny.suppressMissingContextError = TRUE). general, avoid isolate breaks reactivity. added development module add several filters , e.g. safety filters. evaluated converted proper module made available end-users.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-085","dir":"Changelog","previous_headings":"","what":"teal 0.8.5","title":"teal 0.8.5","text":"UI bug fix hide filter elements used datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-084","dir":"Changelog","previous_headings":"","what":"teal 0.8.4","title":"teal 0.8.4","text":"Progress bar UI creation delayed loading module. Change output keys function keys object. Delayed version choices_selected. Fix error choices_selected selected choices. Fix pickerInput display column name label ’s missing.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-083","dir":"Changelog","previous_headings":"","what":"teal 0.8.3","title":"teal 0.8.3","text":"Enable teal app initialize without data. data loaded within teal app. New classes (DatasetConnector, DataConnector) connect various data sources, including: * connector rice API - rice_data rice_dataset_connector * connector RDS files - rds_data rds_dataset_connector Message appears bottom right shiny app shiny busy update views. Remove labels argument cdisc_data function. Labels now already present data passed cdisc_data function. can achieved using var_relabel function.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-082","dir":"Changelog","previous_headings":"","what":"teal 0.8.2","title":"teal 0.8.2","text":"Fixed several BUGS optionalSelectInput improved inputs look. Added get_data_labels function FilteredData class. Improved sep passing within data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-081","dir":"Changelog","previous_headings":"","what":"teal 0.8.1","title":"teal 0.8.1","text":"Refactor choices_labeled fix bug showing column name data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-080","dir":"Changelog","previous_headings":"","what":"teal 0.8.0","title":"teal 0.8.0","text":"Added cdisc_dataset (general dataset) functions properly handle dataset keys merging. Possibility load custom .css .js files. Renamed columns_spec select_spec. Show number observations filter panel. Add labeling functions variable_choices value_choices.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-070","dir":"Changelog","previous_headings":"","what":"teal 0.7.0","title":"teal 0.7.0","text":"Added functions cdisc_data get_code deal preprocessing moving step towards data standard independent teal. Moved teal.utils functions teal: log_app_usage, stop_shiny. Added *_spec functions. Improvements usage PickerInput SelectInput.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-060","dir":"Changelog","previous_headings":"","what":"teal 0.6.0","title":"teal 0.6.0","text":"Removed deprecated functions tab*. Removed data generation functions including generate_sample_data. Incorporate shinyjs package. Added “Copy R code clipboard” button.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-005","dir":"Changelog","previous_headings":"","what":"teal 0.0.5","title":"teal 0.0.5","text":"Added limit data_table scrolling, preventing overlap UI elements. Boolean filtering.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-004","dir":"Changelog","previous_headings":"","what":"teal 0.0.4","title":"teal 0.0.4","text":"Bug fix teal crashes filter variable gets added many decimal places.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-003","dir":"Changelog","previous_headings":"","what":"teal 0.0.3","title":"teal 0.0.3","text":"Note version 0.0.3 backwards compatible. Reading changes studying example app , however, clarify changes.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"new-features-0-0-3","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.0.3","text":"tm_scatterplot module. tm_table module.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"changes-0-0-3","dir":"Changelog","previous_headings":"","what":"Changes","title":"teal 0.0.3","text":"tabs arguments renamed modules. tab_item function now called module. tab_items function now called modules. tabs function removed. variable_browser_item now called tm_variable_browser. data_table_item now called tm_data_table. datasets argument automatically added server functions specified module. Hence teal_datasets removed server_args element.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-002","dir":"Changelog","previous_headings":"","what":"teal 0.0.2","title":"teal 0.0.2","text":"New ‘01_getting_started’ vignette. Datanames FilteredData now case sensitive.","code":""},{"path":"https://insightsengineering.github.io/teal/news/index.html","id":"teal-001","dir":"Changelog","previous_headings":"","what":"teal 0.0.1","title":"teal 0.0.1","text":"March 28, 2016 - Initial Release.","code":""}] +[{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement [INSERT CONTACT METHOD]. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contribution Guidelines","title":"Contribution Guidelines","text":"🙏 Thank taking time contribute! input deeply valued, whether issue, pull request, even feedback, regardless size, content scope.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"table-of-contents","dir":"","previous_headings":"","what":"Table of contents","title":"Contribution Guidelines","text":"👶 Getting started 📔 Code Conduct 🗃 License 📜 Issues 🚩 Pull requests 💻 Coding guidelines 🏆 Recognition model ❓ Questions","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"getting-started","dir":"","previous_headings":"","what":"Getting started","title":"Contribution Guidelines","text":"Please refer project documentation brief introduction. Please also see articles within project documentation additional information.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contribution Guidelines","text":"Code Conduct governs project. Participants contributors expected follow rules outlined therein.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Contribution Guidelines","text":"contributions covered project’s license.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"Contribution Guidelines","text":"use GitHub track issues, feature requests, bugs. submitting new issue, please check issue already reported. issue already exists, please upvote existing issue 👍. new feature requests, please elaborate context benefit feature users, developers, relevant personas.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"github-flow","dir":"","previous_headings":"Pull requests","what":"GitHub Flow","title":"Contribution Guidelines","text":"repository uses GitHub Flow model collaboration. submit pull request: Create branch Please see branch naming convention . don’t write access repository, please fork . Make changes Make sure code passes checks imposed GitHub Actions well documented well tested unit tests sufficiently covering changes introduced Create pull request (PR) pull request description, please link relevant issue (), provide detailed description change, include assumptions. Address review comments, Post approval Merge PR write access. Otherwise, reviewer merge PR behalf. Pat back Congratulations! 🎉 now official contributor project! grateful contribution.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"branch-naming-convention","dir":"","previous_headings":"Pull requests","what":"Branch naming convention","title":"Contribution Guidelines","text":"Suppose changes related current issue current project; please name branch follows: _. Please use underscore (_) delimiter word separation. example, 420_fix_ui_bug suitable branch name change resolving UI-related bug reported issue number 420 current project. change affects multiple repositories, please name branches follows: __. example, 69_awesomeproject_fix_spelling_error reference issue 69 reported project awesomeproject aims resolve one spelling errors multiple (likely related) repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"monorepo-and-stageddependencies","dir":"","previous_headings":"Pull requests","what":"monorepo and staged.dependencies","title":"Contribution Guidelines","text":"Sometimes might need change upstream dependent package(s) able submit meaningful change. using staged.dependencies functionality simulate monorepo behavior. dependency configuration already specified project’s staged_dependencies.yaml file. need name feature branches appropriately. exception branch naming convention described . Please refer staged.dependencies package documentation details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"coding-guidelines","dir":"","previous_headings":"","what":"Coding guidelines","title":"Contribution Guidelines","text":"repository follows unified processes standards adopted maintainers ensure software development carried consistently within teams cohesively across repositories.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"style-guide","dir":"","previous_headings":"Coding guidelines","what":"Style guide","title":"Contribution Guidelines","text":"repository follows standard tidyverse style guide uses lintr lint checks. Customized lint configurations available repository’s .lintr file.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"dependency-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency management","title":"Contribution Guidelines","text":"Lightweight right weight. repository follows tinyverse recommedations limiting dependencies minimum.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"dependency-version-management","dir":"","previous_headings":"Coding guidelines","what":"Dependency version management","title":"Contribution Guidelines","text":"code compatible (!) historical versions given dependenct package, required specify minimal version DESCRIPTION file. particular: development version requires (imports) development version another package - required put abc (>= 1.2.3.9000).","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"r--package-versions","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"R & package versions","title":"Contribution Guidelines","text":"continuously test packages newest R version along recent dependencies CRAN BioConductor. recommend working environment also set way. can find details R version packages used R CMD check GitHub Action execution log - step prints R sessionInfo(). discover bugs older R versions older set dependencies, please create relevant bug reports.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"pre-commit","dir":"","previous_headings":"Coding guidelines > Recommended development environment & tools","what":"pre-commit","title":"Contribution Guidelines","text":"highly recommend use pre-commit tool combined R hooks pre-commit execute checks committing pushing changes. Pre-commit hooks already available repository’s .pre-commit-config.yaml file.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"recognition-model","dir":"","previous_headings":"","what":"Recognition model","title":"Contribution Guidelines","text":"mentioned previously, contributions deeply valued appreciated. contribution data available part repository insights, recognize significant contribution hence add contributor package authors list, following rules enforced: Minimum 5% lines code authored* (determined git blame query) top 5 contributors terms number commits lines added lines removed* *Excluding auto-generated code, including limited roxygen comments renv.lock files. package maintainer also reserves right adjust criteria recognize contributions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/CONTRIBUTING.html","id":"questions","dir":"","previous_headings":"","what":"Questions","title":"Contribution Guidelines","text":"questions regarding contribution guidelines, please contact package/repository maintainer.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/SECURITY.html","id":"reporting-security-issues","dir":"","previous_headings":"","what":"Reporting Security Issues","title":"Security Policy","text":"believe found security vulnerability repositories organization, please report us coordinated disclosure. Please report security vulnerabilities public GitHub issues, discussions, pull requests. Instead, please send email vulnerability.management[@]roche.com. Please include much information listed can help us better understand resolve issue: type issue (e.g., buffer overflow, SQL injection, cross-site scripting) Full paths source file(s) related manifestation issue location affected source code (tag/branch/commit direct URL) special configuration required reproduce issue Step--step instructions reproduce issue Proof--concept exploit code (possible) Impact issue, including attacker might exploit issue information help us triage report quickly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/SECURITY.html","id":"data-security-standards-dss","dir":"","previous_headings":"","what":"Data Security Standards (DSS)","title":"Security Policy","text":"Please make sure reporting issues form bug, feature, pull request, sensitive information PII, PHI, PCI completely removed text attachments, including pictures videos.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Adding Support for Reporting to Custom Modules","text":"teal package offers integrated reporting feature utilizing teal.reporter package. comprehensive explanation reporting functionality , please refer documentation therein. article intended module developers aims provide guidance enhancing custom teal module automatic reporting feature. enhancement enables users incorporate snapshots module outputs report can reviewed another module automatically provided teal. Thus app user can interact report. responsibilities module developer include: Adding support reporting module. Specifying outputs constitute snapshot module. entire life cycle objects involved creating report configuring module preview report handled teal.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"custom-module","dir":"Articles","previous_headings":"","what":"Custom module","title":"Adding Support for Reporting to Custom Modules","text":"Let us consider example module, based example module teal: Using teal, can launch example module following:","code":"library(teal) my_module <- function(label = \"example teal module\") { module( label = label, server = function(id, data) { assert_reactive(data) checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"modify-the-declaration-of-the-server-function","dir":"Articles","previous_headings":"Add support for reporting","what":"Modify the declaration of the server function","title":"Adding Support for Reporting to Custom Modules","text":"first step add additional argument server function declaration - reporter. informs teal module requires reporter, included module called. See : modifications, module now ready launched teal: teal adds another tab application, titled Report previewer. However, visible change module operates appears user add content report module. requires inserting UI server elements teal.reporter module module body.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"insert-teal-reporter-module","dir":"Articles","previous_headings":"Add support for reporting","what":"Insert teal.reporter module","title":"Adding Support for Reporting to Custom Modules","text":"UI server logic necessary adding cards my_module_with_reporting report provided teal.reporter::simple_reporter_ui teal.reporter::simple_reporter_srv. updated module now ready launched: new piece UI added, buttons clickable. user can now add card report view Report previewer module preview still empty since instructed module put card.","code":"my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = function(card) card ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"add-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add content to the card","title":"Adding Support for Reporting to Custom Modules","text":"add content card, utilize public API exposed TealReportCard class. teal.reporter::simple_reporter_srv module accepts card_fun argument determines appearance output custom module. ReportCard derivatives allow sequential addition content according order method calls. explore content, can use $get_content method. details, refer documentation TealReportCard teal.reporter::ReportCard. add simple text card modifying card_fun argument passed teal.reporter::simple_reporter_srv. function must return card object, otherwise errors may occur teal. Now, application user can see text added custom_function Report previewer module.","code":"custom_function <- function(card = teal.reporter::ReportCard$new()) { card$append_text(\"This is content from a custom teal module!\") card } my_module_with_reporting <- function(label = \"example teal module\") { module( label = label, server = function(id, data, reporter) { moduleServer(id, function(input, output, session) { teal.reporter::simple_reporter_srv( id = \"reporter\", reporter = reporter, card_fun = custom_function ) updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) output$dataset <- renderPrint({ req(input$dataname) data()[[input$dataname]] }) }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL) ), mainPanel(verbatimTextOutput(ns(\"dataset\"))) ) } ) } app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = my_module_with_reporting() ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"add-non-text-content-to-the-card","dir":"Articles","previous_headings":"Add support for reporting","what":"Add non-text content to the card","title":"Adding Support for Reporting to Custom Modules","text":"teal.reporter supports addition tables, charts, . information, explore API teal.reporter::ReportCard learn supported content types.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"tealreportcard","dir":"Articles","previous_headings":"Add support for reporting","what":"TealReportCard","title":"Adding Support for Reporting to Custom Modules","text":"teal exports TealReportCard class, extends teal.reporter::ReportCard class provides several convenient methods facilitate working teal features like filter panel source code. details, refer documentation TealReportCard. support TealReportCard, function passed teal.reporter::simple_reporter_srv must define default value card, shown : Without definition, API TealReportCard available within function.","code":"custom_function <- function(card = TealReportCard$new()) { # ... some code ... # card }"},{"path":"https://insightsengineering.github.io/teal/main/articles/adding-support-for-reporting.html","id":"example","dir":"Articles","previous_headings":"","what":"Example","title":"Adding Support for Reporting to Custom Modules","text":"conclusion, demonstrated build standard teal app code reproducibility reporter functionalities. Note server function requires filter_panel_api argument filter panel state can added report. final example, incorporated teal.code snippets. teal.code R library offers utilities storing code associating execution environment. allows ReporterCard store code necessary generate table along table . learn teal.code see vignette qenv teal.code.","code":"library(teal) library(teal.reporter) ## example_reporter_module <- function(label = \"Example\") { module( label = label, server = function(id, data, reporter, filter_panel_api) { with_filter <- !missing(filter_panel_api) && inherits(filter_panel_api, \"FilterPanelApi\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(names(data()))) dat <- reactive(data()[[input$dataname]]) observe({ req(dat()) updateSliderInput(session, \"nrow\", max = nrow(dat()), value = floor(nrow(dat()) / 5)) }) table_q <- reactive({ req(input$dataname) req(input$nrow) within( data(), result <- head(dataset, nrows), dataset = as.name(input$dataname), nrows = input$nrow ) }) output$table <- renderTable(table_q()[[\"result\"]]) ### REPORTER card_fun <- function(card = teal.reporter::ReportCard$new(), comment) { card$set_name(\"Table Module\") card$append_text(paste(\"Selected dataset\", input$dataname), \"header2\") card$append_text(\"Selected Filters\", \"header3\") if (with_filter) { card$append_text(filter_panel_api$get_filter_state(), \"verbatim\") } card$append_text(\"Encoding\", \"header3\") card$append_text( yaml::as.yaml( stats::setNames( lapply(c(\"dataname\", \"nrow\"), function(x) input[[x]]), c(\"dataname\", \"nrow\") ) ), \"verbatim\" ) card$append_text(\"Module Table\", \"header3\") card$append_table(table_q()[[\"result\"]]) card$append_text(\"Show R Code\", \"header3\") card$append_text(teal.code::get_code(table_q()), \"verbatim\") if (!comment == \"\") { card$append_text(\"Comment\", \"header3\") card$append_text(comment) } card } teal.reporter::add_card_button_srv( \"addReportCard\", reporter = reporter, card_fun = card_fun ) teal.reporter::download_report_button_srv(\"downloadButton\", reporter = reporter) teal.reporter::reset_report_button_srv(\"resetButton\", reporter) ### }) }, ui = function(id) { ns <- NS(id) sidebarLayout( sidebarPanel(selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL)), mainPanel( teal.reporter::simple_reporter_ui(ns(\"reporter\")), verbatimTextOutput(ns(\"dataset\")) ) ) sidebarLayout( sidebarPanel( tags$div( teal.reporter::add_card_button_ui(ns(\"addReportCard\")), teal.reporter::download_report_button_ui(ns(\"downloadButton\")), teal.reporter::reset_report_button_ui(ns(\"resetButton\")) ), selectInput(ns(\"dataname\"), \"Choose a dataset\", choices = NULL), sliderInput(ns(\"nrow\"), \"Number of rows\", min = 1, max = 1, value = 1, step = 1) ), mainPanel(tableOutput(ns(\"table\"))) ) } ) } app <- init( data = teal_data(AIR = airquality, IRIS = iris), modules = list( example_reporter_module(label = \"with Reporter\"), my_module(label = \"without Reporter\") ), filter = teal_slices(teal_slice(dataname = \"AIR\", varname = \"Temp\", selected = c(72, 85))), header = \"Example teal app with reporter\" ) ## Initializing reporter_previewer_module if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/actors.html","id":"teal-app-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal app developer","title":"Actors","text":"primary responsibility teal app developer leverage available building blocks teal framework create functional teal app analyses data. expedite app creation process, developers can take advantage pre-existing teal modules found R packages like teal.modules.general teal.modules.clinical. modules designed focus standardization versatility, making suitable wide range use cases. developing teal app, developer select appropriate teal modules integrate app’s interface ensure seamless usability end-users. learn existing modules, visit teal.gallery, contains several demo applications source code.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[teal App Developer]--utilizes--> B[teal modules] B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style C fill:gold style D fill:pink"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/actors.html","id":"teal-module-developer","dir":"Articles > Blueprint","previous_headings":"","what":"teal module developer","title":"Actors","text":"main duty teal module developer construct compatible teal module can utilized within teal framework. Several factors influence scope requirements building teal module. creating reusable teal module, ’s advisable focus making general adaptable feasible maximize possibilities re-used future. However, developers freedom create teal module customized suit specific demands project. Ultimately, one teal modules employed construct teal app. learn creating custom modules follow Tutorial Creating Custom Module.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. graph LR A[Teal App Developer]--utilizes--> B[teal modules] E[Teal Module Developer]--develops--> B B--to create--> C[teal app] D[app user]--uses--> C style A fill:lightblue style E fill:lightgreen style D fill:pink style C fill:gold"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/actors.html","id":"workflow-in-a-clinical-trial-study","dir":"Articles > Blueprint","previous_headings":"","what":"Workflow in a clinical trial study","title":"Actors","text":"clinical trial study setting, unique study teal app developer assigned study team accountable developing tailored teal app respective study. study teal app developer initially leverage existing teal modules R packages created teal module developers. cases need create new modules tailored study, study teal module developer need involved. Upon completion, study team designated teal app tailored specific study.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. %%| fig-width: 7.5 graph LR subgraph Study B A2[Study Teal App Developer]--utilizes--> B2[teal modules] E2[Study Teal Module Developer]-.develops.-> B2 B2--to create--> C2[study teal app] D2[study app user]--uses--> C2 end E3[Teal Module Developer]--develops--> B E3--develops-->B2 subgraph Study A A[Study Teal App Developer]--utilizes--> B[teal modules] E[Study Teal Module Developer]-.develops.-> B B--to create--> C[study teal app] D[study app user]--uses--> C end style A fill:lightblue style A2 fill:lightblue style E fill:limegreen style E2 fill:limegreen style E3 fill:lightgreen style D fill:pink style D2 fill:pink style C fill:gold style C2 fill:gold"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/filter_panel.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Filter Panel","text":"teal.slice package provides teal applications filter panel, powerful tool exploring analyzing data, key component teal framework. One great things filter panel comes built-teal, requiring programming knowledge use. filter panel provides convenient way users subset data, simplifying process exploration comprehension. Moreover, users can activate deactivate filter states interactively, either individually globally, using filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/filter_panel.html","id":"filter-flow","dir":"Articles > Blueprint","previous_headings":"","what":"Filter flow","title":"Filter Panel","text":"filter panel creates subsets data. Subsetting achieved creating filter states, holds logical predicate (filter condition) applied single variables. filter conditions composed single expression, call particular function (e.g. dplyr::filter), expression evaluated create filtered data subset. process entirely interactive. Filter states can created, removed, changed , however, app developer may choose constrain even restrict . filter state created, filter panel generates filter card shiny inputs appropriate type variable, e.g. range selectors numeric columns sets checkboxes drop-menus categorical ones. users interact filter cards, subsetting complete expression updated filtered data recomputed. filtered data passed teal modules downstream analysis. subsetting expression returned along data, ensuring unbroken track record entire analysis. Signature data also stored ensure reproducible results.","code":"%% This is a mermaid diagram, if you see this the plot failed to render. Sorry. sequenceDiagram autonumber data->teal.slice: processed by teal.slice->>shiny inputs: creates Note over teal.slice,shiny inputs: based on data type shiny inputs->>reactive dataset: updates reactive dataset->>teal modules: processed by"},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/in_app_data.html","id":"building-data-in-the-app","dir":"Articles > Blueprint","previous_headings":"","what":"Building data in the App","title":"In-App Data","text":"Typically data passed teal application available app run. However, always true cases data built app started. good example pulling data external repository, like database, uploading file. Additional authentication may required.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/in_app_data.html","id":"teal_data_module","dir":"Articles > Blueprint","previous_headings":"Building data in the App","what":"teal_data_module","title":"In-App Data","text":"Preprocessing actions can performed -app using teal_data_module. Rather passing teal_data object app, one may pass shiny module returns teal_data object (wrapped reactive expression). allows app developer include user actions data creation, fetching, even pre-filtering modification.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/in_app_data.html","id":"further-reading","dir":"Articles > Blueprint","previous_headings":"","what":"Further reading","title":"In-App Data","text":"complete explanation using teal_data_module can found teal vignette","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/input_data.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Input Data","text":"Reproducibility paramount pharmaceutical industry. Accurate consistent results essential ensure high-quality research safety patients. prioritizing reproducibility, researchers can validate methods, confirm findings, contribute advancement field. teal.code package provides qenv class facilitates code reproducibility. Code passed qenv object, evaluated specific environment. qenv also stores code can retrieved request. teal_data class, serves primary data interface teal applications, inherits code tracking behavior qenv.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/input_data.html","id":"preparing-data-for-a-teal-application","dir":"Articles > Blueprint","previous_headings":"","what":"Preparing data for a teal application","title":"Input Data","text":"teal applications run data provided teal_data object. Data objects stored modified within environment teal_data object R code used tracked, allows code evaluated executed teal application, reproduced outside teal application. includes data loading, preprocessing, filtering, transformations, plotting, etc. teal_data object makes easy users reproduce validate results analyses. Learn use teal_data teal.data package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/input_data.html","id":"show-r-code-and-reporter","dir":"Articles > Blueprint","previous_headings":"","what":"Show R Code and Reporter","title":"Input Data","text":"teal.modules.clinical teal.modules.general packages, ’ll find modules include convenient Show R Code button. button clicked, modal window appears, revealing R code responsible generating module’s output. functionality achieved inspecting teal_data object retrieving code . Show R Code button, users can easily copy independently run code reproduce analysis presented teal module. Reporter feature also leverages teal_data object operation. Much like Show R Code mechanism, code displayed Reporter Card extracted teal_data object. learn Reporter feature, please visit teal.reporter documentation. Overall, qenv teal.code child class, teal_data, powerful tools ensuring code reproducibility promoting high-quality research R programming language.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/module_encapsulation.html","id":"introduction","dir":"Articles > Blueprint","previous_headings":"","what":"Introduction","title":"Module Encapsulation","text":"teal framework leverages shiny module concept enable encapsulation analytical actions teal modules, maintaining seamless communication modules application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/module_encapsulation.html","id":"benefits","dir":"Articles > Blueprint","previous_headings":"","what":"Benefits","title":"Module Encapsulation","text":"implementing modular app technique shiny module creation teal module, several benefits realized: Streamlined maintenance development teal module becomes manageable, can function independently teal framework. separation allows developers maintain module ease. approach successfully applied R packages dedicated teal module development, teal.modules.general teal.modules.clinical. Enhanced focus outputteal module developers can concentrate solely refining parameters encoding, output aspects (data summarization visualization) without need concern intricacies teal framework. developed correctly, module seamlessly integrates teal. Facilitated collaborationteal module development becomes accessible entry point developers interested collaborating. approach encourages user collaboration improvement teal modules, developers gain deeper understanding mechanics teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/blueprint/product_map.html","id":"why-so-many-packages","dir":"Articles > Blueprint","previous_headings":"","what":"Why so many packages?","title":"Product Map","text":"breaking teal features, modules, calculations dedicated packages, maintenance made significantly manageable.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Bootstrap Themes in teal","text":"offer easy application custom Bootstrap theme teal app. teal uses bslib R package provides tools customizing Bootstrap themes, including shiny apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"usage","dir":"Articles","previous_headings":"","what":"Usage","title":"Bootstrap Themes in teal","text":"teal app developers can specify custom Bootstrap themes setting teal.bs_theme R option, set bslib::bs_theme object. bslib::bs_theme(...) function creates Bootstrap theme object, one specifies (major) Bootstrap version (default one 3, 4, 5). Optionally one can choose bootswatch theme customize app CSS functions like bslib::bs_add_rules. Please read custom themes bslib getting started vignette. teal.bs_theme R option specified top code script. Please install bslib package run code .","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"teal-bs_theme-r-option","dir":"Articles","previous_headings":"Usage","what":"teal.bs_theme R option","title":"Bootstrap Themes in teal","text":"","code":"options(\"teal.bs_theme\" = bslib::bs_theme(\"Custom Options\")) ####################### # teal::init() app code #######################"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"bootstrap-version-and-themes","dir":"Articles","previous_headings":"Usage","what":"Bootstrap version and themes","title":"Bootstrap Themes in teal","text":"best recommended ways explore Bootstrap themes use bslib::run_with_themer(shinyApp(app$ui, app$server)) bslib::bs_theme_preview(), offer interactive explore mode (supported Bootstrap 3). bslib::bs_theme_preview() recommended end user shiny app yet. already shiny app want test different Bootstrap themes (CSS styling) bslib::run_with_themer(shinyApp(app$ui, app$server)) recommended. Available Bootstrap versions checked bslib::versions() Bootstrap themes (bootswatch) bslib::bootswatch_themes(version = \"5\").","code":"# bslib::versions() # bslib::bootswatch_themes(version = \"5\") options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"lux\")) # or options(\"teal.bs_theme\" = bslib::bs_theme_update(bslib::bs_theme(version = \"5\"), bootswatch = \"lux\"))"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"default-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Default Bootstrap theme","title":"Bootstrap Themes in teal","text":"using default bslib theme version (3, 4 5), styling might expected. Please run interactive themer (recommended) apply custom theme explore theme options. many scenarios updating theme might enough e.g. font color specifications updated .","code":"# instead of options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) # try non-default themes options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\", bootswatch = \"THEME NAME\". ...)) # or run the app inside bslib::run_with_themer"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"reset-the-bootstrap-theme","dir":"Articles","previous_headings":"Usage","what":"Reset the Bootstrap theme","title":"Bootstrap Themes in teal","text":"Please use options(\"teal.bs_theme\" = NULL) call return default shiny Bootstrap teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"theme-not-updated","dir":"Articles","previous_headings":"Usage","what":"Theme not updated","title":"Bootstrap Themes in teal","text":"One reason theme updated web browser caches previous one, especially different themes run one another. Please, use Cmd+Shift+R (Mac) Ctrl+F5 (Windows) hard refresh webpage.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"custom-teal-css","dir":"Articles","previous_headings":"Usage","what":"Custom teal CSS","title":"Bootstrap Themes in teal","text":"important HTML tags teal specific id class, can directly styled. bslib::bs_add_rules function used around bslib::bs_theme object apply custom CSS rules. bslib::bs_add_* family functions used specify low-level Bootstrap elements.","code":"library(magrittr) options(\"teal.bs_theme\" = bslib::bs_add_rules( bslib::bs_theme(version = \"5\"), \"Anything understood by sass::as_sass()\" ))"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"bootstrap-null-vs-bootstrap-3","dir":"Articles","previous_headings":"Usage","what":"Bootstrap NULL vs Bootstrap 3","title":"Bootstrap Themes in teal","text":"important note statements options(\"teal.bs_theme\" = NULL) options(\"teal.bs_theme\" = bslib::bs_theme(version = \"3\") equivalent bslib approximation default shiny theme Bootstrap version 3 can introduce discrepancies. One important difference using bslib::bs_theme(version = \"3\", bootswatch = \"THEME NAME\") one can apply custom Bootstrap theme. Another one usage bslib::bs_theme(version = \"3\") requires installation shinyWidgets package minimum version 0.7.4.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"regular-shinyfluidpage","dir":"Articles","previous_headings":"Usage","what":"Regular shiny::fluidPage","title":"Bootstrap Themes in teal","text":"want update theme regular shiny::fluidPage-like app, need teal.bs_theme option. Simply provide bslib::bs_theme directly: shiny::fluidPage(theme = bslib::bs_theme(...), ...).","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"interactive-theming-guide","dir":"Articles","previous_headings":"Usage","what":"Interactive theming guide","title":"Bootstrap Themes in teal","text":"section provide step--step guide customizing teal application theme interactively bslib::run_with_themer(). recommend starting simple case satisfied, verifying full application. end use teal application . example assume want use Bootstrap 5. start, launch app bslib::run_with_themer(app$ui, app$server) instead shiny::shinyApp. gives us following. Note Theme Customizer section right hand side. added bslib customize theme.","code":"options(\"teal.bs_theme\" = bslib::bs_theme(version = \"5\")) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()), header = \"My first teal application\" ) bslib::run_with_themer(shinyApp(app$ui, app$server))"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"set-overall-app-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Set overall app theme","title":"Bootstrap Themes in teal","text":"Instead starting scratch, want start Bootswatch theme. Let us select Minty theme “Overall theme” drop-. bslib updated CSS styles use new theme, including customizer theme. Additionally, look R console, see helpful guide provides code update theme. teal applications don’t actually use bs_theme_update opt bs_theme instead. However, printed code still helpful.","code":"#### Update your bs_theme() R code with: ##### bs_theme_update(theme, bootswatch = \"minty\")"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"customize-a-bootswatch-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Customize a bootswatch theme","title":"Bootstrap Themes in teal","text":"base theme (Minty) close want let’s make modifications. start, increase base font size. , choose “Fonts” section customizer theme set value “Base font size” input. use 1.25 , means fonts increased factor 1.25. check R console, see bslib printed bs_theme_update(theme, font_scale = 1.25, bootswatch = \"minty\"), now includes font size adjustment. Finally, suppose want borders rounded. customizer theme, can go “Options” uncheck “Rounded corners” box. expected, corners longer rounded. look R console, now see bs_theme_update(theme, font_scale = 1.25,enable-rounded= FALSE, bootswatch = \"minty\").","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"apply-the-customized-theme","dir":"Articles","previous_headings":"Usage > Interactive theming guide","what":"Apply the customized theme","title":"Bootstrap Themes in teal","text":"customization complete, apply changes application. , use option teal.bs_theme like time expand bslib::bs_theme call include changes. Luckily, arguments printed R console running app themer can plugged right . Now application custom theme applied. Please note interactive themer contains commonly applied options. customization options, review bslib documentation.","code":"options( \"teal.bs_theme\" = bslib::bs_theme( version = \"5\", font_scale = 1.25, `enable-rounded` = FALSE, bootswatch = \"minty\" ) ) library(teal) app <- init( data = teal_data(IRIS = iris), filter = teal_slices(teal_slice(\"IRIS\", \"Sepal.Length\", selected = c(5, 7))), modules = modules(example_module(), example_module()) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/bootstrap-themes-in-teal.html","id":"sources","dir":"Articles","previous_headings":"","what":"Sources","title":"Bootstrap Themes in teal","text":"https://rstudio.github.io/bslib/","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Creating Custom Modules","text":"teal framework provides large catalog plug--ready analysis modules can incorporated teal applications. However, also possible create modules using module function, leverages Shiny modules. custom teal module built Shiny module, combining Shiny’s reactive capabilities modularized UI server logic encapsulate functionality. design enables structured reusable approach creating interactive components integrate seamlessly within teal ecosystem. guide, use simple histogram example, demonstrate convert histogram function robust teal module step--step: module allow users dynamically select datasets variables create histograms within teal application. cover best practices, including: Setting dynamic inputs. Structuring server logic. Using teal_data object ensure reactivity reproducibility.","code":"my_plot <- hist( dataset[[vars]], las = 1, main = paste(\"Histogram of\", vars), xlab = vars, col = \"lightblue\", border = \"black\" )"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"understanding-the-inputs-and-requirements","dir":"Articles","previous_headings":"","what":"Understanding the Inputs and Requirements","title":"Creating Custom Modules","text":"developing custom teal module visualizations, first identify primary inputs users interact : Dataset Input (dataset): Allows users select dataset explore. Variable Input (vars): Allows users choose specific numeric variable chosen dataset, ensuring appropriate columns available plotting. inputs dynamically populated based available datasets variables teal_data object, cover later.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-ui","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module UI","title":"Creating Custom Modules","text":"UI function defines controls display area histogram. module, use: selectInput Dataset: Enables users select dataset list available datasets. selectInput Variable: Allows users choose numeric variable chosen dataset, dynamically filtering non-numeric columns. plotOutput Histogram: Displays histogram dataset variable inputs selected. verbatimTextOutput Code: Automatically displays code generated plot based user input. ’s code histogram_module_ui function:","code":"# UI function for the custom histogram module histogram_module_ui <- function(id) { ns <- shiny::NS(id) shiny::tagList( shiny::selectInput(ns(\"dataset\"), \"Select Dataset\", choices = NULL), shiny::selectInput(ns(\"variable\"), \"Select Variable\", choices = NULL), shiny::plotOutput(ns(\"histogram_plot\")), shiny::verbatimTextOutput(ns(\"plot_code\")) # To display the reactive plot code ) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"setting-up-the-teal-module-server","dir":"Articles","previous_headings":"","what":"Setting Up the teal Module Server","title":"Creating Custom Modules","text":"server function main logic teal module handled. histogram module, server function handle user interactions manage reactive teal_data object, allows module dynamically respond user inputs.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"passing-the-data-argument-to-the-server-function","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Passing the data Argument to the Server Function","title":"Creating Custom Modules","text":"begin, ’s essential include data argument server function definition. data argument holds reactive teal_data object, contains datasets filters applied. including data, can ensure: server function receives reactive version teal_data, allowing automatically respond changes. server can access filtered datasets directly. correct function definition server function : need refresher teal_data object, please visit teal.data package documentation.","code":"histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Server logic goes here }) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"understanding-teal_data-as-a-reactive-object-in-server-logic","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Understanding teal_data as a Reactive Object in Server Logic","title":"Creating Custom Modules","text":"used server logic teal module, teal_data object becomes reactive data container. means access contents, need call like function, using parentheses: data(). syntax triggers reactivity, ensuring data within teal_data stays --date filters changes applied elsewhere application. Note: teal_data object behaves reactive data container used within server logic. accessed outside server, reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"using-names-to-access-dataset-names-in-teal_data-object","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Using names() to Access Dataset Names in teal_data object","title":"Creating Custom Modules","text":"teal_data object can contain multiple datasets. retrieve names datasets, use names() function: return character vector dataset names contained teal_data. can use names dynamically populate input controls, like dataset selection drop-.","code":"names(data())"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"accessing-specific-datasets-with-double-brackets","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Accessing Specific Datasets with Double Brackets ([[ ]])","title":"Creating Custom Modules","text":"access individual dataset teal_data, use double brackets ([[ ]]) along dataset name. allows extract specific dataset data frame: , input$dataset represents name dataset selected user. syntax highly flexible dynamically references whichever dataset user chosen. can subset manipulate extracted data frame needed.","code":"data()[[input$dataset]]"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"setting-up-server-logic-using-teal_data-and-dynamic-variable-injection","dir":"Articles","previous_headings":"Setting Up the teal Module Server","what":"Setting Up Server Logic Using teal_data and Dynamic Variable Injection","title":"Creating Custom Modules","text":"updated server function, perform following: Create new_data modified version data() using within(), dynamically injecting input$dataset input$variable. Render Plot: renderPlot() displays plot referencing plot stored updated teal_data object, new_data. ’s code: Let’s review ’ve done far: input_dataset = .name(input$dataset) passes dataset name dynamically input_dataset. input_vars = input$variable passes selected variable name directly input_vars. Inside within(), my_plot uses injected variables dynamically generate histogram plot. output$histogram_plot uses renderPlot() display plot stored new_data referencing result()[[\"my_plot\"]]. output$plot_code render function displays dynamically generated code using teal.code::get_code(result()), allowing users see exact code used generate plot reactively.","code":"# Server function for the custom histogram module with injected variables in within() histogram_module_server <- function(id, data) { moduleServer(id, function(input, output, session) { # Update dataset choices based on available datasets in teal_data shiny::observe({ shiny::updateSelectInput( session, \"dataset\", choices = names(data()) ) }) # Update variable choices based on selected dataset, only including numeric variables observeEvent(input$dataset, { req(input$dataset) # Ensure dataset is selected numeric_vars <- names(data()[[input$dataset]])[sapply(data()[[input$dataset]], is.numeric)] shiny::updateSelectInput(session, \"variable\", choices = numeric_vars) }) # Create a reactive `teal_data` object with the histogram plot result <- reactive({ req(input$dataset, input$variable) # Ensure both dataset and variable are selected # Create a new teal_data object with the histogram plot new_data <- within( data(), { my_plot <- hist( input_dataset[[input_vars]], las = 1, main = paste(\"Histogram of\", input_vars), xlab = input_vars, col = \"lightblue\", border = \"black\" ) }, input_dataset = as.name(input$dataset), # Replace `input_dataset` with input$dataset input_vars = input$variable # Replace `input_vars` with input$variable ) new_data }) # Render the histogram from the updated teal_data object output$histogram_plot <- shiny::renderPlot({ result()[[\"my_plot\"]] # Access and render the plot stored in `new_data` }) # Reactive expression to get the generated code for the plot output$plot_code <- shiny::renderText({ teal.code::get_code(result()) # Retrieve and display the code for the updated `teal_data` object }) }) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"creating-the-custom-teal-module-function","dir":"Articles","previous_headings":"","what":"Creating the Custom teal Module Function","title":"Creating Custom Modules","text":"teal::module() function allows encapsulate UI server logic teal module, making reusable ready integrate teal application. setting datanames = \"\", give module access datasets specified teal_data object.","code":"# Custom histogram module creation create_histogram_module <- function(label = \"Histogram Module\") { teal::module( label = label, ui = histogram_module_ui, server = histogram_module_server, datanames = \"all\" ) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"integrating-the-custom-teal-module-into-a-teal-app","dir":"Articles","previous_headings":"","what":"Integrating the Custom teal Module into a teal App","title":"Creating Custom Modules","text":"custom teal module set , can now integrated teal app. ’ll use init() teal specify datasets modules used app, run app test newly created module. Congratulations! just created custom teal module used teal app! setup provides fully dynamic, user-controlled teal module allows interactive data exploration code visibility, enhancing usability transparency.","code":"library(teal) # Define datasets in `teal_data` data_obj <- teal_data( iris = iris, mtcars = mtcars ) # Initialize the teal app app <- init( data = data_obj, modules = modules(create_histogram_module()) ) # Run the app shiny::shinyApp(ui = app$ui, server = app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"whats-next","dir":"Articles","previous_headings":"","what":"What’s next?","title":"Creating Custom Modules","text":"Now ’ve mastered essentials building integrating modules teal, ’re ready explore advanced features. teal offers wide range capabilities enhance module’s functionality user experience.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"adding-reporting-to-a-module","dir":"Articles","previous_headings":"What’s next?","what":"Adding reporting to a module","title":"Creating Custom Modules","text":"Enhance custom teal module reporting features! Dive vignette see just simple add powerful reporting capabilities elevate module’s impact.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/creating-custom-modules.html","id":"using-standard-widgets-in-your-custom-module","dir":"Articles","previous_headings":"What’s next?","what":"Using standard widgets in your custom module","title":"Creating Custom Modules","text":"teal.widgets package provides various widgets can leveraged quickly create standard elements custom teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data as shiny Module","text":"Proper functioning teal application requires presence teal_data object. Typically, teal_data object created global environment passed data argument init. teal_data object contain elements necessary successful execution application’s modules. scenarios, however, application developers may opt postpone data operations application runtime. can done passing special shiny module data argument. teal_data_module function used build module following components: UI function; accepts one argument, id; defines user interface elements data module server function: accepts one argument, id; defines server logic data module, including data creation; must return reactive expression containing teal_data object teal run module application starts resulting teal_data object used throughout teal (analytic) modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"","what":"Creating data in-app","title":"Data as shiny Module","text":"One case postponing data operations datasets dynamic, frequently updated. data created kept global environment. Using teal_data_module enables creating dataset scratch every time user starts application. See ?qenv detailed explanation use within method.","code":"library(teal) data_module <- teal_data_module( ui = function(id) tags$div(), server = function(id) { moduleServer(id, function(input, output, session) { reactive({ data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"modification-of-data-in-app","dir":"Articles","previous_headings":"","what":"Modification of data in-app","title":"Data as shiny Module","text":"Another reason postpone data operations involve application user preprocessing stage. initial, constant form data can created global environment modified app starts. following example illustrates teal_data_module can utilized subset data based user inputs: Note running preprocessing code module opposed global environment increase app loading times. recommended keep constant code global environment move dynamic parts data module.","code":"data <- within(teal_data(), { dataset1 <- iris dataset2 <- mtcars }) data_module <- teal_data_module( ui = function(id) { ns <- NS(id) tags$div( selectInput(ns(\"species\"), \"Select species to keep\", choices = unique(iris$Species), multiple = TRUE ), actionButton(ns(\"submit\"), \"Submit\") ) }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data_modified <- within( data, dataset1 <- subset(dataset1, Species %in% selected), selected = input$species ) data_modified }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"warning","dir":"Articles","previous_headings":"","what":"Data as shiny Module","title":"Data as shiny Module","text":"using teal_data_module modify pre-existing teal_data object, crucial server function data object defined environment, otherwise server function able access data object. means server functions defined packages used.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-as-shiny-module.html","id":"extending-existing-teal_data_modules","dir":"Articles","previous_headings":"Modification of data in-app","what":"Extending existing teal_data_modules","title":"Data as shiny Module","text":"server logic teal_data_module can modified used app, using within function. allows teal_data object created teal_data_module processed . previous example, data_module takes predefined teal_data object allows app user select subset. following example modifies data_module new columns added data retrieved.","code":"data_module_2 <- within( data_module, { # Create new column with Ratio of Sepal.Width and Petal.Width dataset1$Ratio.Sepal.Petal.Width <- round(dataset1$Sepal.Width / dataset1$Petal.Width, digits = 2L) # Create new column that converts Miles per Galon to Liter per 100 Km dataset2$lp100km <- round(dataset2$mpg * 0.42514371, digits = 2L) } ) app <- init( data = data_module_2, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Data Transformations as shiny Module","text":"teal version 0.16 introduced new argument teal::module called transformers. argument allows pass list teal_data_module objects created using teal_transform_module() function. main benefit teal_transform_module() ability transform data passing module. feature allows extend regular behavior existing modules specifying custom data operations data inside module. teal_transform_module() Shiny module takes ui server arguments. provided, teal execute data transformations specified module loaded whenever data changes. server extend logic behind data manipulations, ui extends filter panel new UI elements orchestrate transformer inputs. vignette presents way manage custom data transformations teal apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"creating-your-first-custom-data-transformation-module","dir":"Articles","previous_headings":"","what":"Creating your first custom data transformation module","title":"Data Transformations as shiny Module","text":"initialize simple teal app pass iris mtcars input datasets.","code":"library(teal) data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) app <- init( data = data, modules = teal::example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"single-transformer","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Single Transformer","title":"Data Transformations as shiny Module","text":"Let’s create simple teal_transform_module returns first n number rows iris based user input. creating ui numericInput user input number rows displayed. server function take reactive data perform transformation return new reactive data. Note: recommended return reactive() teal_data() server code teal_transform_module robust maintaining reactivity Shiny. planning using eventReactive() server, event include data() (example eventReactive(list(input$, data()), {...})). discussion.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/data-transform-as-shiny-module.html","id":"multiple-transformers","dir":"Articles","previous_headings":"Creating your first custom data transformation module","what":"Multiple Transformers","title":"Data Transformations as shiny Module","text":"Note can add multiple teal transformers including teal_transform_module list. Let’s add another transformation mtcars dataset creates column rownames mtcars. Note module interactive UI elements.","code":"data <- within(teal_data(), { iris <- iris mtcars <- mtcars }) my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Number of rows to subset\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ), teal_transform_module( label = \"Custom transform for mtcars\", ui = function(id) { ns <- NS(id) tags$div( \"Adding rownames column to mtcars\" ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { mtcars$rownames <- rownames(mtcars) rownames(mtcars) <- NULL }) }) }) } ) ) app <- init( data = data, modules = teal::example_module(transformers = my_transformers) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/filter-panel.html","id":"teal-apps-with-the-filter-panel","dir":"Articles","previous_headings":"","what":"teal apps with the filter panel","title":"Filter Panel","text":"filter panel integral part teal applications included right side. Based selections made filter panel, filter expressions executed passing data teal modules. technical details filter panel extensively described teal.slice documentation. default, init initializes filter panel without active filters allows user add filters column. start teal application predefined filters, one must specify filter argument. following example four filters specified using teal_slice function wrapped together teal_slices.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = example_module(), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Sepal.Length\"), teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\"), teal_slice(dataname = \"CARS\", varname = \"mpg\", selected = c(20, Inf)), teal_slice(dataname = \"CARS\", expr = \"qsec < 20\", title = \"1/4 mile under 20 sec\", id = \"qsec_20\") ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/filter-panel.html","id":"filter-panel-respective-to-teal_module","dir":"Articles","previous_headings":"Extending teal.slice","what":"Filter panel respective to teal_module","title":"Filter Panel","text":"teal_module (see ?module) object contains datanames attribute determines data sets sent module. filter panel display data sets hide rest module active.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, CARS = mtcars), modules = modules( example_module(label = \"all datasets\"), example_module(label = \"IRIS only\", datanames = \"IRIS\"), example_module(label = \"CARS only\", datanames = \"CARS\"), example_module(label = \"no filter panel\", datanames = NULL) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/filter-panel.html","id":"global-and-module-specific-filter-panel","dir":"Articles","previous_headings":"Extending teal.slice","what":"Global and module specific filter panel","title":"Filter Panel","text":"teal contains teal_slices function extends original teal_slices found teal.slice adding two arguments: module_specific mapping. default init initializes app “global” filter panel, modules use filters. Setting module_specific = TRUE switches “module-specific” filter panel, module can different set filters active time. still possible set global filters shared among modules. One possible scenario depicted figure : filter 1 shared modules filter 2 shared module 1 module 3 filter 3 used module 2 filter 4 used module 1 filter 5 filter 6 active modules achieve described setup, one must set module_specific argument TRUE use mapping argument match filters modules. mapping takes named list element names correspond module labels, elements vectors teal_slice ids applied module startup. teal_slices listed element called \"global_filters\" applied modules. detailed explanation filter states, see teal.slice vignette.","code":"library(teal) app <- init( data = teal_data(mtcars = mtcars), modules = modules( example_module(label = \"module 1\"), example_module(label = \"module 2\"), example_module(label = \"module 3\"), example_module(label = \"module 4\") ), filter = teal_slices( # filters created with id teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"filter 1\"), teal_slice(dataname = \"mtcars\", varname = \"cyl\", id = \"filter 2\"), teal_slice(dataname = \"mtcars\", varname = \"disp\", id = \"filter 3\"), teal_slice(dataname = \"mtcars\", varname = \"hp\", id = \"filter 4\"), teal_slice(dataname = \"mtcars\", varname = \"drat\", id = \"filter 5\"), teal_slice(dataname = \"mtcars\", varname = \"wt\", id = \"filter 6\"), # module-specific filtering enabled module_specific = TRUE, # filters mapped to modules mapping = list( \"module 1\" = c(\"filter 2\", \"filter 4\"), \"module 2\" = \"filter 3\", \"module 3\" = \"filter 2\", global_filters = \"filter 1\" ) ) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Getting Started with teal","text":"teal shiny-based interactive exploration framework analyzing data, particular emphasis CDISC clinical trial data. teal applications allow users : “Pull” data external data sources Dynamically filter data used analyses Generate reproducible code regenerate -screen analyses Create download reports containing results analyses (analysis modules support reporting) addition, teal framework provides application developers : large suite custom-made standard analysis modules included applications logging framework facilitate debugging applications advanced users framework can also create new analysis modules can added teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"your-first-teal-application","dir":"Articles","previous_headings":"","what":"Your first teal application:","title":"Getting Started with teal","text":"simple teal application takes iris mtcars datasets displays contents: Hovering image shows teal application generated code. Every teal application composed following elements, can controlled app developer passing arguments init function: Application Title (browser’s tab title): title application. Application Header Footer (top bottom app): content placed top bottom application. example code: two modules named “Module 1” “Module 2”. Module Content (panel middle): outputs currently active module. example code: filter panel initialized filter Species variable iris dataset.","code":"library(teal) app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = modules( example_module(\"Module 1\"), example_module(\"Module 2\") ), filter = teal_slices( teal_slice(dataname = \"IRIS\", varname = \"Species\", selected = \"setosa\") ), title = build_app_title(title = \"My first teal app\"), header = h3(\"My first teal application\"), footer = tags$div(a(\"Powered by teal\", href = \"https://insightsengineering.github.io/teal/main/latest-tag/\")) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"creating-your-own-applications","dir":"Articles","previous_headings":"","what":"Creating your own applications","title":"Getting Started with teal","text":"key function use create teal application init, requires two mandatory arguments: data modules. optional arguments init, can used customize application. Please refer documentation init details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"application-data","dir":"Articles","previous_headings":"Creating your own applications","what":"Application data","title":"Getting Started with teal","text":"data argument init function specifies data used application. datasets used teal application must passed teal_data object. also possible specify relationships datasets using join_keys argument case datasets related. See vignette details. data available pulled remote source, init must receive teal_data_module specifies obtain desired datasets put teal_data object. See vignette details. order use CDISC clinical trial data teal application cdisc_data function used instead. Custom SDTM standards can handled teal_data join_keys. details, recommend exploring teal.data package documentation.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"modules","dir":"Articles","previous_headings":"Creating your own applications","what":"Modules","title":"Getting Started with teal","text":"modules argument init consists list teal modules (can wrapped together using function modules). Core teal developers created several universal teal modules can useful teal application. learn create modules, please explore Creating Custom Modules vignette. use predefined modules, see references links modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"defining-filters","dir":"Articles","previous_headings":"Creating your own applications","what":"Defining filters","title":"Getting Started with teal","text":"optional filter argument init allows initialize application predefined filters. details see Filter Panel vignette .","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"reporting","dir":"Articles","previous_headings":"Creating your own applications","what":"Reporting","title":"Getting Started with teal","text":"modules teal application support reporting (see teal.reporter details), users application can add outputs modules report. report can downloaded special Report Previewer module added application additional tab, users can view configure reports downloading . See details vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"reproducible-code","dir":"Articles","previous_headings":"Creating your own applications","what":"Reproducible code","title":"Getting Started with teal","text":"teal hands data reproducible code every module included application. Note teal display code, modules’ responsibility. example, example_module function used shows code main panel together outputs. details see vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/getting-started-with-teal.html","id":"where-to-go-next","dir":"Articles","previous_headings":"","what":"Where to go next","title":"Getting Started with teal","text":"learn teal framework recommend first exploring available analysis modules. example see: general analysis modules clinical trial reporting modules modules analyzing MultiAssayExperiment objects demo teal apps see: gallery sample apps based teal catalog Tables, Listings Graphs catalog Biomarker Analysis Templates Tables Graphs teal framework relies set supporting packages whose documentation provides -depth information. packages interest defining tealapplications : teal.data: defining data teal application. teal.slice: defining data filtering passing teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"data-in-teal-applications","dir":"Articles","previous_headings":"","what":"Data in teal Applications","title":"Including Data in teal Applications","text":"teal framework readily accepts general, non-relational data. Modules defined teal.modules.general package designed work well kind data. Relational data handled just well mechanism passing data applications virtually . includes clinical data conforms ADaM standard. working making framework extendable support data structures can added relative ease. Currently support offered MultiAssayExperiment class. applications use teal_data class data container. teal_data objects passed init build application, modified filter panel (applicable) passed modules. Thus, first step building teal app creating teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"general-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"General data","title":"Including Data in teal Applications","text":"teal_data object created calling teal_data function passing data objects name:value pairs. Note iris cars added datanames property data (see datanames property). sufficient run teal app.","code":"library(teal) # create teal_data data <- teal_data(iris = iris, cars = mtcars) # build app app <- init( data = data, modules = example_module() ) # run app shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"reproducible-data","dir":"Articles","previous_headings":"Data in teal Applications","what":"Reproducible data","title":"Including Data in teal Applications","text":"teal_data object stores data separate environment. Therefore, modifying stored datasets requires processing code evaluated environment. Following logic, one can create empty teal_data object populate evaluating code. can done using eval_code function , conveniently, using within function. key difference eval_code within former accepts code character vector language objects (calls expressions), within accepts inline code. See ?qenv details. Note first example data created passing data objects, code used create data objects unknown therefore process reproduced. Inspecting code app created reveals note preprocessing code absent. necessary code can supplied code argument teal_data function. Keep mind code executed teal_data’s environment, may reproduce environment. object considered unverified (see verified property). reproducibility required, recommend creating empty teal_data object evaluating code.","code":"# create empty object data_empty <- teal_data() # run code in the object data_populated_1 <- eval_code(data_empty, code = \"iris <- iris cars <- mtcars\") # alternative data_populated_2 <- within(data_empty, { iris <- iris cars <- mtcars }) data_with_code <- teal_data( iris = iris, cars = mtcars, code = \"iris <- iris cars <- mtcars\" )"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"code-from-file","dir":"Articles","previous_headings":"Data in teal Applications > Reproducible data","what":"code from file","title":"Including Data in teal Applications","text":"ability pass code character vector eval_code opens door using code stored file.","code":"# not run data_from_file <- teal_data() data_from_file <- eval_code(data, readLines(\"\"))"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"creating-data-in-app","dir":"Articles","previous_headings":"Data in teal Applications","what":"Creating data in-app","title":"Including Data in teal Applications","text":"one departure passing teal_data object init data exist environment app run, e.g. pulled remote source. cases teal_data_module must used. See vignette detailed description.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"clinical-data","dir":"Articles","previous_headings":"","what":"Clinical data","title":"Including Data in teal Applications","text":"Currently teal supports two specialized data formats.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"adam-data","dir":"Articles","previous_headings":"Clinical data","what":"ADaM data","title":"Including Data in teal Applications","text":"ADaM data model, defined CDISC standards, specifies relationships subject-level parent dataset observation-level child datasets. cdisc_data function takes advantage fact automatically set default joining keys (see join_keys property). example , two standard ADaM datasets (ADSL ADTTE) passed cdisc_data.","code":"# create cdisc_data data_cdisc <- cdisc_data(ADSL = teal.data::rADSL, ADTTE = teal.data::rADSL) names(data_cdisc) #> [1] \"ADSL\" \"ADTTE\" join_keys(data_cdisc) #> A join_keys object containing foreign keys between 2 datasets: #> ADSL: [STUDYID, USUBJID] #> <-- ADTTE: [STUDYID, USUBJID] #> ADTTE: [STUDYID, USUBJID, PARAMCD] #> --> ADSL: [STUDYID, USUBJID] app <- init( data = data_cdisc, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"multiassayexperiment-data","dir":"Articles","previous_headings":"Clinical data","what":"MultiAssayExperiment data","title":"Including Data in teal Applications","text":"MultiAssayExperiment package offers data structure representing analyzing multi-omics experiments involve multi-modal, high-dimensionality data, DNA mutations, protein RNA abundance, chromatin occupancy, etc., biological specimens. MultiAssayExperiment class described detail . MultiAssayExperiment objects (MAEs) placed teal_data just like normal objects. Due unique structure MAE, teal requires special considerations building teal modules. Therefore, guarantee modules work properly MAEs. package teal.modules.hermes developed specifically MAE mind reliable. filter panel supports MAEs box.","code":"library(MultiAssayExperiment) utils::data(miniACC) data_mae <- teal_data(MAE = miniACC) app <- init( data = data_mae, modules = example_module() ) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"join_keys","dir":"Articles","previous_headings":"teal_data properties","what":"join_keys","title":"Including Data in teal Applications","text":"Using relational data requires specifying joining keys pair datasets. Primary keys unique row identifiers individual datasets thus specified dataset. Foreign keys describe mapping variables datasets. Joining keys stored join_keys property, can set creating teal_data object, using join_keys argument, using join_keys function. detailed explanation join keys, see teal.data vignette. (back ADaM Data)","code":"ds1 <- data.frame( id = seq(1, 10), group = rep(c(\"A\", \"B\"), each = 5) ) ds2 <- data.frame( group = c(\"A\", \"B\"), condition = c(\"condition1\", \"condition2\") ) keys <- join_keys( join_key(\"DS1\", keys = \"id\"), join_key(\"DS2\", keys = \"group\"), join_key(\"DS1\", \"DS2\", keys = c(\"group\" = \"group\")) ) data_relational1 <- teal_data(DS1 = ds1, DS2 = ds2, join_keys = keys) data_relational2 <- teal_data(DS1 = ds1, DS2 = ds2) join_keys(data_relational2) <- keys"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"verified","dir":"Articles","previous_headings":"teal_data properties","what":"verified","title":"Including Data in teal Applications","text":"teal_data allows tracking code data creation data filtering data analysis whole process can reproduced. verified property designates whether reproducibility confirmed. teal_data objects created empty modified evaluating code within considered verified default. created data objects alone data objects code verified default, can become verified running verify function. detailed explanation verification, see teal.data vignette. (back Reproducible Data)","code":"data_with_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code <- teal_data(iris = iris, cars = mtcars, code = expression(iris <- iris, cars <- mtcars)) data_with_objects_and_code #> ✖ unverified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L] data_with_objects_and_code_ver <- verify(data_with_objects_and_code) data_with_objects_and_code_ver #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • cars: [L] #> • iris: [L]"},{"path":"https://insightsengineering.github.io/teal/main/articles/including-data-in-teal-applications.html","id":"further-reading","dir":"Articles","previous_headings":"","what":"Further reading","title":"Including Data in teal Applications","text":"complete guide teal_data class, please refer teal.data package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"motivation","dir":"Articles","previous_headings":"","what":"Motivation","title":"Modifying a teal Application With R Options","text":"R packages use options modify runtime behavior. usually specify sensible default values internal function arguments determine responses users actions. example, testthat uses option testthat.progress.max_fails define default number failed expectations testing functions terminate execution. adjustable values can exposed function parameters, confined option. vignette details options available package teal ’s supporting packages teal.logger, teal.widgets, teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"setting-an-option","dir":"Articles","previous_headings":"","what":"Setting an option","title":"Modifying a teal Application With R Options","text":"time interactive session, can change option using: way change options execution specific block code withr package like : line run option, digits, go back value line run. function getOption allows inspect value option: set, value option persists session, returns default value new session. Make sure change options teal-related packages loaded initialize options overwrite custom values.","code":"options(option_to_set = \"value\") withr::with_options(list(digits = 3), print(pi)) ## [1] 3.14 getOption(\"option_to_set\") ## [1] \"value\""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-bs_theme-bslibbs_theme-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.bs_theme (bslib::bs_theme object)","title":"Modifying a teal Application With R Options","text":"option controls bootstrap theme version used teal apps. Achieve better UX customized UI app. Please see vignette Bootstrap themes read functionality. Default: NULL","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-load_nest_code-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.load_nest_code (character)","title":"Modifying a teal Application With R Options","text":"value option appended top code rendered using Show R Code modal button. Default: \"# Add code install/load NEST environment \".","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-threshold_slider_vs_checkboxgroup-numeric","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.threshold_slider_vs_checkboxgroup (numeric)","title":"Modifying a teal Application With R Options","text":"threshold determines variable treated factor filter panel. number unique values variable less threshold variable treated factor instead original class. example, imagine teal.threshold_slider_vs_checkboxgroup equals 2. numeric variable c(1, 1, 1), one unique value, treated factor filter panel (filter panel !). filter panel creates checkbox widget filter values variable, factor variable, instead usual numeric range selector. Default: 5.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-basic_table_args-basic_table_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.basic_table_args (basic_table_args object)","title":"Modifying a teal Application With R Options","text":"specifies list arguments passed every call rtables::basic_table made teal application. can used format rtables without making changes application code. See documentation teal.widgets::basic_table_args information. Default: teal.widgets::basic_table_args().","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-ggplot2_args-ggplot2_args-object","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.ggplot2_args (ggplot2_args object)","title":"Modifying a teal Application With R Options","text":"option allows modifying labels themes ggplot2 plots teal application. See documentation teal.widgets::ggplot2_args information. Default: teal.widgets::ggplot2_args().","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-plot_dpi-integer-value-24-or-larger","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.plot_dpi (integer value 24 or larger)","title":"Modifying a teal Application With R Options","text":"option controls dots per inch graphs rendered downloaded using module plot_with_settings teal.widgets package. Default: 72","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-log_layout-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_layout (character)","title":"Modifying a teal Application With R Options","text":"defines layout log message used teal application. teal uses layout format emitted log messages. Read documentation teal.logger::register_logger information. must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"[{level}] {format(time, \\\"%Y-%m-%d %H:%M:%OS4\\\")} pid:{pid} token:[{token}] {ans} {msg}\". Note layout formatted glue package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-log_level-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.log_level (character)","title":"Modifying a teal Application With R Options","text":"logging level threshold used teal application. teal application emit logs level. See documentation logger::TRACE possible values logging threshold information . must set loading teal package(s). case option set attaching packages, please re-attach packages use correctly. Default: \"INFO\". Note two levels considered less severe \"INFO\": \"DEBUG\" \"TRACE\". order see log messages two levels well, change log level default \"TRACE\", least severe log level.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-show_js_log-logical","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.show_js_log (logical)","title":"Modifying a teal Application With R Options","text":"indicates whether print JavaScript console logs R console. set TRUE, logs printed; otherwise, won’t. Default: FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal-lockfile-mode-character","dir":"Articles","previous_headings":"Options used in a teal application","what":"teal.lockfile.mode (character)","title":"Modifying a teal Application With R Options","text":"enables compute renv lockfile shows button \"download lockfile\" footer. Values: \"auto\" - auto detect whether compute lockfile \"enabled\" - compute lockfile show \"download lockfile\" footer \"disabled\" - compute lockfile show \"download lockfile\" footer Default: \"auto\". read lockfile usage creation check ?teal::module_teal_lockfile.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal_logging","dir":"Articles","previous_headings":"Deprecated options","what":"teal_logging","title":"Modifying a teal Application With R Options","text":"Deprecated favor using teal.logger package logging.","code":""},{"path":"https://insightsengineering.github.io/teal/main/articles/teal-options.html","id":"teal_show_js_log","dir":"Articles","previous_headings":"Deprecated options","what":"teal_show_js_log","title":"Modifying a teal Application With R Options","text":"Deprecated favor teal.show_js_log (see ).","code":""},{"path":"https://insightsengineering.github.io/teal/main/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Dawid Kaledkowski. Author, maintainer. Pawel Rucki. Author. Aleksander Chlebowski. Author. Andre Verissimo. Author. Kartikeya Kirar. Author. Vedha Viyash. Author. Marcin Kosinski. Author. Adrian Waddell. Author. Chendi Liao. Reviewer. Dony Unardi. Reviewer. Nikolas Burkoff. Author. Mahmoud Hallal. Author. Maciej Nasinski. Author. Konrad Pagacz. Author. Junlue Zhao. Author. Tadeusz Lewandowski. Author. F. Hoffmann-La Roche AG. Copyright holder, funder. Maximilian Mordig. Contributor.","code":""},{"path":"https://insightsengineering.github.io/teal/main/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Kaledkowski D, Rucki P, Chlebowski , Verissimo , Kirar K, Viyash V, Kosinski M, Waddell , Burkoff N, Hallal M, Nasinski M, Pagacz K, Zhao J, Lewandowski T (2024). teal: Exploratory Web Apps Analyzing Clinical Trials Data. R package version 0.15.2.9082, https://github.com/insightsengineering/teal/, https://insightsengineering.github.io/teal/main/.","code":"@Manual{, title = {teal: Exploratory Web Apps for Analyzing Clinical Trials Data}, author = {Dawid Kaledkowski and Pawel Rucki and Aleksander Chlebowski and Andre Verissimo and Kartikeya Kirar and Vedha Viyash and Marcin Kosinski and Adrian Waddell and Nikolas Burkoff and Mahmoud Hallal and Maciej Nasinski and Konrad Pagacz and Junlue Zhao and Tadeusz Lewandowski}, year = {2024}, note = {R package version 0.15.2.9082, https://github.com/insightsengineering/teal/}, url = {https://insightsengineering.github.io/teal/main/}, }"},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"teal-interactive-exploratory-data-analysis-with-shiny-web-applications-","dir":"","previous_headings":"","what":"Exploratory Web Apps for Analyzing Clinical Trials Data","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"teal shiny-based interactive exploration framework analyzing data. teal applications require app developers specify: CDISC data, commonly used clinical trial reporting Independent datasets, example data.frame Related datasets, example set data.frames key columns enable data joins MultiAssayExperiment objects R data structures representing analyzing multi-omics experiments teal.modules.general: general modules exploring relational/independent/CDISC data teal.modules.clinical: modules specific CDISC data clinical trial reporting teal.modules.hermes: modules analyzing MultiAssayExperiment objects lot functionality teal framework derives following packages: teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.logger: standardizes logging within teal framework. teal.reporter: allows teal applications generate reports. Dive deeper teal comprehensive video guide. Please click image start learning:","code":""},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Alternatively, might also use development version.","code":"install.packages(\"teal\") # install.packages(\"pak\") pak::pak(\"insightsengineering/teal\")"},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"usage","dir":"","previous_headings":"","what":"Usage","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"Please see teal.gallery TLG Catalog see examples teal apps. Please start “Technical Blueprint” article, “Getting Started” article, package vignettes detailed guide.","code":"library(teal) app <- init( data = teal_data(iris = iris), modules = list( module( label = \"iris histogram\", server = function(input, output, session, data) { updateSelectInput(session = session, inputId = \"var\", choices = names(data()[[\"iris\"]])[1:4]) output$hist <- renderPlot({ req(input$var) hist(x = data()[[\"iris\"]][[input$var]]) }) }, ui = function(id) { ns <- NS(id) list( selectInput(inputId = ns(\"var\"), label = \"Column name\", choices = NULL), plotOutput(outputId = ns(\"hist\")) ) } ) ) ) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"getting-help","dir":"","previous_headings":"","what":"Getting help","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"encounter bug feature request, please file issue. questions, discussions, updates, use teal channel pharmaverse slack workspace.","code":""},{"path":"https://insightsengineering.github.io/teal/main/index.html","id":"acknowledgment","dir":"","previous_headings":"","what":"Acknowledgment","title":"Exploratory Web Apps for Analyzing Clinical Trials Data","text":"package result joint efforts many developers stakeholders. like thank everyone contributed far!","code":""},{"path":[]},{"path":[]},{"path":[]},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":null,"dir":"Reference","previous_headings":"","what":"Drive a teal application — TealAppDriver","title":"Drive a teal application — TealAppDriver","text":"Drive teal application Drive teal application","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Drive a teal application — TealAppDriver","text":"Extension shinytest2::AppDriver class methods driving teal application performing interactions shinytest2 tests.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver -> TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"Drive a teal application — TealAppDriver","text":"shinytest2::AppDriver$expect_download() shinytest2::AppDriver$expect_html() shinytest2::AppDriver$expect_js() shinytest2::AppDriver$expect_screenshot() shinytest2::AppDriver$expect_text() shinytest2::AppDriver$expect_unique_names() shinytest2::AppDriver$expect_values() shinytest2::AppDriver$get_chromote_session() shinytest2::AppDriver$get_dir() shinytest2::AppDriver$get_download() shinytest2::AppDriver$get_html() shinytest2::AppDriver$get_js() shinytest2::AppDriver$get_logs() shinytest2::AppDriver$get_screenshot() shinytest2::AppDriver$get_text() shinytest2::AppDriver$get_url() shinytest2::AppDriver$get_value() shinytest2::AppDriver$get_values() shinytest2::AppDriver$get_variant() shinytest2::AppDriver$get_window_size() shinytest2::AppDriver$log_message() shinytest2::AppDriver$run_js() shinytest2::AppDriver$set_inputs() shinytest2::AppDriver$set_window_size() shinytest2::AppDriver$stop() shinytest2::AppDriver$upload_file() shinytest2::AppDriver$view() shinytest2::AppDriver$wait_for_idle() shinytest2::AppDriver$wait_for_js() shinytest2::AppDriver$wait_for_value()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver$new() TealAppDriver$click() TealAppDriver$expect_no_shiny_error() TealAppDriver$expect_no_validation_error() TealAppDriver$expect_validation_error() TealAppDriver$set_input() TealAppDriver$navigate_teal_tab() TealAppDriver$active_ns() TealAppDriver$active_module_ns() TealAppDriver$active_module_element() TealAppDriver$active_module_element_text() TealAppDriver$active_filters_ns() TealAppDriver$active_data_summary_ns() TealAppDriver$active_data_summary_element() TealAppDriver$get_active_module_input() TealAppDriver$get_active_module_output() TealAppDriver$get_active_module_table_output() TealAppDriver$get_active_module_plot_output() TealAppDriver$set_active_module_input() TealAppDriver$get_active_filter_vars() TealAppDriver$get_active_data_summary_table() TealAppDriver$is_visible() TealAppDriver$get_active_data_filters() TealAppDriver$add_filter_var() TealAppDriver$remove_filter_var() TealAppDriver$set_active_filter_selection() TealAppDriver$get_attr() TealAppDriver$get_html_rvest() TealAppDriver$open_url() TealAppDriver$wait_for_active_module_value() TealAppDriver$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"Drive a teal application — TealAppDriver","text":"Initialize TealAppDriver object testing teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$new( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), landing_popup = NULL, timeout = rlang::missing_arg(), load_timeout = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"data, modules, filter, title, header, footer, landing_popup arguments passed init timeout (numeric) Default number milliseconds timeout timeout_ parameter TealAppDriver class. Defaults 20s. See shinytest2::AppDriver new method details change via options environment variables. load_timeout (numeric) long wait app load, ms. includes time start R. Defaults 100s. See shinytest2::AppDriver new method details change via options environment variables ... Additional arguments passed shinytest2::AppDriver$new","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Object class TealAppDriver","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-click-","dir":"Reference","previous_headings":"","what":"Method click()","title":"Drive a teal application — TealAppDriver","text":"Append parent shinytest2::AppDriver click method call waif_for_idle() method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$click(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"... arguments passed parent shinytest2::AppDriver click() method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-expect-no-shiny-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_shiny_error()","title":"Drive a teal application — TealAppDriver","text":"Check app shiny errors. checks global shiny errors. Note shiny errors dependent shiny server render captured teal module tab visited shiny trigger server computations tab invisible. , navigate module tab want test calling function. Although, catches errors hidden module tabs already rendered.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_shiny_error()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-expect-no-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_no_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_no_validation_error()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-expect-validation-error-","dir":"Reference","previous_headings":"","what":"Method expect_validation_error()","title":"Drive a teal application — TealAppDriver","text":"Check app validation errors. checks global shiny validation errors.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$expect_validation_error()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-set-input-","dir":"Reference","previous_headings":"","what":"Method set_input()","title":"Drive a teal application — TealAppDriver","text":"Set input teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-5","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id complete name space. value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-navigate-teal-tab-","dir":"Reference","previous_headings":"","what":"Method navigate_teal_tab()","title":"Drive a teal application — TealAppDriver","text":"Navigate teal tabs teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-6","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$navigate_teal_tab(tabs)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"tabs (character) Labels tabs navigate . order tabs important, start parent level tab. Note: case teal tab group duplicate names, first tab selected, wish select second tab name, use suffix \"_1\". wish select third tab name, use suffix \"_2\" .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-ns-","dir":"Reference","previous_headings":"","what":"Method active_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space different components teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-7","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(list) list active shiny name space teal components.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-module-ns-","dir":"Reference","previous_headings":"","what":"Method active_module_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting module content.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-8","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-4","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-module-element-","dir":"Reference","previous_headings":"","what":"Method active_module_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-9","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element(element)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-4","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-5","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-module-element-text-","dir":"Reference","previous_headings":"","what":"Method active_module_element_text()","title":"Drive a teal application — TealAppDriver","text":"Get text active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-10","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_module_element_text(element)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-5","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) text custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-6","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) text active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-filters-ns-","dir":"Reference","previous_headings":"","what":"Method active_filters_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting filter panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-11","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_filters_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-7","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-data-summary-ns-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_ns()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space interacting data-summary panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-12","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_ns()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-8","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space data-summary component.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-active-data-summary-element-","dir":"Reference","previous_headings":"","what":"Method active_data_summary_element()","title":"Drive a teal application — TealAppDriver","text":"Get active shiny name space bound custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-13","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$active_data_summary_element(element)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-6","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"element character(1) custom element name.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-9","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"(string) active shiny name space component bound input element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-input-","dir":"Reference","previous_headings":"","what":"Method get_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Get input module teal app. function access inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-14","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_input(input_id)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-7","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-10","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-15","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_output(output_id)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-8","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"output_id (character) shiny output id get value .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-11","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"value shiny output.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-table-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_table_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::table_with_settings DT::DTOutput teal app. function access outputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-16","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_table_output(table_id, which = 1)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-9","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"table_id (character(1)) id table active teal module's name space. (integer) one table, extracted. default look table built using teal.widgets::table_with_settings.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-12","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame table contents.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-module-plot-output-","dir":"Reference","previous_headings":"","what":"Method get_active_module_plot_output()","title":"Drive a teal application — TealAppDriver","text":"Get output module's teal.widgets::plot_with_settings teal app. function access plots name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-17","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_module_plot_output(plot_id)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-10","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"plot_id (character(1)) id plot active teal module's name space.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-13","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"src attribute character(1) vector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-set-active-module-input-","dir":"Reference","previous_headings":"","what":"Method set_active_module_input()","title":"Drive a teal application — TealAppDriver","text":"Set input module teal app. function set inputs name space current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-18","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_module_input(input_id, value, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-11","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input_id (character) shiny input id get value . value value set input . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-14","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-filter-vars-","dir":"Reference","previous_headings":"","what":"Method get_active_filter_vars()","title":"Drive a teal application — TealAppDriver","text":"Get active datasets can accessed via filter panel current active teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-19","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_filter_vars()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-data-summary-table-","dir":"Reference","previous_headings":"","what":"Method get_active_data_summary_table()","title":"Drive a teal application — TealAppDriver","text":"Get active data summary table","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-20","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_summary_table()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-15","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"data.frame","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-is-visible-","dir":"Reference","previous_headings":"","what":"Method is_visible()","title":"Drive a teal application — TealAppDriver","text":"Test DOM elements visible page JavaScript call.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-21","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$is_visible( selector, content_visibility_auto = FALSE, opacity_property = FALSE, visibility_property = FALSE )"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-12","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) CSS selector check visibility. CSS id return one element UI well formed. content_visibility_auto, opacity_property, visibility_property (logical(1)) See information https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-16","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Logical vector occurrences selector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-active-data-filters-","dir":"Reference","previous_headings":"","what":"Method get_active_data_filters()","title":"Drive a teal application — TealAppDriver","text":"Get active filter variables dataset teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-22","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_active_data_filters(dataset_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-13","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset get filter variables . NULL, filter variables datasets returned list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-add-filter-var-","dir":"Reference","previous_headings":"","what":"Method add_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Add new variable dataset filtered.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-23","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$add_filter_var(dataset_name, var_name, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-14","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset add filter variable . var_name (character) name variable add filter panel. ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-17","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-remove-filter-var-","dir":"Reference","previous_headings":"","what":"Method remove_filter_var()","title":"Drive a teal application — TealAppDriver","text":"Remove active filter variable dataset active filter variables panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-24","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$remove_filter_var(dataset_name = NULL, var_name = NULL)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-15","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset remove filter variable . NULL, filter variables removed. var_name (character) name variable remove filter panel. NULL, filter variables dataset removed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-18","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-set-active-filter-selection-","dir":"Reference","previous_headings":"","what":"Method set_active_filter_selection()","title":"Drive a teal application — TealAppDriver","text":"Set active filter values variable dataset active filter variable panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-25","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$set_active_filter_selection(dataset_name, var_name, input, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-16","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"dataset_name (character) name dataset set filter value . var_name (character) name variable set filter value . input value set filter . ... Additional arguments passed shinytest2::AppDriver$set_inputs","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-19","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"TealAppDriver object invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-attr-","dir":"Reference","previous_headings":"","what":"Method get_attr()","title":"Drive a teal application — TealAppDriver","text":"Extract html attribute (found selector).","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-26","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_attr(selector, attribute)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-17","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) specifying selector used get content specific node. attribute (character(1)) name attribute retrieve node specified selector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-20","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"character vector.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-get-html-rvest-","dir":"Reference","previous_headings":"","what":"Method get_html_rvest()","title":"Drive a teal application — TealAppDriver","text":"Wrapper around get_html passes output directly rvest::read_html.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-27","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$get_html_rvest(selector)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-18","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"selector (character(1)) passed get_html.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-21","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"XML document. Wrapper around get_url() method opens app browser.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-28","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$open_url()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"returns-22","dir":"Reference","previous_headings":"","what":"Returns","title":"Drive a teal application — TealAppDriver","text":"Nothing. Opens underlying teal app browser.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-wait-for-active-module-value-","dir":"Reference","previous_headings":"","what":"Method wait_for_active_module_value()","title":"Drive a teal application — TealAppDriver","text":"Waits specified input, output, export value. function serves wrapper around wait_for_value method, providing flexible interface waiting different types values within active module namespace.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-29","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$wait_for_active_module_value( input = rlang::missing_arg(), output = rlang::missing_arg(), export = rlang::missing_arg(), ... )"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-19","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"input, output, export name input, output, export value. one parameters may used. ... Must empty. Allows parameter expansion. Parameter additional value passed wait_for_value.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"Drive a teal application — TealAppDriver","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"usage-30","dir":"Reference","previous_headings":"","what":"Usage","title":"Drive a teal application — TealAppDriver","text":"","code":"TealAppDriver$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealAppDriver.html","id":"arguments-20","dir":"Reference","previous_headings":"","what":"Arguments","title":"Drive a teal application — TealAppDriver","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":null,"dir":"Reference","previous_headings":"","what":"TealReportCard — TealReportCard","title":"TealReportCard — TealReportCard","text":"Child class ReportCard used teal specific applications. addition parent methods, supports rendering teal specific elements source code, encodings panel content filter panel content part meta data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"super-class","dir":"Reference","previous_headings":"","what":"Super class","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard -> TealReportCard","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealReportCard — TealReportCard","text":"teal.reporter::ReportCard$append_content() teal.reporter::ReportCard$append_metadata() teal.reporter::ReportCard$append_plot() teal.reporter::ReportCard$append_rcode() teal.reporter::ReportCard$append_table() teal.reporter::ReportCard$append_text() teal.reporter::ReportCard$from_list() teal.reporter::ReportCard$get_content() teal.reporter::ReportCard$get_metadata() teal.reporter::ReportCard$get_name() teal.reporter::ReportCard$initialize() teal.reporter::ReportCard$reset() teal.reporter::ReportCard$set_name() teal.reporter::ReportCard$to_list()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealReportCard — TealReportCard","text":"TealReportCard$append_src() TealReportCard$append_fs() TealReportCard$append_encodings() TealReportCard$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-append-src-","dir":"Reference","previous_headings":"","what":"Method append_src()","title":"TealReportCard — TealReportCard","text":"Appends source code content meta data TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_src(src, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"src (character(1)) code text. ... rmarkdown R chunk parameter value. eval parameter always set FALSE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"Object class TealReportCard, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-append-fs-","dir":"Reference","previous_headings":"","what":"Method append_fs()","title":"TealReportCard — TealReportCard","text":"Appends filter state list content metadata TealReportCard. filter state list attribute named formatted, appends card otherwise uses default yaml::.yaml format list. filter state list empty, nothing appended content.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_fs(fs)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"fs (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-append-encodings-","dir":"Reference","previous_headings":"","what":"Method append_encodings()","title":"TealReportCard — TealReportCard","text":"Appends encodings list content metadata TealReportCard.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$append_encodings(encodings)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"encodings (list) list encodings selections teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealReportCard — TealReportCard","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealReportCard — TealReportCard","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealReportCard — TealReportCard","text":"","code":"TealReportCard$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealReportCard — TealReportCard","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealReportCard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealReportCard — TealReportCard","text":"","code":"## ------------------------------------------------ ## Method `TealReportCard$append_src` ## ------------------------------------------------ card <- TealReportCard$new()$append_src( \"plot(iris)\" ) card$get_content()[[1]]$get_content() #> [1] \"plot(iris)\" ## ------------------------------------------------ ## Method `TealReportCard$append_encodings` ## ------------------------------------------------ card <- TealReportCard$new()$append_encodings(list(variable1 = \"X\")) card$get_content()[[1]]$get_content() #> [1] \"Selected Options\""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":null,"dir":"Reference","previous_headings":"","what":"TealSlicesBlock — TealSlicesBlock","title":"TealSlicesBlock — TealSlicesBlock","text":"Specialized TealSlicesBlock block managing filter panel content reports.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"super-classes","dir":"Reference","previous_headings":"","what":"Super classes","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock -> teal.reporter::TextBlock -> TealSlicesBlock","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"TealSlicesBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock$get_content() teal.reporter::TextBlock$get_available_styles() teal.reporter::TextBlock$get_style() teal.reporter::TextBlock$set_style()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"TealSlicesBlock — TealSlicesBlock","text":"TealSlicesBlock$new() TealSlicesBlock$set_content() TealSlicesBlock$from_list() TealSlicesBlock$to_list() TealSlicesBlock$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$new(content = teal_slices(), style = \"verbatim\")"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function. style (character(1)) string specifying style apply.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"TealSlicesBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object content parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"Object class TealSlicesBlock, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-set-content-","dir":"Reference","previous_headings":"","what":"Method set_content()","title":"TealSlicesBlock — TealSlicesBlock","text":"Sets content TealSlicesBlock. Sets content YAML text represents list generated teal_slices. list displays limited number fields teal_slice objects, list sufficient conclude filters applied. selected field teal_slice object range, displayed \"min\"","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$set_content(content)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-from-list-","dir":"Reference","previous_headings":"","what":"Method from_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Create TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$from_list(x)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"x (named list) two fields text style. Use get_available_styles method get possible styles.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\"))"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-to-list-","dir":"Reference","previous_headings":"","what":"Method to_list()","title":"TealSlicesBlock — TealSlicesBlock","text":"Convert TealSlicesBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$to_list()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"TealSlicesBlock — TealSlicesBlock","text":"named list text style.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"examples-1","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list()"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"TealSlicesBlock — TealSlicesBlock","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"TealSlicesBlock — TealSlicesBlock","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/TealSlicesBlock.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"TealSlicesBlock — TealSlicesBlock","text":"","code":"## ------------------------------------------------ ## Method `TealSlicesBlock$from_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$from_list(list(text = \"sth\", style = \"default\")) ## ------------------------------------------------ ## Method `TealSlicesBlock$to_list` ## ------------------------------------------------ TealSlicesBlock <- getFromNamespace(\"TealSlicesBlock\", \"teal\") block <- TealSlicesBlock$new() block$to_list() #> $text #> [1] \"\" #> #> $style #> [1] \"verbatim\" #>"},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Append a teal_module to children of a teal_modules object — append_module","title":"Append a teal_module to children of a teal_modules object — append_module","text":"Append teal_module children teal_modules object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append a teal_module to children of a teal_modules object — append_module","text":"","code":"append_module(modules, module)"},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append a teal_module to children of a teal_modules object — append_module","text":"modules (teal_modules) module (teal_module) object appended onto children modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/append_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Append a teal_module to children of a teal_modules object — append_module","text":"teal_modules object module appended.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":null,"dir":"Reference","previous_headings":"","what":"Compare bookmarks. — bookmarks_identical","title":"Compare bookmarks. — bookmarks_identical","text":"Test two bookmarks store identical state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compare bookmarks. — bookmarks_identical","text":"","code":"bookmarks_identical(book1, book2)"},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compare bookmarks. — bookmarks_identical","text":"book1, book2 bookmark directories stored shiny_bookmarks/; default two recently modified directories","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compare bookmarks. — bookmarks_identical","text":"Invisible NULL bookmarks identical bookmarks test. FALSE inconsistencies detected.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Compare bookmarks. — bookmarks_identical","text":"input environments compared one variable time identical, values bookmarks reported. States datatables stripped time element comparing time stamp always different. contents printed large contents informative. Elements present one bookmark absent also reported. Differences printed messages. values environments compared .equal.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/bookmarks_identical.html","id":"how-to-use","dir":"Reference","previous_headings":"","what":"How to use","title":"Compare bookmarks. — bookmarks_identical","text":"Open application, change relevant inputs (typically, ), create bookmark. open bookmark immediately create bookmark . restoring bookmarks occurred properly, two bookmarks store state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":null,"dir":"Reference","previous_headings":"","what":"Build app title with favicon — build_app_title","title":"Build app title with favicon — build_app_title","text":"helper function create browser title along logo.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Build app title with favicon — build_app_title","text":"","code":"build_app_title( title = \"teal app\", favicon = \"https://raw.githubusercontent.com/insightsengineering/hex-stickers/main/PNG/nest.png\" )"},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Build app title with favicon — build_app_title","text":"title (character) browser title teal app. favicon (character) path icon title. image/icon path can remote static path accessible shiny, like www/","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/build_app_title.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Build app title with favicon — build_app_title","text":"shiny.tag containing element adds title logo shiny app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls expression when condition is met — call_once_when","title":"Calls expression when condition is met — call_once_when","text":"Function postpones handlerExpr moment eventExpr (condition) returns TRUE, otherwise nothing happens.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls expression when condition is met — call_once_when","text":"","code":"call_once_when( eventExpr, handlerExpr, event.env = parent.frame(), handler.env = parent.frame(), ... )"},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls expression when condition is met — call_once_when","text":"eventExpr (quoted unquoted) logical expression represents event; can simple reactive value like input$click, call reactive expression like dataset(), even complex expression inside curly braces. handlerExpr expression call whenever eventExpr invalidated. side-effect-producing action (return value ignored). executed within isolate() scope. event.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. eventExpr quosure event.quoted TRUE, event.env ignored. handler.env parent environment reactive expression. default, calling environment, defining ordinary non-reactive expression. handlerExpr quosure handler.quoted TRUE, handler.env ignored. ... additional arguments passed observeEvent exception eventExpr allowed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/call_once_when.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls expression when condition is met — call_once_when","text":"observer.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in filters — check_filter_datanames","title":"Check datanames in filters — check_filter_datanames","text":"function checks whether datanames filters correspond data, returning character vector error messages TRUE checks pass.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in filters — check_filter_datanames","text":"","code":"check_filter_datanames(filters, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in filters — check_filter_datanames","text":"filters (teal_slices) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_filter_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in filters — check_filter_datanames","text":"character(1) containing error message TRUE validation passes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Check datanames in modules — check_modules_datanames","title":"Check datanames in modules — check_modules_datanames","text":"functions check specified datanames modules match data object, returning error messages TRUE successful validation. Two functions return error message different forms: check_modules_datanames returns character(1) basic assertion usage check_modules_datanames_html returns shiny.tag.list display app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check datanames in modules — check_modules_datanames","text":"","code":"check_modules_datanames(modules, datanames) check_modules_datanames_html(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check datanames in modules — check_modules_datanames","text":"modules (teal_modules) object datanames (character) names datasets available data object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in modules — check_modules_datanames","text":"TRUE validation passes, otherwise character(1) shiny.tag.list","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":null,"dir":"Reference","previous_headings":"","what":"Check that argument is reactive. — check_reactive","title":"Check that argument is reactive. — check_reactive","text":"Check argument reactive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check that argument is reactive. — check_reactive","text":"","code":"check_reactive(x, null.ok = FALSE) test_reactive(x, null.ok = FALSE) assert_reactive( x, null.ok = FALSE, .var.name = checkmate::vname(x), add = NULL )"},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check that argument is reactive. — check_reactive","text":"x [] Object check. null.ok [logical(1)] set TRUE, x may also NULL. case type check x performed, additional checks disabled. .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname. add [AssertCollection] Collection store assertion messages. See AssertCollection.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/check_reactive.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check that argument is reactive. — check_reactive","text":"Depending function prefix: check successful, functions assertClass/assert_class return x invisibly, whereas checkClass/check_class testClass/test_class return TRUE. check successful, assertClass/assert_class throws error message, testClass/test_class returns FALSE, checkClass/check_class return string error message. function expect_class always returns expectation.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":null,"dir":"Reference","previous_headings":"","what":"Application ID — create_app_id","title":"Application ID — create_app_id","text":"Creates App ID used match filter snapshots application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Application ID — create_app_id","text":"","code":"create_app_id(data, modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Application ID — create_app_id","text":"data (teal_data teal_data_module) accepted init modules (teal_modules) object accepted init","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Application ID — create_app_id","text":"single character string.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/create_app_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Application ID — create_app_id","text":"Calculate app ID used stamp filter state snapshots. App ID hash app's data modules. See \"transferring snapshots\" section ?snapshot.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":null,"dir":"Reference","previous_headings":"","what":"Capture error and decorate error message. — decorate_err_msg","title":"Capture error and decorate error message. — decorate_err_msg","text":"Capture error decorate error message.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Capture error and decorate error message. — decorate_err_msg","text":"","code":"decorate_err_msg(x, pre = character(0), post = character(0))"},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Capture error and decorate error message. — decorate_err_msg","text":"x object evaluate pre (character(1)) string prepend error message post (character(1)) string append error message","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/decorate_err_msg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Capture error and decorate error message. — decorate_err_msg","text":"x error, otherwise throws error decorated message","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":null,"dir":"Reference","previous_headings":"","what":"Deep copy teal_slices — deep_copy_filter","title":"Deep copy teal_slices — deep_copy_filter","text":"important create new copy teal_slices starting new shiny session. Otherwise, object shared multiple users created global environment shiny session starts.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deep copy teal_slices — deep_copy_filter","text":"","code":"deep_copy_filter(filter)"},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Deep copy teal_slices — deep_copy_filter","text":"filter (teal_slices)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/deep_copy_filter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Deep copy teal_slices — deep_copy_filter","text":"teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Adds signature protection to the datanames in the data — .add_signature_to_data","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"Adds signature protection datanames data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"","code":".add_signature_to_data(data)"},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"data (teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-add_signature_to_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adds signature protection to the datanames in the data — .add_signature_to_data","text":"teal_data additional code signature datanames","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":null,"dir":"Reference","previous_headings":"","what":"Get code that tests the integrity of the reproducible data — .get_hashes_code","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"Get code tests integrity reproducible data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"","code":".get_hashes_code(data, datanames = names(data))"},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"data (teal_data) object holding data datanames (character) names datasets","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-get_hashes_code.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get code that tests the integrity of the reproducible data — .get_hashes_code","text":"character vector code lines.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-smart_rbind.html","id":null,"dir":"Reference","previous_headings":"","what":"Smart rbind — .smart_rbind","title":"Smart rbind — .smart_rbind","text":"Combine data.frame objects different columns","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-smart_rbind.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Smart rbind — .smart_rbind","text":"","code":".smart_rbind(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/dot-smart_rbind.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Smart rbind — .smart_rbind","text":"... (data.frame)","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"An example teal module — example_module","text":"","code":"example_module( label = \"example teal module\", datanames = \"all\", transformers = list() )"},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"An example teal module — example_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"An example teal module — example_module","text":"teal module can included modules argument init().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/example_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"An example teal module — example_module","text":"","code":"app <- init( data = teal_data(IRIS = iris, MTCARS = mtcars), modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract all transformers from modules. — extract_transformers","title":"Extract all transformers from modules. — extract_transformers","text":"Extract transformers modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract all transformers from modules. — extract_transformers","text":"","code":"extract_transformers(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract all transformers from modules. — extract_transformers","text":"modules teal_modules teal_module","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/extract_transformers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract all transformers from modules. — extract_transformers","text":"list teal_transform_module nested way input modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":null,"dir":"Reference","previous_headings":"","what":"Get client timezone — get_client_timezone","title":"Get client timezone — get_client_timezone","text":"User timezone browser may different one server. script can run register shiny input contains information timezone browser.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get client timezone — get_client_timezone","text":"","code":"get_client_timezone(ns)"},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get client timezone — get_client_timezone","text":"ns (function) namespace function passed session object shiny server. shiny modules allow proper name spacing registered input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_client_timezone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get client timezone — get_client_timezone","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_rcode_libraries.html","id":null,"dir":"Reference","previous_headings":"","what":"Generates library calls from current session info — get_rcode_libraries","title":"Generates library calls from current session info — get_rcode_libraries","text":"Function create multiple library calls current session info ensure reproducible code works.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_rcode_libraries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generates library calls from current session info — get_rcode_libraries","text":"","code":"get_rcode_libraries()"},{"path":"https://insightsengineering.github.io/teal/main/reference/get_rcode_libraries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generates library calls from current session info — get_rcode_libraries","text":"Character vector library() calls.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Get unique labels — get_unique_labels","title":"Get unique labels — get_unique_labels","text":"Get unique labels modules avoid namespace conflicts.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get unique labels — get_unique_labels","text":"","code":"get_unique_labels(labels)"},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get unique labels — get_unique_labels","text":"labels (character) vector labels","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/get_unique_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get unique labels — get_unique_labels","text":"(character) vector unique labels","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include CSS files from /inst/css/ package directory to application header — include_css_files","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"","code":"include_css_files(pattern = \"*\")"},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"pattern (character) pattern files included","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_css_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include CSS files from /inst/css/ package directory to application header — include_css_files","text":"HTML code includes CSS files.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Include JS files from /inst/js/ package directory to application header — include_js_files","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"","code":"include_js_files(pattern = NULL, except = NULL)"},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"pattern (character) pattern files included, passed system.file except (character) vector basename filenames excluded","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Include JS files from /inst/js/ package directory to application header — include_js_files","text":"HTML code includes JS files.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":null,"dir":"Reference","previous_headings":"","what":"Code to include teal CSS and JavaScript files — include_teal_css_js","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"useful want use JavaScript CSS files used teal application. also useful running standalone modules teal correct styles. Also initializes shinyjs can use .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"","code":"include_teal_css_js()"},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"shiny.tag.list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/include_teal_css_js.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Code to include teal CSS and JavaScript files — include_teal_css_js","text":"Simply add include_teal_css_js() one UI elements.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":null,"dir":"Reference","previous_headings":"","what":"Create the server and UI function for the shiny app — init","title":"Create the server and UI function for the shiny app — init","text":"End-users: important function start teal app composed teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create the server and UI function for the shiny app — init","text":"","code":"init( data, modules, filter = teal_slices(), title = build_app_title(), header = tags$p(), footer = tags$p(), id = character(0), landing_popup = NULL )"},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create the server and UI function for the shiny app — init","text":"data (teal_data teal_data_module) constructing data object, refer teal_data() teal_data_module(). datanames set teal_data object, defaults teal_data environment used. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices(). title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. landing_popup (teal_module_landing) Optionally, landing_popup_module show soon teal app initialized.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create the server and UI function for the shiny app — init","text":"Named list containing server UI functions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/init.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create the server and UI function for the shiny app — init","text":"","code":"app <- init( data = within( teal_data(), { new_iris <- transform(iris, id = seq_len(nrow(iris))) new_mtcars <- transform(mtcars, id = seq_len(nrow(mtcars))) } ), modules = modules( module( label = \"data source\", server = function(input, output, session, data) {}, ui = function(id, ...) tags$div(p(\"information about data source\")), datanames = \"all\" ), example_module(label = \"example teal module\"), module( \"Iris Sepal.Length histogram\", server = function(input, output, session, data) { output$hist <- renderPlot( hist(data()[[\"new_iris\"]]$Sepal.Length) ) }, ui = function(id, ...) { ns <- NS(id) plotOutput(ns(\"hist\")) }, datanames = \"new_iris\" ) ), filter = teal_slices( teal_slice(dataname = \"new_iris\", varname = \"Species\"), teal_slice(dataname = \"new_iris\", varname = \"Sepal.Length\"), teal_slice(dataname = \"new_mtcars\", varname = \"cyl\"), exclude_varnames = list(new_iris = c(\"Sepal.Width\", \"Petal.Width\")), module_specific = TRUE, mapping = list( `example teal module` = \"new_iris Species\", `Iris Sepal.Length histogram` = \"new_iris Species\", global_filters = \"new_mtcars cyl\" ) ), title = \"App title\", header = tags$h1(\"Sample App\"), footer = tags$p(\"Sample footer\") ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":null,"dir":"Reference","previous_headings":"","what":"Does the object make use of the arg — is_arg_used","title":"Does the object make use of the arg — is_arg_used","text":"object make use arg","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Does the object make use of the arg — is_arg_used","text":"","code":"is_arg_used(modules, arg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Does the object make use of the arg — is_arg_used","text":"modules (teal_module teal_modules) object arg (character(1)) names arguments checked formals teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/is_arg_used.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Does the object make use of the arg — is_arg_used","text":"logical whether object makes use arg.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Landing popup module — landing_popup_module","title":"Landing popup module — landing_popup_module","text":"Creates landing welcome popup teal applications. module used display popup dialog application starts. dialog blocks access application must closed button application can viewed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Landing popup module — landing_popup_module","text":"","code":"landing_popup_module( label = \"Landing Popup\", title = NULL, content = NULL, buttons = modalButton(\"Accept\") )"},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Landing popup module — landing_popup_module","text":"label (character(1)) Label module. title (character(1)) Text displayed popup title. content (character(1), shiny.tag shiny.tag.list) content popup. Passed ... shiny::modalDialog. See examples. buttons (shiny.tag shiny.tag.list) Typically modalButton actionButton. See examples.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Landing popup module — landing_popup_module","text":"teal_module (extended teal_landing_module class) used teal applications.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/landing_popup_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Landing popup module — landing_popup_module","text":"","code":"app1 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( content = \"A place for the welcome message or a disclaimer statement.\", buttons = modalButton(\"Proceed\") ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app1$ui, app1$server) } app2 <- init( data = teal_data(iris = iris), modules = modules( example_module() ), landing_popup = landing_popup_module( title = \"Welcome\", content = tags$b( \"A place for the welcome message or a disclaimer statement.\", style = \"color: red;\" ), buttons = tagList( modalButton(\"Proceed\"), actionButton(\"read\", \"Read more\", onclick = \"window.open('http://google.com', '_blank')\" ), actionButton(\"close\", \"Reject\", onclick = \"window.close()\") ) ) ) #> Initializing landing_popup_module #> module \"Landing Popup\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app2$ui, app2$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"App state management. — module_bookmark_manager","title":"App state management. — module_bookmark_manager","text":"Capture restore global (app) input state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"App state management. — module_bookmark_manager","text":"","code":"ui_bookmark_panel(id, modules) srv_bookmark_panel(id, modules) get_bookmarking_option() need_bookmarking(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"App state management. — module_bookmark_manager","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"App state management. — module_bookmark_manager","text":"Invisible NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"App state management. — module_bookmark_manager","text":"module introduces bookmarks teal apps: shiny bookmarking mechanism becomes enabled server-side bookmarks can created. bookmark manager presents button bookmark icon placed tab-bar. clicked, button creates bookmark opens modal displays bookmark URL. teal guarantee modules (teal_module objects) bookmarkable. , teal_bookmarkable attribute set TRUE. modules bookmarkable, bookmark manager modal displays warning bookmark button displays flag. order communicate external module bookmarkable, module developer set teal_bookmarkable attribute TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"App state management. — module_bookmark_manager","text":"bookmark URL contains app address /?_state_id_= suffix. directory created server, state application saved. Accessing bookmark URL opens new session app starts previously saved state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_bookmark_manager.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"App state management. — module_bookmark_manager","text":"enable bookmarking use either: shiny app using shinyApp(..., enableBookmarking = \"server\") (supported shinytest2) set options(shiny.bookmarkStore = \"server\") running app","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":null,"dir":"Reference","previous_headings":"","what":"Data summary — module_data_summary","title":"Data summary — module_data_summary","text":"Module utils display number rows subjects filtered unfiltered data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data summary — module_data_summary","text":"","code":"ui_data_summary(id) srv_data_summary(id, teal_data) get_filter_overview_wrapper(teal_data) get_filter_overview(current_data, initial_data, dataname, subject_keys) get_filter_overview_array(current_data, initial_data, dataname, subject_keys) get_filter_overview_MultiAssayExperiment(current_data, initial_data, dataname)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data summary — module_data_summary","text":"id (character(1)) shiny module instance id. teal_data (reactive returning teal_data) current_data (object) current object (filtering transforming). initial_data (object) initial object. dataname (character(1)) subject_keys (character) names columns determine single unique subjects","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data summary — module_data_summary","text":"NULL.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_data_summary.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data summary — module_data_summary","text":"Handling different data classes: get_filter_overview() pseudo S3 method variants : array (data.frame, DataFrame, array, Matrix SummarizedExperiment): Method variant can applied two-dimensional objects ncol() can used. MultiAssayExperiment: summary contains counts colData experiments. data types module displays data name warning icon details. Module includes also \"Show/Hide unsupported\" button toggle rows summary table containing datasets number observations calculated.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter panel module in teal — module_filter_data","title":"Filter panel module in teal — module_filter_data","text":"Creates filter panel module teal_data object returns teal_data. build way filter panel changes anything happens (e.g. module_init_data) triggering reactive events something changed module visible. Thanks special implementation modules' data recalculated modules currently displayed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter panel module in teal — module_filter_data","text":"","code":"ui_filter_data(id) srv_filter_data(id, datasets, active_datanames, data_rv, is_active) .make_filtered_teal_data(modules, data, datasets = NULL, datanames) .observe_active_filter_changed(datasets, is_active, active_datanames, data_rv) .get_filter_expr(datasets, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter panel module in teal — module_filter_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". active_datanames (reactive returning character) module's data names data_rv (reactive returning teal_data) modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter panel module in teal — module_filter_data","text":"eventReactive containing teal_data containing filtered objects filter code. eventReactive triggers conditions met: tab selected (is_active) filters changed (get_filter_expr different previous)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Manage multiple FilteredData objects — module_filter_manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Oversee filter states across entire application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manage multiple FilteredData objects — module_filter_manager","text":"","code":"ui_filter_manager_panel(id) srv_filter_manager_panel(id, slices_global) ui_filter_manager(id) srv_filter_manager(id, slices_global) srv_module_filter_manager(id, module_fd, slices_global)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Manage multiple FilteredData objects — module_filter_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) containing teal_slices. module_fd (FilteredData) Object containing data filtered single teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Module returns slices_global (reactiveVal) containing teal_slices object mapping.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"slices-global","dir":"Reference","previous_headings":"","what":"Slices global","title":"Manage multiple FilteredData objects — module_filter_manager","text":"key role maintaining module-specific filter states played .slicesGlobal object. reference class holds following fields: all_slices (reactiveVal) - reactive value containing filters registered app. module_slices_api (reactiveValues) - reactive field containing references modules' FilteredData object methods. moment used srv_filter_manager display filter states table combining informations all_slices FilteredData$get_available_teal_slices(). session new filters added all_slices unless module_snapshot_manager used restore previous state. Filters all_slices can activated deactivated module linked (ways) attr(, \"mapping\") : module's filter added removed FilteredData object, information passed SlicesGlobal updates attr(, \"mapping\") accordingly. mapping changes SlicesGlobal, filters set removed module's FilteredData.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_filter_manager.html","id":"filter-manager","dir":"Reference","previous_headings":"","what":"Filter manager","title":"Manage multiple FilteredData objects — module_filter_manager","text":"Filter-manager split two parts: ui/srv_filter_manager_panel - Called whole app. module observes changes filters slices_global displays table utilizing information mapping: (TRUE) - filter active module (FALSE) - filter inactive module (NA) - filter available module ui/srv_module_filter_manager - Called teal_module. Handling filter states single module keeping module FilteredData consistent slices_global, local filters always reflected slices_global mapping vice versa.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Module for teal — module_init_data","title":"Data Module for teal — module_init_data","text":"module manages data argument srv_teal. teal framework uses teal_data(), can provided various ways: Directly teal.data::teal_data() object. automatically convert reactive teal_data. reactive object returns teal.data::teal_data() object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Module for teal — module_init_data","text":"","code":"ui_init_data(id) srv_init_data(id, data)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data Module for teal — module_init_data","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data Module for teal — module_init_data","text":"reactive object returns: Output data. data fails returned error handled (tryCatch()) rest application can respond respectively.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/module_init_data.html","id":"reactive-teal-data-","dir":"Reference","previous_headings":"","what":"Reactive teal_data:","title":"Data Module for teal — module_init_data","text":"data application can reactively updated, prompting srv_teal() rebuild content accordingly. two methods creating interactive teal_data: Using reactive object provided outside teal application. scenario, reactivity controlled external module, srv_teal responds changes. Using teal_data_module(), embedded within teal application, allowing data resubmitted user needed. Since server teal_data_module() must return reactive teal_data object, methods (1 2) produce reactive behavior within teal application. distinction lies data control: first method involves external control, second method involves control custom module within app. details, see module_teal_data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve labels from teal_modules — module_labels","title":"Retrieve labels from teal_modules — module_labels","text":"Retrieve labels teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve labels from teal_modules — module_labels","text":"","code":"module_labels(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve labels from teal_modules — module_labels","text":"modules (teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_labels.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve labels from teal_modules — module_labels","text":"list containing labels modules. modules nested, function returns nested list labels.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract/Remove module(s) of specific class — extract_module","title":"Extract/Remove module(s) of specific class — extract_module","text":"Given teal_module teal_modules, return elements structure according class.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract/Remove module(s) of specific class — extract_module","text":"","code":"extract_module(modules, class) drop_module(modules, class)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract/Remove module(s) of specific class — extract_module","text":"modules (teal_modules) class class name teal_module extracted dropped.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_management.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract/Remove module(s) of specific class — extract_module","text":"extract_module, teal_module class class teal_modules containing modules class class. drop_module, opposite, teal_modules class class. teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter state snapshot management — module_snapshot_manager","title":"Filter state snapshot management — module_snapshot_manager","text":"Capture restore snapshots global (app) filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter state snapshot management — module_snapshot_manager","text":"","code":"ui_snapshot_manager_panel(id) srv_snapshot_manager_panel(id, slices_global) ui_snapshot_manager(id) srv_snapshot_manager(id, slices_global)"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter state snapshot management — module_snapshot_manager","text":"id (character(1)) shiny module instance id. slices_global (reactiveVal) contains teal_slices object containing teal_slices existing app, active inactive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter state snapshot management — module_snapshot_manager","text":"list containing snapshot history, element unlisted teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter state snapshot management — module_snapshot_manager","text":"module introduces snapshots: stored descriptions filter state entire application. Snapshots allow user save current filter state application later use session, well save file order share app developer users, turn can upload session. snapshot manager accessed camera icon tabset bar. beginning session presents three icons: camera, upload, circular arrow. Clicking camera captures snapshot, clicking upload adds snapshot file applies filter states therein, clicking arrow resets initial application state. snapshots added, show rows table select button save button.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots basically teal_slices objects, however, since module served separate instance FilteredData objects require shared state, teal_slice reactiveVal teal_slices stored . Therefore, teal_slices reversibly converted list lists representation (attributes maintained). Snapshots stored reactiveVal named list. first snapshot initial state application user can add snapshot whenever see fit. every snapshot except initial one, piece UI generated contains snapshot name, select button restore snapshot, save button save file. initial snapshot restored separate \"reset\" button. saved directly user welcome capture initial state snapshot save .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"snapshot-mechanics","dir":"Reference","previous_headings":"","what":"Snapshot mechanics","title":"Filter state snapshot management — module_snapshot_manager","text":"snapshot captured, user prompted name . Names displayed since used create button ids, hood converted syntactically valid strings. New snapshot names validated valid versions unique. Leading trailing white space trimmed. module can read global state application slices_global mapping_matrix. former provides list existing teal_slices latter says slice active module. name accepted, slices_global converted list lists - snapshot. snapshot contains mapping attribute initial application state (one restored), may reflect current one, mapping_matrix transformed obtain current mapping, .e. list , passed mapping argument teal_slices(), result current mapping. substituted snapshot's mapping attribute snapshot added snapshot list. restore app state, snapshot retrieved storage rebuilt teal_slices object. state FilteredData objects (provided datasets) cleared set anew according mapping attribute snapshot. snapshot set current content slices_global. save snapshot, snapshot retrieved reassembled just like restoring, saved file slices_store(). snapshot uploaded, first added storage just like newly created one, used restore app state much like snapshot taken storage. Upon clicking upload icon user prompted file upload may choose name new snapshot. name defaults name file (extension dropped) normal naming rules apply. Loading file yields teal_slices object, disassembled storage used directly restoring app state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"transferring-snapshots","dir":"Reference","previous_headings":"","what":"Transferring snapshots","title":"Filter state snapshot management — module_snapshot_manager","text":"Snapshots uploaded disk used application come , .e. application uses data modules. ensure case, init stamps teal_slices app id stored app_id attribute teal_slices object. snapshot restored file, app_id compared current app state match snapshot admitted session.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"bookmarks","dir":"Reference","previous_headings":"","what":"Bookmarks","title":"Filter state snapshot management — module_snapshot_manager","text":"onBookmark callback creates snapshot current filter state. done app session, module session. (snapshot retrieved module_teal order set initial app state restored app.) snapshot, previous snapshot history dumped values.rds file .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_snapshot_manager.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Filter state snapshot management — module_snapshot_manager","text":"Aleksander Chlebowski","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":null,"dir":"Reference","previous_headings":"","what":"teal main module — module_teal","title":"teal main module — module_teal","text":"Module create teal app. module can called directly instead init() included custom application. Please note init() adds reporter_previewer_module automatically, case calling ui/srv_teal directly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal main module — module_teal","text":"","code":"ui_teal( id, modules, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal main module — module_teal","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal main module — module_teal","text":"NULL invisibly","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal main module — module_teal","text":"Module responsible creating main shiny app layout initializing necessary components. module establishes reactive connection input data every component app. Reactive change data passed argument, reloads app possibly keeps input settings user can continue one left .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"data-flow-in-teal-application","dir":"Reference","previous_headings":"","what":"data flow in teal application","title":"teal main module — module_teal","text":"module supports multiple data inputs eventually, converted reactive returning teal_data module. reactive teal_data object several actions performed: data loading module_init_data data filtering module_filter_data data transformation module_transform_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal.html","id":"fallback-on-failure","dir":"Reference","previous_headings":"","what":"Fallback on failure","title":"teal main module — module_teal","text":"teal designed way app never crash error introduced custom shiny module provided app developer (e.g. teal_data_module(), teal_transform_module()). module returns failing object, app halt evaluation display warning message. App user always chance fix improper input continue without restarting session.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute and validate teal_data_module — module_teal_data","title":"Execute and validate teal_data_module — module_teal_data","text":"low level module handle teal_data_module execution validation. teal_transform_module() inherits teal_data_module() handled module . srv_teal() accepts various data objects eventually transformed reactive teal_data() standard data class whole teal framework.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute and validate teal_data_module — module_teal_data","text":"","code":"ui_teal_data(id, data_module = function(id) NULL) srv_teal_data( id, data_module = function(id) NULL, modules = NULL, validate_shiny_silent_error = TRUE, is_transformer_failed = reactiveValues() ) ui_validate_reactive_teal_data(id) srv_validate_reactive_teal_data( id, data, modules = NULL, validate_shiny_silent_error = FALSE, hide_validation_error = reactive(FALSE) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute and validate teal_data_module — module_teal_data","text":"id (character(1)) Module id data_module (teal_data_module) modules (teal_modules teal_module) datanames validation purpose validate_shiny_silent_error (logical) TRUE, shiny.silent.error validated is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message. data (reactive teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute and validate teal_data_module — module_teal_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_data.html","id":"data-validation","dir":"Reference","previous_headings":"","what":"data validation","title":"Execute and validate teal_data_module — module_teal_data","text":"Executed teal_data_module() validated output validated consistency. Output data invalid : teal_data_module() invalid server return reactive. Immediately crashes app! reactive throws shiny.error - happens module creating teal_data() fails. reactive returns qenv.error - happens teal_data() evaluates failing code. reactive object return teal_data(). teal_data() object lacks datanames specified modules argument. teal (observers srv_teal) always waits render app reactive teal_data returned. error 2-4 occurs, relevant error message displayed app user. issue resolved, app continue run. teal guarantees errors data crash app (except error 1).","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"Generate lockfile application's environment reproducibility","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"","code":"ui_teal_lockfile(id) srv_teal_lockfile(id) .teal_lockfile_process_invoke(lockfile_path) .renv_snapshot(lockfile_path) .is_lockfile_deps_installed() .is_disabled_lockfile_scenario()"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"lockfile_path (character) path lockfile.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"NULL","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"different-ways-of-creating-lockfile","dir":"Reference","previous_headings":"","what":"Different ways of creating lockfile","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"teal leverages renv::snapshot(), offers multiple methods lockfile creation. Working directory lockfile: teal, default, create implicit type lockfile uses renv::dependencies() detect R packages current project's working directory. DESCRIPTION-based lockfile: generate lockfile based DESCRIPTION file working directory, set renv::settings$snapshot.type(\"explicit\"). naming convention type follows renv::snapshot(). \"explicit\" type, refer renv::settings$package.dependency.fields() DESCRIPTION fields included lockfile. Custom files-based lockfile: specify custom files basis lockfile, set renv::settings$snapshot.type(\"custom\") configure renv.snapshot.filter option.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_lockfile.html","id":"lockfile-usage","dir":"Reference","previous_headings":"","what":"lockfile usage","title":"Generate lockfile for application's environment reproducibility — module_teal_lockfile","text":"creating lockfile, can restore application's environment using renv::restore().","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Calls all modules — module_teal_module","title":"Calls all modules — module_teal_module","text":"UI side teal_modules translated tabsetPanel teal_module tabPanel. , UI server called recursively tab separate module reflect nested structure modules argument.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calls all modules — module_teal_module","text":"","code":"ui_teal_module(id, modules, depth = 0L) # Default S3 method ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_modules' ui_teal_module(id, modules, depth = 0L) # S3 method for class 'teal_module' ui_teal_module(id, modules, depth = 0L) srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # Default S3 method srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_modules' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) ) # S3 method for class 'teal_module' srv_teal_module( id, data_rv, modules, datasets = NULL, slices_global, reporter = teal.reporter::Reporter$new(), data_load_status = reactive(\"ok\"), is_active = reactive(TRUE) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calls all modules — module_teal_module","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth (integer(1)) number helps determine depth modules nesting. data_rv (reactive returning teal_data) datasets (reactive returning FilteredData NULL) datasets passed parent module (srv_teal) dataset singleton implies filter-panel \"global\". NULL filter-panel \"module-specific\". slices_global (reactiveVal returning modules_teal_slices) see module_filter_manager data_load_status (reactive returning character) Determines action dependent data loading status: \"ok\" teal_data returned data loading. \"teal_data_module failed\" teal_data_module() return teal_data. Disables tabs buttons. \"external failed\" reactive passed srv_teal(data) return teal_data. Hides whole tab panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calls all modules — module_teal_module","text":"output currently active module. srv_teal_module.teal_module returns reactiveVal containing output called module. srv_teal_module.teal_modules returns output module selected input$active_tab.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":null,"dir":"Reference","previous_headings":"","what":"UI and server modules of teal — module_teal_with_splash","title":"UI and server modules of teal — module_teal_with_splash","text":"Please use module_teal instead.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"UI and server modules of teal — module_teal_with_splash","text":"","code":"ui_teal_with_splash( id, data, title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal_with_splash(id, data, modules, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"UI and server modules of teal — module_teal_with_splash","text":"id (character) Optionally, string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature. data (teal_data, teal_data_module, reactive returning teal_data) data application depend . title (shiny.tag character(1)) Optionally, browser window title. Defaults title \"teal app\" icon NEST. Can created using build_app_title() passing valid shiny.tag head tag title link tag. header (shiny.tag character(1)) Optionally, header app. footer (shiny.tag character(1)) Optionally, footer app. modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. filter (teal_slices) Optionally, specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_teal_with_splash.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"UI and server modules of teal — module_teal_with_splash","text":"Returns reactive expression containing teal_data object data loaded NULL .","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Module to transform reactive teal_data — module_transform_data","title":"Module to transform reactive teal_data — module_transform_data","text":"Module calls multiple module_teal_data sequence reactive teal_data output one module handed following module's input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Module to transform reactive teal_data — module_transform_data","text":"","code":"ui_transform_data(id, transformers = list(), class = \"well\") srv_transform_data( id, data, transformers = list(), modules, is_transformer_failed = reactiveValues() )"},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Module to transform reactive teal_data — module_transform_data","text":"id (character(1)) Module id transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). data (reactive teal_data) modules (teal_modules teal_module) datanames validation purpose is_transformer_failed (reactiveValues) contains logical flags named transformer. Help determine previous transformer failed, following transformers can disabled display generic failure message.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/module_transform_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Module to transform reactive teal_data — module_transform_data","text":"reactive teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"Retrieve teal_bookmarkable attribute teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"","code":"modules_bookmarkable(modules)"},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"modules (teal_modules teal_module) object","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_bookmarkable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve teal_bookmarkable attribute from teal_modules — modules_bookmarkable","text":"named list structure modules TRUE FALSE values indicating whether module bookmarkable.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":null,"dir":"Reference","previous_headings":"","what":"Get module depth — modules_depth","title":"Get module depth — modules_depth","text":"Depth starts 0, single teal.module depth 0. Nesting increases overall depth 1.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get module depth — modules_depth","text":"","code":"modules_depth(modules, depth = 0L)"},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get module depth — modules_depth","text":"modules (list teal_modules teal_module) Nested list teal_modules teal_module objects single teal_modules teal_module object. specific output modules displayed teal application. See modules() module() details. depth optional integer determining current depth level","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/modules_depth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get module depth — modules_depth","text":"Depth level given module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":null,"dir":"Reference","previous_headings":"","what":"Template function for TealReportCard creation and customization — report_card_template","title":"Template function for TealReportCard creation and customization — report_card_template","text":"function generates report card title, optional description, option append filter state list.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Template function for TealReportCard creation and customization — report_card_template","text":"","code":"report_card_template( title, label, description = NULL, with_filter, filter_panel_api )"},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Template function for TealReportCard creation and customization — report_card_template","text":"title (character(1)) title card (unless overwritten label) label (character(1)) label provided user adding card description (character(1)) optional, additional description with_filter (logical(1)) flag indicating add filter state filter_panel_api (FilterPanelAPI) object API allows generation filter state report","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/report_card_template.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Template function for TealReportCard creation and customization — report_card_template","text":"(TealReportCard) populated title, description filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a teal module for previewing a report — reporter_previewer_module","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"function wraps teal.reporter::reporter_previewer_ui() teal.reporter::reporter_previewer_srv() teal_module used teal applications. creating teal application using init() module added application automatically teal_modules support report generation.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"","code":"reporter_previewer_module(label = \"Report previewer\", server_args = list())"},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server_args (named list) Arguments passed teal.reporter::reporter_previewer_srv().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/reporter_previewer_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a teal module for previewing a report — reporter_previewer_module","text":"teal_module (extended teal_module_previewer class) containing teal.reporter previewer functionality.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":null,"dir":"Reference","previous_headings":"","what":"Restore value from bookmark. — restoreValue","title":"Restore value from bookmark. — restoreValue","text":"Get value bookmark return default.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Restore value from bookmark. — restoreValue","text":"","code":"restoreValue(value, default)"},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Restore value from bookmark. — restoreValue","text":"value (character(1)) name value restore default fallback value","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Restore value from bookmark. — restoreValue","text":"application restored server-side bookmark, variable specified value values environment. Otherwise default.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/restoreValue.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Restore value from bookmark. — restoreValue","text":"Bookmarks can store inputs also arbitrary values. values stored onBookmark callbacks restored onBookmarked callbacks, placed values environment session$restoreContext field. Using teal_data_module makes impossible run callbacks app becomes ready modules execute callbacks registered. cases stored values can still recovered session object directly. Note variable names values environment prefixed module name space names, therefore, using function modules, value must run name space function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":null,"dir":"Reference","previous_headings":"","what":"Run JS file from /inst/js/ package directory — run_js_files","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"triggered server execute client rather triggered directly client. Unlike include_js_files includes JavaScript functions, run_js actually executes JavaScript functions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"","code":"run_js_files(files)"},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"files (character) vector filenames.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/run_js_files.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Run JS file from /inst/js/ package directory — run_js_files","text":"system.file used access files packages, work devtools. Therefore, redefine method package needed. Thus, export method.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":null,"dir":"Reference","previous_headings":"","what":"Show R code modal — show_rcode_modal","title":"Show R code modal — show_rcode_modal","text":"Use shiny::showModal() function show R code inside.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Show R code modal — show_rcode_modal","text":"","code":"show_rcode_modal(title = NULL, rcode, session = getDefaultReactiveDomain())"},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Show R code modal — show_rcode_modal","text":"title (character(1)) Title modal, displayed first comment R code. rcode (character) vector R code show inside modal. session (ShinySession) optional shiny session object, defaults shiny::getDefaultReactiveDomain().","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/show_rcode_modal.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Show R code modal — show_rcode_modal","text":"shiny::showModal()","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":null,"dir":"Reference","previous_headings":"","what":"Store and restore teal_slices object — slices_store","title":"Store and restore teal_slices object — slices_store","text":"Functions write teal_slices object file JSON format, also restore object disk.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Store and restore teal_slices object — slices_store","text":"","code":"slices_store(tss, file) slices_restore(file)"},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Store and restore teal_slices object — slices_store","text":"tss (teal_slices) object stored. file (character(1)) file path teal_slices object saved restored. file extension \".json\".","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Store and restore teal_slices object — slices_store","text":"slices_store returns NULL, invisibly. slices_restore returns teal_slices object restored file.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/slices_store.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Store and restore teal_slices object — slices_store","text":"Date date time objects stored following formats: Date class converted \"ISO8601\" standard (YYYY-MM-DD). POSIX*t classes converted character using format.POSIX*t(usetz = TRUE, tz = \"UTC\") (YYYY-MM-DD HH:MM:SS UTC, UTC Coordinated Universal Time timezone short-code). format assumed slices_restore. POSIX*t objects selected choices fields teal_slice objects always printed UTC timezone well.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a tdata object — tdata","title":"Create a tdata object — tdata","text":"Recent changes teal cause modules fail modules expect tdata object passed data argument instead receive teal_data object, additionally wrapped reactive expression server functions. order easily adapt modules without proper refactor, use function downgrade data argument.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a tdata object — tdata","text":"","code":"new_tdata(...) tdata2env(...) get_code_tdata(...) # S3 method for class 'tdata' join_keys(...) get_metadata(...) as_tdata(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a tdata object — tdata","text":"... ignored","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a tdata object — tdata","text":"nothing","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal-package.html","id":null,"dir":"Reference","previous_headings":"","what":"teal: Interactive exploration of clinical trials data — teal-package","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"teal package provides shiny based framework creating interactive data analysis environment.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"learn mode package, visit project website read init() manual page.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/teal-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"teal: Interactive exploration of clinical trials data — teal-package","text":"Maintainer: Dawid Kaledkowski dawid.kaledkowski@roche.com (ORCID) Authors: Pawel Rucki pawel.rucki@roche.com Aleksander Chlebowski aleksander.chlebowski@contractors.roche.com (ORCID) Andre Verissimo andre.verissimo@roche.com (ORCID) Kartikeya Kirar kartikeya.kirar@businesspartner.roche.com Vedha Viyash vedha.viyash@roche.com Marcin Kosinski marcin.kosinski.mk1@roche.com Adrian Waddell adrian.waddell@gene.com Nikolas Burkoff Mahmoud Hallal Maciej Nasinski Konrad Pagacz Junlue Zhao Tadeusz Lewandowski contributors: Chendi Liao chendi.liao@roche.com [reviewer] Dony Unardi unardid@gene.com [reviewer] F. Hoffmann-La Roche AG [copyright holder, funder] Maximilian Mordig [contributor]","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal applications — teal_data_module","title":"Data module for teal applications — teal_data_module","text":"Create teal_data_module object evaluate code history tracking.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal applications — teal_data_module","text":"","code":"teal_data_module(ui, server, label = \"data module\", once = TRUE) # S4 method for class 'teal_data_module,character' eval_code(object, code) # S3 method for class 'teal_data_module' within(data, expr, ...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal applications — teal_data_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id)) shiny module server function; must take id argument; must return reactive expression containing teal_data object label (character(1)) Label module. (logical(1)) TRUE, data module shown disappear successful data loading. App user longer able interact module anymore. FALSE, data module can reused multiple times. App user able interact change data output module multiple times. object (teal_data_module) code (character language) code evaluate. character, comments retained. data (teal_data_module) object expr (expression) evaluate. Must inline code. See ... See Details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Data module for teal applications — teal_data_module","text":"teal_data_module returns list class teal_data_module containing two elements, ui server provided via arguments. eval_code returns teal_data_module object delayed evaluation code module run. within returns teal_data_module object delayed evaluation expr module run.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal applications — teal_data_module","text":"teal_data_module creates shiny module interactively supply modify data teal application. module allows running code (creation modification) app starts reloads. body server function run app rather global environment. means run every time app starts, use sparingly. Pass module instead teal_data object call init(). Note server function must always return teal_data object wrapped reactive expression. See vignette vignette(\"data--shiny-module\", package = \"teal\") details. eval_code evaluates given code environment teal_data object created teal_data_module. code added @code slot teal_data. within convenience function evaluating inline code inside environment teal_data_module. accepts inline expressions (simple compound) allows injecting values expr ... argument: name:value pairs passed ..., name expr replaced value.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal applications — teal_data_module","text":"","code":"tdm <- teal_data_module( ui = function(id) { ns <- NS(id) actionButton(ns(\"submit\"), label = \"Load data\") }, server = function(id) { moduleServer(id, function(input, output, session) { eventReactive(input$submit, { data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) data }) }) } ) eval_code(tdm, \"dataset1 <- subset(dataset1, Species == 'virginica')\") #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE within(tdm, dataset1 <- subset(dataset1, Species == \"virginica\")) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE # use additional parameter for expression value substitution. valid_species <- \"versicolor\" within(tdm, dataset1 <- subset(dataset1, Species %in% species), species = valid_species) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> data_out <- server(id) #> decorate_err_msg( #> assert_reactive(data_out), #> pre = sprintf(\"From: 'teal_data_module()':\\nA 'teal_data_module' with \\\"%s\\\" label:\", label), #> post = \"Please make sure that this module returns a 'reactive` object containing 'teal_data' class of object.\" # nolint: line_length_linter. #> ) #> } #> #> #> attr(,\"label\") #> [1] \"data module\" #> attr(,\"class\") #> [1] \"teal_data_module\" #> attr(,\"once\") #> [1] TRUE"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a FilteredData — teal_data_to_filtered_data","title":"Create a FilteredData — teal_data_to_filtered_data","text":"Create FilteredData object teal_data object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a FilteredData — teal_data_to_filtered_data","text":"","code":"teal_data_to_filtered_data(x, datanames = names(x))"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a FilteredData — teal_data_to_filtered_data","text":"x (teal_data) object datanames (character) vector data set names include; must subset names(x)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_to_filtered_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a FilteredData — teal_data_to_filtered_data","text":"FilteredData object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":null,"dir":"Reference","previous_headings":"","what":"teal_data utils — teal_data_utilities","title":"teal_data utils — teal_data_utilities","text":"teal need recreate teal_data object due two operations: need append filter-data code objects evaluated FilteredData want avoid double-evaluation. need subset teal_data datanames used module, shorten obtainable R-code","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal_data utils — teal_data_utilities","text":"","code":".append_evaluated_code(data, code) .append_modified_data(data, objects) .subset_teal_data(data, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal_data utils — teal_data_utilities","text":"data (teal_data) code (character) code append object's code slot. objects (list) objects append object's environment. datanames (character) names datasets","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal_data utils — teal_data_utilities","text":"modified teal_data","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_data_utilities.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal_data utils — teal_data_utilities","text":"Due recreation teal_data object done simply using public teal.code teal.data methods.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":null,"dir":"Reference","previous_headings":"","what":"Create teal_module and teal_modules objects — teal_modules","title":"Create teal_module and teal_modules objects — teal_modules","text":"Create nested tab structure embed modules teal application.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"module( label = \"module\", server = function(id, data, ...) moduleServer(id, function(input, output, session) NULL), ui = function(id, ...) tags$p(paste0(\"This module has no UI (id: \", id, \" )\")), filters, datanames = \"all\", server_args = NULL, ui_args = NULL, transformers = list() ) modules(..., label = \"root\") # S3 method for class 'teal_module' format( x, indent = 0, is_last = FALSE, parent_prefix = \"\", what = c(\"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\"), ... ) # S3 method for class 'teal_modules' format(x, indent = 0, is_root = TRUE, is_last = FALSE, parent_prefix = \"\", ...) # S3 method for class 'teal_module' print(x, ...) # S3 method for class 'teal_modules' print(x, ...) set_datanames(modules, datanames)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create teal_module and teal_modules objects — teal_modules","text":"label (character(1)) Label shown navigation item module module group. modules() defaults \"root\". See Details. server (function) shiny module following arguments: id - teal set proper shiny namespace module (see shiny::moduleServer()). input, output, session - (optional; recommended) provided, shiny::callModule() used call module. shiny 1.5.0, recommended way use shiny::moduleServer() instead require arguments. data (optional) provided, module called teal_data object (.e. list reactive (filtered) data specified filters argument) value argument. datasets (optional) provided, module called FilteredData object value argument. (See teal.slice::FilteredData). reporter (optional) provided, module called Reporter object value argument. (See teal.reporter::Reporter). filter_panel_api (optional) provided, module called FilterPanelAPI object value argument. (See teal.slice::FilterPanelAPI). ... (optional) provided, server_args elements passed module named argument .... ui (function) shiny UI module function following arguments: id - teal set proper shiny namespace module. ... (optional) provided, ui_args elements passed module named argument .... filters (character) Deprecated. Use datanames instead. datanames (character) Names datasets relevant item. 2 reserved values specific behaviors: keyword \"\" includes datasets available data passed teal application. NULL hides sidebar panel completely. transformers specified, datanames automatically added datanames argument. server_args (named list) additional arguments passed server function. ui_args (named list) additional arguments passed UI function. transformers (list teal_data_module) applied transform data. transform module UI appear teal's sidebar panel. Transformers' datanames added datanames. See teal_transform_module(). ... modules(): (teal_module teal_modules) Objects wrap tab. format() print(): Arguments passed methods. x (teal_module teal_modules) Object format/print. indent (integer(1)) Indention level; nested element indented one level . is_last (logical(1)) Whether last item parent's children list. Affects tree branch character used (L- vs |-) parent_prefix (character(1)) prefix inherited parent nodes, used maintain tree structure nested levels (character) Specifies metadata display. Possible values: \"datasets\", \"properties\", \"ui_args\", \"server_args\", \"transformers\" is_root (logical(1)) Whether root node tree. used format.teal_modules(). Determines whether show \"TEAL ROOT\" header modules (teal_module teal_modules)","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() returns object class teal_module. modules() returns teal_modules object contains following fields: label: taken label argument. children: list containing objects passed .... List elements named label attribute converted valid shiny id.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create teal_module and teal_modules objects — teal_modules","text":"module() creates instance teal_module can placed teal application. modules() shapes structure application organizing teal_module within navigation panel. wraps teal_module teal_modules objects teal_modules object, results nested structure corresponding nested tabs final application. Note modules() label comes ..., must passed named argument, otherwise captured .... labels \"global_filters\" \"Report previewer\" reserved used mapping argument teal_slices() report previewer module reporter_previewer_module(), respectively.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"restricting-datasets-used-by-teal-module-","dir":"Reference","previous_headings":"","what":"Restricting datasets used by teal_module:","title":"Create teal_module and teal_modules objects — teal_modules","text":"datanames argument controls datasets used module’s server. datasets, passed via server's data argument, ones shown module's tab. datanames set \"\", datasets data object treated relevant. However, may include unnecessary datasets, : Proxy variables column modifications Temporary datasets used create final versions Connection objects exclude irrelevant datasets, use set_datanames() function change datanames \"\" specific names. Trying modify non-\"\" values set_datanames() result warning. Datasets names starting . ignored globally unless explicitly listed datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"datanames-with-transformers","dir":"Reference","previous_headings":"","what":"datanames with transformers","title":"Create teal_module and teal_modules objects — teal_modules","text":"transformers specified, datanames added module’s datanames, changes behavior follows: module(datanames) NULL transformers defined datanames, sidebar appear showing transformers' datasets, instead hidden. module(datanames) set specific values transformer datanames = \"\", module may receive extra datasets unnecessary","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_modules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create teal_module and teal_modules objects — teal_modules","text":"","code":"library(shiny) module_1 <- module( label = \"a module\", server = function(id, data) { moduleServer( id, module = function(input, output, session) { output$data <- renderDataTable(data()[[\"iris\"]]) } ) }, ui = function(id) { ns <- NS(id) tagList(dataTableOutput(ns(\"data\"))) }, datanames = \"all\" ) module_2 <- module( label = \"another module\", server = function(id) { moduleServer( id, module = function(input, output, session) { output$text <- renderText(\"Another Module\") } ) }, ui = function(id) { ns <- NS(id) tagList(textOutput(ns(\"text\"))) }, datanames = NULL ) modules <- modules( label = \"modules\", modules( label = \"nested modules\", module_1 ), module_2 ) app <- init( data = teal_data(iris = iris), modules = modules ) if (interactive()) { shinyApp(app$ui, app$server) } mod <- module( label = \"My Custom Module\", server = function(id, data, ...) {}, ui = function(id, ...) {}, datanames = c(\"ADSL\", \"ADTTE\"), transformers = list(), ui_args = list(a = 1, b = \"b\"), server_args = list(x = 5, y = list(p = 1)) ) cat(format(mod)) #> |- My Custom Module #> | |- Datasets : ADSL, ADTTE #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : a (numeric) #> | | b (character) #> | |- Server Arguments : x (numeric) #> | | y (list) #> | L- Transformers : custom_module <- function( label = \"label\", ui_args = NULL, server_args = NULL, datanames = \"all\", transformers = list(), bk = FALSE) { ans <- module( label, server = function(id, data, ...) {}, ui = function(id, ...) { }, datanames = datanames, transformers = transformers, ui_args = ui_args, server_args = server_args ) attr(ans, \"teal_bookmarkable\") <- bk ans } dummy_transformer <- teal_transform_module( label = \"Dummy Transform\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) plot_transformer <- teal_transform_module( label = \"Plot Settings\", ui = function(id) div(\"(does nothing)\"), server = function(id, data) { moduleServer(id, function(input, output, session) data) } ) complete_modules <- modules( custom_module( label = \"Data Overview\", datanames = c(\"ADSL\", \"ADAE\", \"ADVS\"), ui_args = list( view_type = \"table\", page_size = 10, filters = c(\"ARM\", \"SEX\", \"RACE\") ), server_args = list( cache = TRUE, debounce = 1000 ), transformers = list(dummy_transformer), bk = TRUE ), modules( label = \"Nested 1\", custom_module( label = \"Interactive Plots\", datanames = c(\"ADSL\", \"ADVS\"), ui_args = list( plot_type = c(\"scatter\", \"box\", \"line\"), height = 600, width = 800, color_scheme = \"viridis\" ), server_args = list( render_type = \"svg\", cache_plots = TRUE ), transformers = list(dummy_transformer, plot_transformer), bk = TRUE ), modules( label = \"Nested 2\", custom_module( label = \"Summary Statistics\", datanames = \"ADSL\", ui_args = list( stats = c(\"mean\", \"median\", \"sd\", \"range\"), grouping = c(\"ARM\", \"SEX\") ) ), modules( label = \"Labeled nested modules\", custom_module( label = \"Subgroup Analysis\", datanames = c(\"ADSL\", \"ADAE\"), ui_args = list( subgroups = c(\"AGE\", \"SEX\", \"RACE\"), analysis_type = \"stratified\" ), bk = TRUE ) ), modules(custom_module(label = \"Subgroup Analysis in non-labled modules\")) ) ), custom_module(\"Non-nested module\") ) cat(format(complete_modules)) #> TEAL ROOT #> |- Data Overview #> | |- Datasets : ADSL, ADAE, ADVS #> | |- Properties: #> | | |- Bookmarkable : TRUE #> | | L- Reportable : FALSE #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- Datasets : ADSL, ADVS #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- Datasets : ADSL #> | | |- Properties: #> | | | |- Bookmarkable : FALSE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- Datasets : ADSL, ADAE #> | | |- Properties: #> | | | |- Bookmarkable : TRUE #> | | | L- Reportable : FALSE #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- Datasets : all #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- Datasets : all #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : cat(format(complete_modules, what = c(\"ui_args\", \"server_args\", \"transformers\"))) #> TEAL ROOT #> |- Data Overview #> | |- UI Arguments : view_type (character) #> | | page_size (numeric) #> | | filters (character) #> | |- Server Arguments : cache (logical) #> | | debounce (numeric) #> | L- Transformers : Dummy Transform #> |- Nested 1 #> | |- Interactive Plots #> | | |- UI Arguments : plot_type (character) #> | | | height (numeric) #> | | | width (numeric) #> | | | color_scheme (character) #> | | |- Server Arguments : render_type (character) #> | | | cache_plots (logical) #> | | L- Transformers : Dummy Transform, Plot Settings #> | L- Nested 2 #> | |- Summary Statistics #> | | |- UI Arguments : stats (character) #> | | | grouping (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | |- Labeled nested modules #> | | L- Subgroup Analysis #> | | |- UI Arguments : subgroups (character) #> | | | analysis_type (character) #> | | |- Server Arguments : #> | | L- Transformers : #> | L- root #> | L- Subgroup Analysis in non-labled modules #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- Non-nested module #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers : # change the module's datanames set_datanames(module(datanames = \"all\"), \"a\") #> |- module #> | |- Datasets : a #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : # change modules' datanames set_datanames( modules( module(datanames = \"all\"), module(datanames = \"a\") ), \"b\" ) #> Warning: Not possible to modify datanames of the module module. set_datanames() can only change datanames if it was set to \"all\". #> TEAL ROOT #> |- module #> | |- Datasets : b #> | |- Properties: #> | | |- Bookmarkable : FALSE #> | | L- Reportable : FALSE #> | |- UI Arguments : #> | |- Server Arguments : #> | L- Transformers : #> L- module #> |- Datasets : a #> |- Properties: #> | |- Bookmarkable : FALSE #> | L- Reportable : FALSE #> |- UI Arguments : #> |- Server Arguments : #> L- Transformers :"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter settings for teal applications — teal_slices","title":"Filter settings for teal applications — teal_slices","text":"Specify initial filter states filtering settings teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter settings for teal applications — teal_slices","text":"","code":"teal_slices( ..., exclude_varnames = NULL, include_varnames = NULL, count_type = NULL, allow_add = TRUE, module_specific = FALSE, mapping, app_id = NULL ) as.teal_slices(x) # S3 method for class 'teal_slices' c(...)"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter settings for teal applications — teal_slices","text":"... number teal_slice objects. include_varnames, exclude_varnames (named lists character) list names match names data sets vector elements match variable names respective data sets; specify variables allowed filtered; see Details. count_type new feature. kindly share opinions teal.slice's GitHub repository. (character(1)) string specifying observations tallied filter states. Possible options: \"none\" (default) counts single FilterState show unfiltered number . \"\" counts single FilterState show number observation filtered unfiltered dataset. Note, issues reported using option MultiAssayExperiment. Please make sure adding new filters fail target platform deploying production. allow_add (logical(1)) logical flag specifying whether user able add new filters module_specific (logical(1)) optional, FALSE (default) one filter panel applied modules. filters shared modules. TRUE filter panel module-specific. Modules can different set filters specified - see mapping argument. mapping new feature. kindly share opinions teal's GitHub repository. (named list) specifies filters active modules app start. Elements contain character vector teal_slice ids (see teal.slice::teal_slice). Names list correspond teal_module label set module() function. ids listed \"global_filters active modules. missing, filters applied modules. empty list, filters available modules start inactive. module_specific FALSE, global_filters active start. app_id (character(1)) internal use , set manually. Added init teal_slices can matched app used. Used verifying snapshots uploaded file. See snapshot. x (list) lists convert teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter settings for teal applications — teal_slices","text":"teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter settings for teal applications — teal_slices","text":"Produces teal_slices object. teal_slice components specify filter states active app starts. Attributes (created named arguments) configure way app applies filters. See argument descriptions details.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_slices.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Filter settings for teal applications — teal_slices","text":"","code":"filter <- teal_slices( teal_slice(dataname = \"iris\", varname = \"Species\", id = \"species\"), teal_slice(dataname = \"iris\", varname = \"Sepal.Length\", id = \"sepal_length\"), teal_slice( dataname = \"iris\", id = \"long_petals\", title = \"Long petals\", expr = \"Petal.Length > 5\" ), teal_slice(dataname = \"mtcars\", varname = \"mpg\", id = \"mtcars_mpg\"), mapping = list( module1 = c(\"species\", \"sepal_length\"), module2 = c(\"mtcars_mpg\"), global_filters = \"long_petals\" ) ) app <- init( data = teal_data(iris = iris, mtcars = mtcars), modules = list( module(\"module1\"), module(\"module2\") ), filter = filter ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Data module for teal transformers. — teal_transform_module","title":"Data module for teal transformers. — teal_transform_module","text":"Create teal_data_module object custom transformation data pre-processing passing data module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"teal_transform_module( ui = function(id) NULL, server = function(id, data) data, label = \"transform module\", datanames = character(0) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Data module for teal transformers. — teal_transform_module","text":"ui (function(id)) shiny module UI function; must take id argument server (function(id, data)) shiny module server function; takes id data argument, id module id data reactive teal_data input. server function must return reactive expression containing teal_data object. server function definition use eventReactive may lead unexpected behavior. See vignettes(\"data-transform--shiny-module\") information. label (character(1)) Label module. datanames (character) Names datasets relevant module evaluate. set character(0) module receive modules() datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data module for teal transformers. — teal_transform_module","text":"teal_transform_module creates teal_data_module object transform data teal application. transformation happens data passed filtering activity teal. transformed data sent server teal_module(). See vignette vignette(\"data-transform--shiny-module\", package = \"teal\") details.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/teal_transform_module.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data module for teal transformers. — teal_transform_module","text":"","code":"my_transformers <- list( teal_transform_module( label = \"Custom transform for iris\", datanames = \"iris\", ui = function(id) { ns <- NS(id) tags$div( numericInput(ns(\"n_rows\"), \"Subset n rows\", value = 6, min = 1, max = 150, step = 1) ) }, server = function(id, data) { moduleServer(id, function(input, output, session) { reactive({ within(data(), { iris <- head(iris, num_rows) }, num_rows = input$n_rows ) }) }) } ) )"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_app_title_tag.html","id":null,"dir":"Reference","previous_headings":"","what":"Function for validating the title parameter of teal::init — validate_app_title_tag","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"Checks input title teal::init create valid title favicon tag.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_app_title_tag.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"","code":"validate_app_title_tag(shiny_tag)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_app_title_tag.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function for validating the title parameter of teal::init — validate_app_title_tag","text":"shiny_tag (shiny.tag) Object validate valid title.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"validate_has_data( x, min_nrow = NULL, complete = FALSE, allow_inf = TRUE, msg = NULL )"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"x (data.frame) min_nrow (numeric(1)) Minimum allowed number rows x. complete (logical(1)) Flag specifying whether check complete cases. Defaults FALSE. allow_inf (logical(1)) Flag specifying whether allow infinite values. Defaults TRUE. msg (character(1)) Additional message display alongside default message.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_data.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has a minimum number of observations — validate_has_data","text":"","code":"library(teal) ui <- fluidPage( sliderInput(\"len\", \"Max Length of Sepal\", min = 4.3, max = 7.9, value = 5 ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_df <- iris[iris$Sepal.Length <= input$len, ] validate_has_data( iris_df, min_nrow = 10, complete = FALSE, msg = \"Please adjust Max Length of Sepal\" ) hist(iris_df$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"validate_has_elements(x, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"x vector msg message display","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_elements.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector has length greater than 0 — validate_has_elements","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\"), each = 15) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"arm_summary\") ) server <- function(input, output) { output$arm_summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_has_elements(sample_1, \"No subjects in strata1.\") validate_has_elements(sample_2, \"No subjects in strata2.\") paste0( \"Number of samples in: strata1=\", length(sample_1), \" comparions strata2=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"validate_has_variable(data, varname, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that dataset contains specific variable — validate_has_variable","text":"data (data.frame) varname (character(1)) name variable check data msg (character(1)) message display data include varname","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that dataset contains specific variable — validate_has_variable","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_has_variable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that dataset contains specific variable — validate_has_variable","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20) ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_has_variable(data, input$var) paste0(\"Selected treatment variables: \", paste(input$var, collapse = \", \")) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates that vector includes all expected values — validate_in","text":"","code":"validate_in(x, choices, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates that vector includes all expected values — validate_in","text":"x Vector values test. choices Vector test . msg (character(1)) Error message display elements x elements choices.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates that vector includes all expected values — validate_in","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_in.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates that vector includes all expected values — validate_in","text":"","code":"ui <- fluidPage( selectInput( \"species\", \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\", \"unknown species\"), selected = \"setosa\", multiple = FALSE ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderPrint({ validate_in(input$species, iris$Species, \"Species does not exist.\") nrow(iris[iris$Species == input$species, ]) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":null,"dir":"Reference","previous_headings":"","what":"Send input validation messages to output — validate_inputs","title":"Send input validation messages to output — validate_inputs","text":"Captures messages InputValidator objects collates one message passed validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Send input validation messages to output — validate_inputs","text":"","code":"validate_inputs(..., header = \"Some inputs require attention\")"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Send input validation messages to output — validate_inputs","text":"... either number InputValidator objects optionally named, possibly nested list InputValidator objects, see Details header (character(1)) generic validation message; set NULL omit","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Send input validation messages to output — validate_inputs","text":"Returns NULL final validation call passes shiny.silent.error fails.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Send input validation messages to output — validate_inputs","text":"shiny::validate used withhold rendering output element certain conditions met print validation message place output element. shinyvalidate::InputValidator allows validate input elements display specific messages respective input widgets. validate_inputs provides hybrid solution. Given InputValidator object, messages corresponding inputs fail validation extracted placed one validation message passed validate/need call. way input validator messages repeated output. ... argument accepts number InputValidator objects nested list objects. validators passed directly, messages printed together one (optional) header message specified header. list passed, messages grouped validator. list's names used headers respective message groups. neither nested list elements named, header message taken header.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_inputs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Send input validation messages to output — validate_inputs","text":"","code":"library(shiny) library(shinyvalidate) ui <- fluidPage( selectInput(\"method\", \"validation method\", c(\"sequential\", \"combined\", \"grouped\")), sidebarLayout( sidebarPanel( selectInput(\"letter\", \"select a letter:\", c(letters[1:3], LETTERS[4:6])), selectInput(\"number\", \"select a number:\", 1:6), tags$br(), selectInput(\"color\", \"select a color:\", c(\"black\", \"indianred2\", \"springgreen2\", \"cornflowerblue\"), multiple = TRUE ), sliderInput(\"size\", \"select point size:\", min = 0.1, max = 4, value = 0.25 ) ), mainPanel(plotOutput(\"plot\")) ) ) server <- function(input, output) { # set up input validation iv <- InputValidator$new() iv$add_rule(\"letter\", sv_in_set(LETTERS, \"choose a capital letter\")) iv$add_rule(\"number\", function(x) { if (as.integer(x) %% 2L == 1L) \"choose an even number\" }) iv$enable() # more input validation iv_par <- InputValidator$new() iv_par$add_rule(\"color\", sv_required(message = \"choose a color\")) iv_par$add_rule(\"color\", function(x) { if (length(x) > 1L) \"choose only one color\" }) iv_par$add_rule( \"size\", sv_between( left = 0.5, right = 3, message_fmt = \"choose a value between {left} and {right}\" ) ) iv_par$enable() output$plot <- renderPlot({ # validate output switch(input[[\"method\"]], \"sequential\" = { validate_inputs(iv) validate_inputs(iv_par, header = \"Set proper graphical parameters\") }, \"combined\" = validate_inputs(iv, iv_par), \"grouped\" = validate_inputs(list( \"Some inputs require attention\" = iv, \"Set proper graphical parameters\" = iv_par )) ) plot(faithful$eruptions ~ faithful$waiting, las = 1, pch = 16, col = input[[\"color\"]], cex = input[[\"size\"]] ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"validate_n_levels(x, min_levels = 1, max_levels = 12, var_name)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that variables has expected number of levels — validate_n_levels","text":"x variable name. x factor, unique values treated levels. min_levels cutoff minimum number levels x max_levels cutoff maximum number levels x var_name name variable validated use validation message","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that variables has expected number of levels — validate_n_levels","text":"number levels x less min_levels greater max_levels validation fail. function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_n_levels.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that variables has expected number of levels — validate_n_levels","text":"","code":"data <- data.frame( one = rep(\"a\", length.out = 20), two = rep(c(\"a\", \"b\"), length.out = 20), three = rep(c(\"a\", \"b\", \"c\"), length.out = 20), four = rep(c(\"a\", \"b\", \"c\", \"d\"), length.out = 20), stringsAsFactors = TRUE ) ui <- fluidPage( selectInput( \"var\", \"Select variable\", choices = c(\"one\", \"two\", \"three\", \"four\"), selected = \"one\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ validate_n_levels(data[[input$var]], min_levels = 2, max_levels = 15, var_name = input$var) paste0( \"Levels of selected treatment variable: \", paste(levels(data[[input$var]]), collapse = \", \" ) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"validate_no_intersection(x, y, msg)"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validates no intersection between two vectors — validate_no_intersection","text":"x vector y vector msg (character(1)) message display x y intersect","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validates no intersection between two vectors — validate_no_intersection","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_no_intersection.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validates no intersection between two vectors — validate_no_intersection","text":"","code":"data <- data.frame( id = c(1:10, 11:20, 1:10), strata = rep(c(\"A\", \"B\", \"C\"), each = 10) ) ui <- fluidPage( selectInput(\"ref1\", \"Select strata1 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"A\" ), selectInput(\"ref2\", \"Select strata2 to compare\", choices = c(\"A\", \"B\", \"C\"), selected = \"B\" ), verbatimTextOutput(\"summary\") ) server <- function(input, output) { output$summary <- renderText({ sample_1 <- data$id[data$strata == input$ref1] sample_2 <- data$id[data$strata == input$ref2] validate_no_intersection( sample_1, sample_2, \"subjects within strata1 and strata2 cannot overlap\" ) paste0( \"Number of subject in: reference treatment=\", length(sample_1), \" comparions treatment=\", length(sample_2) ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"validate_one_row_per_id(x, key = c(\"USUBJID\", \"STUDYID\"))"},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"x (data.frame) key (character) Vector ID variables x identify unique records.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"function wrapper shiny::validate.","code":""},{"path":"https://insightsengineering.github.io/teal/main/reference/validate_one_row_per_id.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate that dataset has unique rows for key variables — validate_one_row_per_id","text":"","code":"iris$id <- rep(1:50, times = 3) ui <- fluidPage( selectInput( inputId = \"species\", label = \"Select species\", choices = c(\"setosa\", \"versicolor\", \"virginica\"), selected = \"setosa\", multiple = TRUE ), plotOutput(\"plot\") ) server <- function(input, output) { output$plot <- renderPlot({ iris_f <- iris[iris$Species %in% input$species, ] validate_one_row_per_id(iris_f, key = c(\"id\")) hist(iris_f$Sepal.Length, breaks = 5) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-15-2-9082","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.2.9082","text":"Possible call ui_teal srv_teal directly application delivering data argument reactive returning teal_data object. #669 Introduced teal_transform_module provide way interactively modify data delivered teal_module’s server. #1228 Introduced new argument = FALSE teal_data_module possibly reload data run time. Possibility download lockfile restore app session reproducibility. #479 Introduced function set_datanames() change datanames teal_module. Datasets name starts . ignored module’s datanames set \"\".","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-15-2-9082","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.2.9082","text":"Setting datanames() data passed teal application longer effect. order change teal_module’s datanames one modify module$datanames. landing_popup_module() needs passed landing_popup argument init instead passed module modules argument init. teal longer re-export %>%. Please load library(magrittr) instead use |> base.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancement-0-15-2-9082","dir":"Changelog","previous_headings":"","what":"Enhancement","title":"teal 0.15.2.9082","text":"Enhanced system data validation display error messages. Easier way call javascript events setting $(document).ready(function() { ... }). #1114 Provided progress bar modules loading data filtering teal app startup. Filter mapping display separate icon tab. Environment data passed teal_module’s server consists unfiltered datasets contained .raw_data.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0152","dir":"Changelog","previous_headings":"","what":"teal 0.15.2","title":"teal 0.15.2","text":"CRAN release: 2024-03-07","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-15-2","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.2","text":"Fixed bug handling datanames modules crashed module-specific applications filtering child datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0151","dir":"Changelog","previous_headings":"","what":"teal 0.15.1","title":"teal 0.15.1","text":"CRAN release: 2024-02-22","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-15-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.1","text":"Fixed bug stopped module_specific feature teal module specified datanames length 1.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-15-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.1","text":"Updated links vignettes","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0150","dir":"Changelog","previous_headings":"","what":"teal 0.15.0","title":"teal 0.15.0","text":"CRAN release: 2024-02-08","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-15-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.15.0","text":"Added landing_popup_module function creates module display popup app starts. popup block access app dismissed. Filter state snapshots can now uploaded file. See ?snapshot. Added as_tdata function facilitate migration modules new teal_data class. Added build_app_title function facilitate adding favicons app title.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-15-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.15.0","text":"data argument init now accepts teal_data teal_data_module. tdata deprecated replaced teal_data. Support tdata passed data argument module(server) removed next release. module(ui) argument longer accepts data datasets arguments. data dependent logic set server function. module(server) argument deprecated datasets argument. teal_modules’ server functions accept data (teal_data) instead. Changed order formal arguments init. filter now comes directly modules, title.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-15-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.15.0","text":"Enhanced module validation checks won’t throw messages data argument unnecessarily. Added argument teal_slices made modifications init enable tagging teal_slices app id safely upload snapshots disk. FilteredData longer stores pre-processing code specific slots. Code now attached attribute. Adjusted appropriately.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-15-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.15.0","text":"Removed Report previewer module mapping matrix display filter manager. Specified minimal version package dependencies.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-14-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.14.0","text":"Enabled module specific filter panel. See module_specific teal::teal_slices documentation. Enabled capturing resetting application filter state snapshots. See ?snapshot. Enabled reporter_previewer_module customize default values srv_args. Enabled passing reporter_previewer_module list modules override default one.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-14-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.14.0","text":"Specifying filter argument teal::init requires teal_slices object now. Details documentation teal::init. Soft deprecated filters argument module replaced datanames. Details documentation teal::module","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-14-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.14.0","text":"Removed scda package dependency examples. Updated header tag style enhance element containment.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-13-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.13.0","text":"use datasets argument modules deprecated removed future release. Please use data argument instead. data type tdata; see “Creating custom modules” vignettes function documentation teal::new_tdata details. Due deprecation chunks teal.code, teal framework now uses replacement (qenv) instead. documentation teal updated reflect custom modules written chunks updated use qenv. Due deprecation chunks teal.code, get_rcode, get_rcode_srv, get_rcode_ui removed.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-13-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.13.0","text":"Added validate_inputs function transfers input validation messages app output. modules argument init accepts teal_module type object. need wrap single module modules() list(). Updated module_nested_tabs active modules calculated teal app.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-13-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.13.0","text":"Updated examples use scda.2022. Added R session information link footer teal applications. Added data hashing step using rlang instead digest package calculate hash (moved teal.data teal.slice). now explicit hashing check reproducible code output. Removed deprecated functions: root_modules, default_filter, bookmarkableShinyApp, well deprecated logging mechanism, including functions log_app_usage .log. Updated “Teal Bootstrap Themes” vignette provide details customizing teal app bslib::run_with_themer. Removed outdated diagram srv_nested_tabs documentation. Changed default values header footer arguments init empty text.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-12-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.12.0","text":"Added support custom bslib bootstrap themes teal::init apps, please read new teal-bs-themes vignette.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-12-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.12.0","text":"Added option choose variables can filtered filter panel using filterable attributes per-dataset lists filter argument init. Updated teal_module data argument receives list reactive filter data \"code\" \"join_keys\" attributes. Updated teal_module filter_panel_api argument receives FilterPanelAPI object. Updated internals module_teal reflect changes teal.slice.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-12-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.12.0","text":"Updated teal_module longer receive datasets object ... argument. order use datasets teal_module please specify datasets explicitly. Deprecated merge_expression argument get_rcode_srv function removed get_rcode function. Deprecated session argument get_rcode function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-12-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.12.0","text":"Enhanced burger button disabled filter panel used.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-11-1","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.11.1","text":"Added new function reporter_previewer_module wrap teal.reporter package previewer functionality teal module. Updated teal support modules include reporting. module supports reporting included reporter_previewer_module included. Added default arguments module() server argument now function second argument can ... datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-11-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.1","text":"Deprecated bookmarkableShinyApp. future releases teal framework stop supporting shiny bookmarking (officially supported); may officially supported future. Note filter panel teal.slice retains ability save restore state used standalone shiny app bookmarking.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-11-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.1","text":"Added template pkgdown configuration. Removed unneeded shinytest app tests. Updated package authors. Added package vignettes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-0110","dir":"Changelog","previous_headings":"","what":"teal 0.11.0","title":"teal 0.11.0","text":"teal.data: creating loading data needed teal applications. teal.widgets: shiny components used within teal. teal.slice: provides filtering panel allow filtering data. teal.code: handles reproducibility outputs. teal.transform: standardizes extracting merging data. teal.logger: standardizes logging within teal framework. teal package contains code create apps (teal::init), create module (teal::module) group modules app (teal::modules). teal depends teal.transform teal.data contain functions teal app creators likely need. package teal imports therefore teal module creators either fully specify functions packages required import custom packages library(teal) load .","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-11-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.11.0","text":"simple new teal module named example_module included package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-11-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.11.0","text":"teal package split multiple smaller packages, see . Deprecated root_modules function, users use modules directly inside init. Due deprecation root_modules label argument modules must explicitly named. example modules(\"lab\", mod1, mod2) replaced modules(label = \"lab\", mod1, mod2).","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-11-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.11.0","text":"Minor changes internals teal: main module panel now fixed shiny name root active tab named active_tab Active_tab. MultiAssayExperiment now suggested packages, required. Objects dependent MultiAssayExperiment changed lazy-load now suggested package.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-11-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.11.0","text":"Showing R Code longer shows reproducibility warning message reproducibility check passed.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"breaking-changes-0-10-1","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"teal 0.10.1","text":"Changed HTML identifiers teal modules - now nested module receives shiny namespace. Deprecated functions related connectors moved separate packages. Removed raw_dataset, raw_dataset_connector, named_dataset, named_dataset_file, named_dataset_connector, relational_dataset, relational_dataset_file, relational_dataset_connector, key, as_cdisc, as_cdisc_relational. Removed rcd_connection rcd_data; scda_dataset_connectors can passed cdisc_data teal_data directly. Replaced rcd_dataset_connector rcd_cdisc_dataset_connector scda_dataset_connector scda_cdisc_dataset_connector respectively. Renamed teal_show_js_log option teal.show_js_log match options naming convention. Removed %is_in% stop_shiny internal utility functions.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"logging-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Logging","title":"teal 0.10.1","text":"Added support logging using logger package. Added new function register_logger, registers logger given namespace. Added trace info levels log messages teal framework. Added pid shiny session token footnote app developers can identify logs apps.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"other-0-10-1","dir":"Changelog","previous_headings":"New features","what":"Other","title":"teal 0.10.1","text":"Added print methods DatasetConnector, RelationalData, RelationalDataconnector JoinKeys classes added input validation implementation print method already Dataset object. Added public facing constructor functions CDISCDataConnector, RelationalDataConnector, DataConnection classes. Modified data_extract_spec allow filter select parameters NULL, results data_extract_ui acting filter_spec variables possible choices supplied filter argument select_spec multiple parameter set TRUE supplied select argument. Added support full screen module filters argument equal NULL. Added support shiny::moduleServer passed server parameter teal::module. Added teal.threshold_slider_vs_checkboxgroup R option: categorical variable number unique values, filter panel uses drop-select input instead checkbox group. Extended FilteredData API allow managing filter states programmatically UI teal application. Hid buttons remove filters datasets dataset active filters. Updated init accept RelationalData, data.frame, MultiAssayExperiment, Dataset, DatasetConnector, list function returning named list data input.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-10-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.1","text":"choices_selected now correctly removes duplicates array passed choices parameter. Fixed call returned FilterState case using MultiAssayExperiment::subsetByColData. Now single condition variable containing NA values !.na(var) & var == . Fixed data loading DatasetConnector dependent Dataset DatasetConnector objects. Fixed restoring bookmarked filter state teal application. Refactored module_nested_tabs fix issue filter panel reacting input change nested module. updateOptionalSelectInput longer sets input NULL logical value passed selected. Fixed setting JoinKeys key name two Dataset object differs. Fixed printing JavaScript console logs R console teal.show_js_log = TRUE.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-10-1","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.1","text":"Soft-deprecate mae_dataset() favor general dataset() constructor. Added vignette describing modifications teal applications users can apply using R options. Added default values label argument select_spec filter_spec. Added validation FilteredDataset::get_data accept logical input . Changed references outdated functions teal.devel documentation. Introduced Teal prefix public R6 classes avoid name collisions packages. Removed dependency utils.nest replaced functionality teal equivalents checkmate package base R. Replaced old shiny server functions DataConnection, RelationalDataConnector, DatasetConnector, RelationalData shiny::moduleServer equivalents. Running teal application via ui_teal_with_splash srv_teal_with_splash now longer recommended doesn’t support new features (e.g. logging, bookmarking). Use init instead. Updated R version requirement >= 4.0. Updated “filter panel collapse” icon remove warnings using shiny version >= 1.7. Removed non-exported, debugging modules. Updated footer tag style less visible.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-10-0","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.10.0","text":"Allow passing MultiAssayExperiment teal::init using mae_dataset function connectors. Refactored filter panel use MultiAssayExperiment objects. Filters can set subject level (colData MAE object) experiment level (colData rowData assay). Added cdse_dataset_connector create delayed data objects CDSE. Added datasetdb_dataset_connector create delayed data objects DataSetDB. Added ricepass_connection create delayed data objects entimICE via ricepass. Simplified setting initial filter state without need specify “choices” “range” named list element depending variable class. Dataset type determines appearance functionality related filters filters summary. Datasets passed (reference) DDL FilteredData skipping extracting data attributes. Redesigned variable filter labels “Active Filter Variables” panel. Fully testable server functions.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-10-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.10.0","text":"Fixed bug caused calling mutate_dataset multiple times DatasetConnector Dataset object. Fixed bug caused output get_code function reproduce raw data set. Changed filter_spec allow variable selection upon app initialization, first possible value previously selected.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-10-0","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.10.0","text":"modules parameter teal::init function can also receive list except root_modules function call. Added split merge methods JoinKeys object. Added all_choices() possible argument selected parameter filter_spec, select_spec choices_selected indicating choices selected. append method CodeClass object modified print warning message argument result code added duplicated. Implemented delayed functionality mutate method Dataset DatasetConnector objects. Modified teal_data return CDISCData object whenever arguments type CDISCData object. Updated filters show levels logical variable TRUE/FALSE even one missing original array.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-10-0","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.10.0","text":"Updated LICENCE README new package references. Added method get_hash Dataset class returning MD5 hash object stored inside Dataset object. Replaced random.cdisc.data scda examples tests. Implemented functionality store JoinKeys Dataset DatasetConnector classes. Added error_on_lintr: TRUE .lintr pipe operator %>% now exported downstream code packages can use . Removed hyperlinks rice package documentation.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-5","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.5","text":"Added informational stop message using mutate_data RelationalDataConnector. Modified as_cdisc behave similarly cdisc_dataset called Dataset object. Changed displayed format data name column name data_extract_spec UI elements. now compressed . don’t change runtime app. Added ADSAFTTE list recognized ADaM dataset names. Added another example data_extract_spec’s doc string showcasing app users can choose variable used filtering encoding panel. Added CSS styling tool tips teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-9-5","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.5","text":"Fixed edge case error creating filter variable missing values crashed app. Fixed bug crashes app whenever Date datetime column selected filter_spec.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-4","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.4","text":"Released snowflake connection connectors. Changed ordering datasets intuitive (topologically first CDISC datasets according input datasets order). closing teal app (ending user shiny session), DataConnections now try close connections. Added ADHY keys configuration file. Extended filter_spec function: parameter choices longer mandatory (function take possible choices default) vars parameter additionally accepts choices_selected allows change variables filtering using UI elements encoding panel.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-9-4","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.4","text":"Cleaned imports package. Modified value_choices function handle edge case \"NA\" NA values exist character column choices derived . Fixed issue cloning Callable class.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-9-3","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.3","text":"Support data-standard independent input filtering. includes refactor data dataset structures together refactor FilteredData class. New JoinKeys class (join_keys() constructors join_key() constructor elements) store joining key columns datasets. Refactored basic dataset() constructor, added cdisc_dataset() constructor as_cdisc() conversion function. Soft-deprecate removed class constructors obsolete functions (e.g. keys()). Added get_keys() set_keys() functions extract manipulate datasets primary keys respectively. Unexported filtered_data_new, filtered_data_set filtered_data_set_filters.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"bug-fixes-0-9-3","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"teal 0.9.3","text":"Duplicated lines code passed teal::cdisc_dataset teal::RelationalDataset constructors now shown getting code teal::cdisc_data objects teal::RelationalData objects. Added ability press “Enter” key without set focus Submit button delayed data loading. Allow variable_choices use datasets missing labels. Fixed bug ignores input NULL selected argument select_spec function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-3","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.3","text":"Added button remove active filters Filter Panel.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-9-2","dir":"Changelog","previous_headings":"","what":"New Features","title":"teal 0.9.2","text":"Added python_dataset_connector create delayed data objects python scripts directly python code. NOTE: python_dataset_connector yet ready deployed RSConnect contain numpy pandas, Python libraries used python_dataset_connector. Added support filtering Date Datetime variables Filter Panel. Added buttons date datetime filter widgets reset value original. Added new function check_key_duplicates, creates short summary rows duplicated primary key (row numbers number duplicates)","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"enhancements-0-9-2","dir":"Changelog","previous_headings":"","what":"Enhancements","title":"teal 0.9.2","text":"Fixed lack labels character factor variables Filter Panel. variables now displayed module_filter_panel, types numeric, logical, factor, character Date Fixed mutate_data accept whole scope objects vars. Clarified teal::init function documentation state custom CSS loading code htmltools::htmlDependency included header argument rather inside UI arguments modules. Enabled empty select field inside data_extract_spec. Added new argument drop_keys filter_spec decide whether drop keep keys columns single filter columns. Added new optional argument keys variable_choices. keys specifies names variables, new key icon shown next variable drop menus left-hand side encoding panels instead icon appropriate original R variable type. variable_choices now also works RelationalDataset RelationalDatasetConnector objects.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"miscellaneous-0-9-2","dir":"Changelog","previous_headings":"","what":"Miscellaneous","title":"teal 0.9.2","text":"Removed include_factors option get_class_colnames RawDataset.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-091","dir":"Changelog","previous_headings":"","what":"teal 0.9.1","title":"teal 0.9.1","text":"Adds method resolve nested lists containing delayed data objects, can used arm_ref_comp objects. Nested tabs module now better alignment filter panel page. Allow width argument optionalSelectInput. Added lifecycle badges exported functions. Added new code_dataset_connector code_cdisc_dataset_connector functions enable creation new delayed data objects given string code. Added new functions csv_dataset_connector csv_cdisc_dataset_connector. Updated set_ui_input method RawDatasetConnector NamedDatasetConnector handle user defined shiny inputs. Include Keep Inf checkbox numerical filter items. Keep NA Keep Inf checkbox doesn’t appear missing infinite values. Replace existing RelationalData class abstract class RelationalDataCollection rename RelationalDataList class RelationalData. data argument teal::init now always RelationalData object. Added fun_cdisc_dataset_connector enable providing custom function returning dataset. Removed code script arguments as_relational wrapper. intended done mutate_dataset functionality. filer argument init added validation step ensure compatibility rest app. Variables inherited ADSL specified ADSL dataset. Fixes issue connection close code present get_code results. Fixes issue occasional incorrect ordering bar charts filter panel. informative error displayed pull_fun DataConnection produces error.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-090","dir":"Changelog","previous_headings":"","what":"teal 0.9.0","title":"teal 0.9.0","text":"cdisc_dataset dataset now return R6 class objects (RelationalDataset). new teal_data function include datasets connectors teal application. cdisc_data function include datasets connectors teal application check argument still used consistency tests performed. get_raw_data can used derive raw data R6 objects e.g. (RelationalDataset). RawDatasetConnector, NamedDatasetConnector RelationalDatasetConnector execute custom function call order get data connection. CodeClass manage reproducibility data relationships datasets. directly exposed public interface. mutate_dataset allows modify dataset connector via code argument R script. mutate_data allows change dataset RelationalData, RelationalDataConnector RelationalDataList. New wrapper functions manipulate RelationalDatasetConnector RelationalDataset get_dataset, load_dataset, as_relational. New wrapper functions manipulate RelationalDataConnector, RelationalData RelationalDataList get_datasets, load_datasets. choices_labeled, filter_spec, select_spec, data_extract_spec, value_choices, variable_choices S3 class applied data.frame also delayed data. can longer modify app$datasets, must instead use argument filter init function. New modules created create module nested teal modules, another one adds right filter pane tab. teal::init function stays unchanged. teal::init function now returns UI function optional id argument. allows embed applications. split view two teal applications side--side one example shown vignette. teal::init turned wrapper function around module_teal_with_splash.R developers want embed teal shiny module directly work functions (ui_teal_with_splash srv_teal_with_splash) instead teal::init. teal::init function now title parameter set title browser window. Missing data NA now explicitly addressed filter panel: NAs excluded default checkbox include added. Statistics data visually depicted terms histograms bar charts overlayed onto shiny input elements. Added buttons remove filters applied dataset. Restored functionality hide filter panel module constructed filters = NULL. Moved helper functions utils.nest removed unused functions set_labels_df get_labels_df. optionalSelectInput now allows grouped choices.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"refactor-of-filtereddata-for-developers-0-9-0","dir":"Changelog","previous_headings":"","what":"Refactor of FilteredData (for developers)","title":"teal 0.9.0","text":"FilteredData now fully reactive. Now filtered data lazy evaluated per need. opens door bookmarking teal apps (bookmarking currently works right filtering panel, make feature sophisticated future release, module must reviewed adapted contains reactiveValues). Datasets materialized connectors provided FilteredData set_datasets_data function located init_datasets.R file. Renamed get_dataset() method get_data(). Renamed get_filter_call() method get_filter_expr(); returns expression rather list. Removed argument isolate get_data() method similar methods. must isolate needed. want temporarily deactivate shiny errors due missing errors, can set options(shiny.suppressMissingContextError = TRUE). general, avoid isolate breaks reactivity. added development module add several filters , e.g. safety filters. evaluated converted proper module made available end-users.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-085","dir":"Changelog","previous_headings":"","what":"teal 0.8.5","title":"teal 0.8.5","text":"UI bug fix hide filter elements used datasets.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-084","dir":"Changelog","previous_headings":"","what":"teal 0.8.4","title":"teal 0.8.4","text":"Progress bar UI creation delayed loading module. Change output keys function keys object. Delayed version choices_selected. Fix error choices_selected selected choices. Fix pickerInput display column name label ’s missing.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-083","dir":"Changelog","previous_headings":"","what":"teal 0.8.3","title":"teal 0.8.3","text":"Enable teal app initialize without data. data loaded within teal app. New classes (DatasetConnector, DataConnector) connect various data sources, including: * connector rice API - rice_data rice_dataset_connector * connector RDS files - rds_data rds_dataset_connector Message appears bottom right shiny app shiny busy update views. Remove labels argument cdisc_data function. Labels now already present data passed cdisc_data function. can achieved using var_relabel function.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-082","dir":"Changelog","previous_headings":"","what":"teal 0.8.2","title":"teal 0.8.2","text":"Fixed several BUGS optionalSelectInput improved inputs look. Added get_data_labels function FilteredData class. Improved sep passing within data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-081","dir":"Changelog","previous_headings":"","what":"teal 0.8.1","title":"teal 0.8.1","text":"Refactor choices_labeled fix bug showing column name data_extract_spec.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-080","dir":"Changelog","previous_headings":"","what":"teal 0.8.0","title":"teal 0.8.0","text":"Added cdisc_dataset (general dataset) functions properly handle dataset keys merging. Possibility load custom .css .js files. Renamed columns_spec select_spec. Show number observations filter panel. Add labeling functions variable_choices value_choices.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-070","dir":"Changelog","previous_headings":"","what":"teal 0.7.0","title":"teal 0.7.0","text":"Added functions cdisc_data get_code deal preprocessing moving step towards data standard independent teal. Moved teal.utils functions teal: log_app_usage, stop_shiny. Added *_spec functions. Improvements usage PickerInput SelectInput.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-060","dir":"Changelog","previous_headings":"","what":"teal 0.6.0","title":"teal 0.6.0","text":"Removed deprecated functions tab*. Removed data generation functions including generate_sample_data. Incorporate shinyjs package. Added “Copy R code clipboard” button.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-005","dir":"Changelog","previous_headings":"","what":"teal 0.0.5","title":"teal 0.0.5","text":"Added limit data_table scrolling, preventing overlap UI elements. Boolean filtering.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-004","dir":"Changelog","previous_headings":"","what":"teal 0.0.4","title":"teal 0.0.4","text":"Bug fix teal crashes filter variable gets added many decimal places.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-003","dir":"Changelog","previous_headings":"","what":"teal 0.0.3","title":"teal 0.0.3","text":"Note version 0.0.3 backwards compatible. Reading changes studying example app , however, clarify changes.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"new-features-0-0-3","dir":"Changelog","previous_headings":"","what":"New features","title":"teal 0.0.3","text":"tm_scatterplot module. tm_table module.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"changes-0-0-3","dir":"Changelog","previous_headings":"","what":"Changes","title":"teal 0.0.3","text":"tabs arguments renamed modules. tab_item function now called module. tab_items function now called modules. tabs function removed. variable_browser_item now called tm_variable_browser. data_table_item now called tm_data_table. datasets argument automatically added server functions specified module. Hence teal_datasets removed server_args element.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-002","dir":"Changelog","previous_headings":"","what":"teal 0.0.2","title":"teal 0.0.2","text":"New ‘01_getting_started’ vignette. Datanames FilteredData now case sensitive.","code":""},{"path":"https://insightsengineering.github.io/teal/main/news/index.html","id":"teal-001","dir":"Changelog","previous_headings":"","what":"teal 0.0.1","title":"teal 0.0.1","text":"March 28, 2016 - Initial Release.","code":""}]