diff --git a/latest-tag/search.json b/latest-tag/search.json index 1d32c0f458..7500ab28be 100644 --- a/latest-tag/search.json +++ b/latest-tag/search.json @@ -1 +1 @@ -[{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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) example_module <- function(label = \"example teal module\") { module( label = label, server = function(id, data) { checkmate::assert_class(data, \"reactive\") checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(datanames(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 = example_module() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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":"example_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(datanames(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 = example_module_with_reporting() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 example_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":"example_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(datanames(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 = example_module_with_reporting() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 } example_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(datanames(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 = example_module_with_reporting() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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(datanames(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( 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\"), example_module(label = \"without Reporter\") ), filter = teal_slices(teal_slice(dataname = \"AIR\", varname = \"Temp\", selected = c(72, 85))), header = \"Example teal app with reporter\" ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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_theme(version = \"5\") %>% bslib::bs_add_rules(\"Anything understood by sass::as_sass()\"))"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 latest shinyWidgets package main branch, see .","code":"# Downloading the newest shinyWidgets # needed only when bslib::bs_theme(version = \"3\", ...) is used remotes::install_github(\"https://github.com/dreamRs/shinyWidgets@main\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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), # nolint 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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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 incorporated teal applications. However, also possible create modules using module function.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"ui-function","dir":"Articles","previous_headings":"Components of a module","what":"UI function","title":"Creating Custom Modules","text":"function contains UI required module. function least argument id. See server section details.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"server-function","dir":"Articles","previous_headings":"Components of a module","what":"Server function","title":"Creating Custom Modules","text":"function contains shiny server logic module form: data arrives module teal_data object, data container used throughout teal application. teal_data passed init function building application , filtering filter panel, passed modules, wrapped reactive expression. teal_data class allows modules track R code execute module outputs can reproduced. See teal.data package detailed explanation.","code":"function( id, data, # optional; use if module needs access to application data filter_panel_api, # optional; use if module needs access to filter panel; see teal.slice reporter, # optional; use if module supports reporting; see reporting vignette ...) { moduleServer(id, function(input, output, session) { # module code here }) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"viewing-data","dir":"Articles","previous_headings":"Example modules","what":"Viewing data","title":"Creating Custom Modules","text":"minimal module allows user select view one dataset time. default, filtering enabled datasets. Note dataset choices specified datanames property teal_data container.","code":"library(teal) example_module <- function(label = \"example teal module\") { checkmate::assert_string(label) module( label = label, server = function(id, data) { checkmate::assert_class(data, \"reactive\") checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(datanames(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\"))) ) } ) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"interacting-with-data-and-viewing-code","dir":"Articles","previous_headings":"Example modules","what":"Interacting with data and viewing code","title":"Creating Custom Modules","text":"example allows user interact data create simple visualization. addition, prints code can used reproduce visualization. module ready used teal app.","code":"library(teal) # ui function for the module # allows for selecting dataset and one of its numeric variables ui_histogram_example <- function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( selectInput(ns(\"datasets\"), \"select dataset\", choices = NULL), selectInput(ns(\"numerics\"), \"select numeric variable\", choices = NULL) ), mainPanel( plotOutput(ns(\"plot\")), verbatimTextOutput(ns(\"code\")) ), ) } # server function for the module # presents datasets and numeric variables for selection # displays a histogram of the selected variable # displays code to reproduce the histogram srv_histogram_example <- function(id, data) { checkmate::assert_class(data, \"reactive\") checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { # update dataset and variable choices # each selection stored in separate reactive expression updateSelectInput(inputId = \"datasets\", choices = isolate(datanames(data()))) observe({ req(dataset()) nums <- vapply(data()[[dataset()]], is.numeric, logical(1L)) updateSelectInput(inputId = \"numerics\", choices = names(nums[nums])) }) dataset <- reactive(input$datasets) selected <- reactive(input$numerics) # add plot code plot_code_q <- reactive({ validate(need(length(dataset()) == 1L, \"Please select a dataset\")) validate(need(length(selected()) == 1L, \"Please select a variable\")) req(selected() %in% names(data()[[dataset()]])) # evaluate plotting expression within data # inject input values into plotting expression within( data(), p <- hist(dataset[, selected], las = 1), dataset = as.name(dataset()), selected = selected() ) }) # view plot output$plot <- renderPlot({ plot_code_q()[[\"p\"]] }) # view code output$code <- renderPrint({ plot_code_q() %>% get_code() %>% cat() }) }) } # function that creates module instance to use in `teal` app tm_histogram_example <- function(label) { module( label = label, server = srv_histogram_example, ui = ui_histogram_example, datanames = \"all\" ) } app <- init( data = teal_data(IRIS = iris, NPK = npk), modules = tm_histogram_example(label = \"Histogram Module\"), header = \"Simple app with custom histogram module\" ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"adding-reporting-to-a-module","dir":"Articles","previous_headings":"","what":"Adding reporting to a module","title":"Creating Custom Modules","text":"Refer vignette read adding support reporting teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"using-standard-widgets-in-your-custom-module","dir":"Articles","previous_headings":"","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 module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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) div(), server = function(id) { moduleServer(id, function(input, output, session) { reactive({ data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) datanames(data) <- c(\"dataset1\", \"dataset2\") # optional data }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 }) datanames(data) <- c(\"dataset1\", \"dataset2\") data_module <- teal_data_module( ui = function(id) { ns <- NS(id) 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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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 = 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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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) datanames(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/latest-tag/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/latest-tag/articles/including-data-in-teal-applications.html","id":"datanames","dir":"Articles","previous_headings":"teal_data properties","what":"datanames","title":"Including Data in teal Applications","text":"datanames property lists objects stored teal_data environment constitute datasets interest. Objects passed teal_data become automatically listed datanames property resulting object. Objects created teal_data evaluating code need data objects interest automatically added datanames. convenience, empty datanames property considered mean “objects container”. datanames can read modified datanames function. datanames property serves communication bridge data container modules teal application. teal modules called datanames argument determines variables teal_data object access. variables enumerated datanames property eligible use modules. Note specifying datanames teal_data optional; property empty, objects considered eligible. Likewise, datanames argument module call defaults \"\", means module attempt access eligible variables teal_data object. detailed explanation datanames, see teal.data vignette. (back General Data)","code":"data_with_objects <- teal_data(iris = iris, cars = mtcars) data_with_code <- teal_data() %>% within({ iris <- iris cars <- mtcars not_a_dataset <- \"data source credits\" }) datanames(data_with_objects) #> [1] \"iris\" \"cars\" datanames(data_with_code) #> character(0) datanames(data_with_code) <- c(\"iris\", \"cars\") datanames(data_with_code) #> [1] \"iris\" \"cars\""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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 #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • not_a_dataset: [L] #> • 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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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. 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/latest-tag/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. Read documentation teal.logger::register_logger information. Possible values: \"TRACE\", \"INFO\", \"WARNING\", \"ERROR\". See documentation logger::TRACE possible values logging threshold information . 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/latest-tag/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":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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.1, https://github.com/insightsengineering/teal/, https://insightsengineering.github.io/teal/latest-tag/.","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.1, https://github.com/insightsengineering/teal/}, url = {https://insightsengineering.github.io/teal/latest-tag/}, }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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@*release\") install.packages(\"teal\", repos = c(\"https://pharmaverse.r-universe.dev\", getOption(\"repos\"))) # install.packages(\"pak\") pak::pak(\"insightsengineering/teal\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/pull_request_template.html","id":null,"dir":"","previous_headings":"","what":"Pull Request","title":"Pull Request","text":"Fixes #nnn","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/TealSlicesBlock.html","id":null,"dir":"Reference","previous_headings":"","what":"RcodeBlock — TealSlicesBlock","title":"RcodeBlock — TealSlicesBlock","text":"RcodeBlock RcodeBlock","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"super-classes","dir":"Reference","previous_headings":"","what":"Super classes","title":"RcodeBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock -> teal.reporter::TextBlock -> TealSlicesBlock","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"RcodeBlock — 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/latest-tag/reference/TealSlicesBlock.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"RcodeBlock — TealSlicesBlock","text":"TealSlicesBlock$new() TealSlicesBlock$set_content() TealSlicesBlock$from_list() TealSlicesBlock$to_list() TealSlicesBlock$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"RcodeBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$new(content = teal_slices(), style = \"verbatim\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function. style (character(1)) string specifying style apply.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"RcodeBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object content parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"Object class TealSlicesBlock, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-set-content-","dir":"Reference","previous_headings":"","what":"Method set_content()","title":"RcodeBlock — 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/latest-tag/reference/TealSlicesBlock.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$set_content(content)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-from-list-","dir":"Reference","previous_headings":"","what":"Method from_list()","title":"RcodeBlock — TealSlicesBlock","text":"Create RcodeBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$from_list(x)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"x (named list) two fields c(\"text\", \"params\"). Use get_available_params method get possible parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-to-list-","dir":"Reference","previous_headings":"","what":"Method to_list()","title":"RcodeBlock — TealSlicesBlock","text":"Convert RcodeBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$to_list()"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"named list text params.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"RcodeBlock — TealSlicesBlock","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/calculate_hashes.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the hash of a dataset — calculate_hashes","title":"Get the hash of a dataset — calculate_hashes","text":"Get hash dataset","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/calculate_hashes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the hash of a dataset — calculate_hashes","text":"","code":"calculate_hashes(datanames, datasets)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/calculate_hashes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the hash of a dataset — calculate_hashes","text":"datanames (character) names datasets datasets (FilteredData) object holding data","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/calculate_hashes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the hash of a dataset — calculate_hashes","text":"list hashes per dataset.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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":"function ensures specified datanames modules match data object, returning error messages TRUE successful validation.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/reference/check_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in modules — check_modules_datanames","text":"character(1) containing error message TRUE validation passes.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/dot-datasets_to_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"Converts FilteredData object teal_data object containing datasets needed specific module. Please note module needs dataset parent, parent also returned. hash per dataset calculated internally returned code.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/dot-datasets_to_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"","code":".datasets_to_data(module, datasets)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/dot-datasets_to_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"module (teal_module) module needed filters taken datasets (FilteredData) object needed data taken ","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/dot-datasets_to_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"teal_data object.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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) vector datanames relevant item. filter panel automatically update shown filters include filters listed datasets. NULL hide filter panel, keyword \"\" show filters datasets. datanames also determines subset datasets appended data argument server function.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/reference/filter_manager_module_srv.html","id":null,"dir":"Reference","previous_headings":"","what":"Module specific filter manager — filter_manager_module_srv","title":"Module specific filter manager — filter_manager_module_srv","text":"Tracks filter states single module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Module specific filter manager — filter_manager_module_srv","text":"","code":"filter_manager_module_srv(id, module_fd, slices_global)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Module specific filter manager — filter_manager_module_srv","text":"id (character(1)) shiny module id. module_fd (FilteredData) Object containing data filtered single teal module. slices_global (reactiveVal) stores teal_slices available filters; allows following actions: disable/enable specific filter module restore saved filter settings save current filter panel settings","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Module specific filter manager — filter_manager_module_srv","text":"reactive expression containing slices active module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Module specific filter manager — filter_manager_module_srv","text":"module tracks state single FilteredData object global teal_slices updates objects necessary. Filter states added different modules Filter states added individual module added global teal_slices become available modules setting private$available_teal_slices FilteredData.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/get_client_timezone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get client timezone — get_client_timezone","text":"(shiny) input variable accessible input$tz (character) string containing timezone browser/client.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Wrapper for get_code.tdata — get_code_tdata","title":"Wrapper for get_code.tdata — get_code_tdata","text":"wrapper used downstream packages extract code tdata object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Wrapper for get_code.tdata — get_code_tdata","text":"","code":"get_code_tdata(data)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Wrapper for get_code.tdata — get_code_tdata","text":"data (tdata) object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Wrapper for get_code.tdata — get_code_tdata","text":"(character) code used tdata object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":null,"dir":"Reference","previous_headings":"","what":"Get datasets code — get_datasets_code","title":"Get datasets code — get_datasets_code","text":"Retrieve complete code create, verify, filter dataset.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get datasets code — get_datasets_code","text":"","code":"get_datasets_code(datanames, datasets, hashes)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get datasets code — get_datasets_code","text":"datanames (character) names datasets extract code datasets (FilteredData) object hashes named (list) hashes per dataset","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get datasets code — get_datasets_code","text":"Character string concatenated following elements: data pre-processing code (data argument init) hash check loaded objects filter code ()","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to get metadata from a tdata object — get_metadata","title":"Function to get metadata from a tdata object — get_metadata","text":"Function get metadata tdata object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to get metadata from a tdata object — get_metadata","text":"","code":"get_metadata(data, dataname) # S3 method for tdata get_metadata(data, dataname) # S3 method for default get_metadata(data, dataname)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to get metadata from a tdata object — get_metadata","text":"data (tdata - object) extract data dataname (character(1)) dataset name whose metadata requested","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to get metadata from a tdata object — get_metadata","text":"Either list metadata NULL metadata.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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) )"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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(). 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) Specifies initial filter using teal_slices(). title (shiny.tag character(1)) 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)) header app. footer (shiny.tag character(1)) footer app. id (character) Optional string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 server UI functions.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/init.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create the server and UI function for the shiny app — init","text":"initializing teal app, datanames set teal_data object, defaults teal_data environment used.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 = teal_data( new_iris = transform(iris, id = seq_len(nrow(iris))), new_mtcars = transform(mtcars, id = seq_len(nrow(mtcars))), code = \" 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, ...) 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\")), 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(\"Copyright 2017 - 2023\") ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/join_keys.tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract join_keys from tdata — join_keys.tdata","title":"Extract join_keys from tdata — join_keys.tdata","text":"Extract join_keys tdata","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/join_keys.tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract join_keys from tdata — join_keys.tdata","text":"","code":"# S3 method for tdata join_keys(data, ...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/join_keys.tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract join_keys from tdata — join_keys.tdata","text":"data (tdata) object ... Additional arguments (used)","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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( landing_popup_module( content = \"A place for the welcome message or a disclaimer statement.\", buttons = modalButton(\"Proceed\") ), example_module() ) ) #> [INFO] 2024-02-23 00:08:26.6854 pid:931 token:[] teal 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( 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()\") ) ), example_module() ) ) #> [INFO] 2024-02-23 00:08:26.7342 pid:931 token:[] teal 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/latest-tag/reference/matrix_to_mapping.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"Transform mapping matrix, .e. data frame maps filter state module, list specification like one used mapping attribute teal_slices. Global filters gathered one list element. module active filters global ones, mentioned output.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/matrix_to_mapping.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"","code":"matrix_to_mapping(mapping_matrix)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/matrix_to_mapping.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"mapping_matrix (data.frame) logical vectors columns represent modules row represent teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/matrix_to_mapping.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"Named list like mapping attribute teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/reference/module_filter_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manage multiple FilteredData objects — module_filter_manager","text":"","code":"filter_manager_ui(id) filter_manager_srv(id, filtered_data_list, filter)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 id. filtered_data_list (named list) list, possibly nested, FilteredData objects. FilteredData served one module teal application. structure list must reflect nesting modules tabs names list must match labels respective modules. filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Manage multiple FilteredData objects — module_filter_manager","text":"list reactives, holding teal_slices, returned filter_manager_module_srv.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Manage multiple FilteredData objects — module_filter_manager","text":"module observes changes filters FilteredData object keeps track filters used. mapping filters modules kept mapping_matrix object (actually data.frame) tracks filters (rows) active modules (columns).","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager_modal.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter manager modal — module_filter_manager_modal","title":"Filter manager modal — module_filter_manager_modal","text":"Opens modal containing filter manager UI.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager_modal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter manager modal — module_filter_manager_modal","text":"","code":"filter_manager_modal_ui(id) filter_manager_modal_srv(id, filtered_data_list, filter)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager_modal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter manager modal — module_filter_manager_modal","text":"id (character(1)) shiny module id. filtered_data_list (named list) list, possibly nested, FilteredData objects. FilteredData served one module teal application. structure list must reflect nesting modules tabs names list must match labels respective modules. filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/module_nested_tabs.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a UI of nested tabs of teal_modules — module_nested_tabs","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"Create UI nested tabs teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"","code":"ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) # S3 method for default ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) # S3 method for teal_modules ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) # S3 method for teal_module ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) srv_nested_tabs( id, datasets, modules, is_module_specific = FALSE, reporter = teal.reporter::Reporter$new() ) # S3 method for default srv_nested_tabs( id, datasets, modules, is_module_specific = FALSE, reporter = teal.reporter::Reporter$new() ) # S3 method for teal_modules srv_nested_tabs( id, datasets, modules, is_module_specific = FALSE, reporter = teal.reporter::Reporter$new() ) # S3 method for teal_module srv_nested_tabs( id, datasets, modules, is_module_specific = TRUE, reporter = teal.reporter::Reporter$new() )"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"id (character(1)) module id modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. datasets (named list FilteredData) object store filter state filtered datasets, shared across modules. details see teal.slice::FilteredData. Structure list must structure modules argument list names must correspond labels modules. filter module-specific list contains object elements. depth (integer(1)) number helps determine depth modules nesting. is_module_specific (logical(1)) flag determining filter panel global module-specific. set TRUE, filter panel called inside module tab. reporter (Reporter) object teal.reporter","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"Depending class modules, ui_nested_tabs returns: teal_module: instantiated UI module. teal_modules: tabsetPanel tab corresponding recursively calling function . srv_nested_tabs returns reactive returns active module corresponds selected tab.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"ui-nested-tabs","dir":"Reference","previous_headings":"","what":"ui_nested_tabs","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"teal_modules translated tabsetPanel children another tab-module called recursively. UI teal_module obtained calling UI function. datasets argument required resolve teal arguments isolated context (respect reactivity).","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"srv-nested-tabs","dir":"Reference","previous_headings":"","what":"srv_nested_tabs","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"module recursively calls elements modules returns currently active one. teal_module returns self active module. teal_modules also returns module active within self determined input$active_tab.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":null,"dir":"Reference","previous_headings":"","what":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"ui_nested_tabs function returns nested tabbed UI corresponding nested modules. function adds right filter panel main tab.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"","code":"ui_tabs_with_filters(id, modules, datasets, filter = teal_slices()) srv_tabs_with_filters( id, datasets, modules, reporter = teal.reporter::Reporter$new(), filter = teal_slices() )"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"id (character(1)) module id modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. datasets (named list FilteredData) object store filter state filtered datasets, shared across modules. details see teal.slice::FilteredData. Structure list must structure modules argument list names must correspond labels modules. filter module-specific list contains object elements. filter (teal_slices) Specifies initial filter using teal_slices(). reporter (Reporter) object teal.reporter","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"shiny.tag.list containing main menu, placeholders filters placeholders teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"right filter panel's filter choices affect datasets object. Therefore, modules using datasets share filters. works nested modules depth greater 2, though filter panel inserted right modules depth 1 leaves.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":null,"dir":"Reference","previous_headings":"","what":"teal main app module — module_teal","title":"teal main app module — module_teal","text":"main teal app puts everything together.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal main app module — module_teal","text":"","code":"ui_teal( id, splash_ui = tags$h2(\"Starting the Teal App\"), title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal(id, modules, teal_data_rv, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal main app module — module_teal","text":"id (character(1)) module id splash_ui (shiny.tag) UI display initially, can splash screen shiny module UI. latter, see init() call corresponding server function. title (shiny.tag character(1)) 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)) header app. footer (shiny.tag character(1)) footer app. modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. teal_data_rv (reactive) returns teal_data, evaluated , NULL value ignored filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal main app module — module_teal","text":"Returns reactive expression returns currently active module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal main app module — module_teal","text":"displays splash UI used fetch data, possibly prompting password input fetch data. data ready, splash screen replaced actual teal UI tabsetted filter panel datanames relevant current tab. Nested tabs possible, limit two nesting levels reasons clarity UI. splash screen functionality can also used non-delayed data takes time load memory, avoiding shiny session timeouts. Server evaluates teal_data_rv (delayed data mechanism) creates datasets object shared across modules. ready non-NULL, splash screen replaced main teal UI depends data. currently active tab tracked right filter panel updates displayed datasets filter according active datanames tab. written shiny module can added apps well.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":null,"dir":"Reference","previous_headings":"","what":"Add splash screen to teal application — module_teal_with_splash","title":"Add splash screen to teal application — module_teal_with_splash","text":"Displays custom splash screen initial delayed data loading.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add splash screen to teal application — 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/latest-tag/reference/module_teal_with_splash.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add splash screen to teal application — module_teal_with_splash","text":"id (character(1)) module id data (teal_data teal_data_module) constructing data object, refer teal_data() teal_data_module(). title (shiny.tag character(1)) 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)) header app. footer (shiny.tag character(1)) footer app. modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add splash screen to teal application — module_teal_with_splash","text":"Returns reactive expression containing teal_data object data loaded NULL .","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add splash screen to teal application — module_teal_with_splash","text":"module pauses app initialization pending delayed data loading. necessary filter panel modules depend data initialize. teal_with_splash follows shiny module convention. init() wrapper around assumes teal top-level module embedded. Note: longer recommended embed teal shiny apps module. rather use init create standalone application.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add splash screen to teal application — module_teal_with_splash","text":"","code":"teal_modules <- modules(example_module()) # Shiny app with modular integration of teal ui <- fluidPage( ui_teal_with_splash(id = \"app1\", data = teal_data()) ) server <- function(input, output, session) { srv_teal_with_splash( id = \"app1\", data = teal_data(iris = iris), modules = teal_modules ) } if (interactive()) { shinyApp(ui, server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. lifecycle badge magrittr %>%","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/resolve_modules_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Resolve datanames for the modules — resolve_modules_datanames","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"Modifies module$datanames include names parent dataset (taken join_keys). datanames set \"\" replaced available datasets names.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/resolve_modules_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"","code":"resolve_modules_datanames(modules, datanames, join_keys)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/resolve_modules_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"modules (teal_modules) object datanames (character) names datasets available data object join_keys (join_keys) object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/resolve_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"teal_modules resolved datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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":"returns NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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, missing shiny::getDefaultReactiveDomain() used.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/snapshot_manager_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter state snapshot management — snapshot_manager_module","title":"Filter state snapshot management — snapshot_manager_module","text":"Capture restore snapshots global (app) filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter state snapshot management — snapshot_manager_module","text":"","code":"snapshot_manager_ui(id) snapshot_manager_srv(id, slices_global, mapping_matrix, filtered_data_list)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter state snapshot management — snapshot_manager_module","text":"id (character(1)) shiny module id slices_global (reactiveVal) contains teal_slices object containing teal_slices existing app, active inactive mapping_matrix (reactive) contains data.frame representation mapping filter state ids (rows) modules labels (columns); columns logical vectors filtered_data_list non-nested (named list) contains FilteredData objects","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter state snapshot management — snapshot_manager_module","text":"Nothing returned.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter state snapshot management — snapshot_manager_module","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 filter manager, cog icon top right corner. 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/latest-tag/reference/snapshot_manager_module.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"Filter state snapshot management — snapshot_manager_module","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/latest-tag/reference/snapshot_manager_module.html","id":"snapshot-mechanics","dir":"Reference","previous_headings":"","what":"Snapshot mechanics","title":"Filter state snapshot management — snapshot_manager_module","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 filtered_data_list) 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/latest-tag/reference/snapshot_manager_module.html","id":"transferring-snapshots","dir":"Reference","previous_headings":"","what":"Transferring snapshots","title":"Filter state snapshot management — snapshot_manager_module","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/latest-tag/reference/snapshot_manager_module.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Filter state snapshot management — snapshot_manager_module","text":"Aleksander Chlebowski","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a tdata object — tdata","title":"Create a tdata object — tdata","text":"Create new object called tdata contains data, reactive list data.frames (MultiAssayExperiment), attributes: code (reactive) containing code used generate data join_keys (join_keys) containing relationships data metadata (named list) containing metadata associated data frames","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a tdata object — tdata","text":"","code":"new_tdata(data, code = \"\", join_keys = NULL, metadata = NULL)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a tdata object — tdata","text":"data (named list) list data.frame MultiAssayExperiment objects, optionally can reactive. Inside object items made reactive. code (character reactive evaluates character) containing code used generate data. reactive code changing reactive context (e.g. filtering changes code). Inside object code made reactive join_keys (teal.data::join_keys) object containing relationships datasets. metadata (named list) element contains list metadata named data.frame element list atomic length one.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a tdata object — tdata","text":"tdata object.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a tdata object — tdata","text":"","code":"data <- new_tdata( data = list(iris = iris, mtcars = reactive(mtcars), dd = data.frame(x = 1:10)), code = \"iris <- iris mtcars <- mtcars dd <- data.frame(x = 1:10)\", metadata = list(dd = list(author = \"NEST\"), iris = list(version = 1)) ) #> Warning: `tdata()` was deprecated in teal 0.15.0. #> ℹ tdata is deprecated and will be removed in the next release. Use `teal_data` #> instead. Please follow migration instructions #> https://github.com/insightsengineering/teal/discussions/987. # Extract a data.frame isolate(data[[\"iris\"]]()) #> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa #> 4 4.6 3.1 1.5 0.2 setosa #> 5 5.0 3.6 1.4 0.2 setosa #> 6 5.4 3.9 1.7 0.4 setosa #> 7 4.6 3.4 1.4 0.3 setosa #> 8 5.0 3.4 1.5 0.2 setosa #> 9 4.4 2.9 1.4 0.2 setosa #> 10 4.9 3.1 1.5 0.1 setosa #> 11 5.4 3.7 1.5 0.2 setosa #> 12 4.8 3.4 1.6 0.2 setosa #> 13 4.8 3.0 1.4 0.1 setosa #> 14 4.3 3.0 1.1 0.1 setosa #> 15 5.8 4.0 1.2 0.2 setosa #> 16 5.7 4.4 1.5 0.4 setosa #> 17 5.4 3.9 1.3 0.4 setosa #> 18 5.1 3.5 1.4 0.3 setosa #> 19 5.7 3.8 1.7 0.3 setosa #> 20 5.1 3.8 1.5 0.3 setosa #> 21 5.4 3.4 1.7 0.2 setosa #> 22 5.1 3.7 1.5 0.4 setosa #> 23 4.6 3.6 1.0 0.2 setosa #> 24 5.1 3.3 1.7 0.5 setosa #> 25 4.8 3.4 1.9 0.2 setosa #> 26 5.0 3.0 1.6 0.2 setosa #> 27 5.0 3.4 1.6 0.4 setosa #> 28 5.2 3.5 1.5 0.2 setosa #> 29 5.2 3.4 1.4 0.2 setosa #> 30 4.7 3.2 1.6 0.2 setosa #> 31 4.8 3.1 1.6 0.2 setosa #> 32 5.4 3.4 1.5 0.4 setosa #> 33 5.2 4.1 1.5 0.1 setosa #> 34 5.5 4.2 1.4 0.2 setosa #> 35 4.9 3.1 1.5 0.2 setosa #> 36 5.0 3.2 1.2 0.2 setosa #> 37 5.5 3.5 1.3 0.2 setosa #> 38 4.9 3.6 1.4 0.1 setosa #> 39 4.4 3.0 1.3 0.2 setosa #> 40 5.1 3.4 1.5 0.2 setosa #> 41 5.0 3.5 1.3 0.3 setosa #> 42 4.5 2.3 1.3 0.3 setosa #> 43 4.4 3.2 1.3 0.2 setosa #> 44 5.0 3.5 1.6 0.6 setosa #> 45 5.1 3.8 1.9 0.4 setosa #> 46 4.8 3.0 1.4 0.3 setosa #> 47 5.1 3.8 1.6 0.2 setosa #> 48 4.6 3.2 1.4 0.2 setosa #> 49 5.3 3.7 1.5 0.2 setosa #> 50 5.0 3.3 1.4 0.2 setosa #> 51 7.0 3.2 4.7 1.4 versicolor #> 52 6.4 3.2 4.5 1.5 versicolor #> 53 6.9 3.1 4.9 1.5 versicolor #> 54 5.5 2.3 4.0 1.3 versicolor #> 55 6.5 2.8 4.6 1.5 versicolor #> 56 5.7 2.8 4.5 1.3 versicolor #> 57 6.3 3.3 4.7 1.6 versicolor #> 58 4.9 2.4 3.3 1.0 versicolor #> 59 6.6 2.9 4.6 1.3 versicolor #> 60 5.2 2.7 3.9 1.4 versicolor #> 61 5.0 2.0 3.5 1.0 versicolor #> 62 5.9 3.0 4.2 1.5 versicolor #> 63 6.0 2.2 4.0 1.0 versicolor #> 64 6.1 2.9 4.7 1.4 versicolor #> 65 5.6 2.9 3.6 1.3 versicolor #> 66 6.7 3.1 4.4 1.4 versicolor #> 67 5.6 3.0 4.5 1.5 versicolor #> 68 5.8 2.7 4.1 1.0 versicolor #> 69 6.2 2.2 4.5 1.5 versicolor #> 70 5.6 2.5 3.9 1.1 versicolor #> 71 5.9 3.2 4.8 1.8 versicolor #> 72 6.1 2.8 4.0 1.3 versicolor #> 73 6.3 2.5 4.9 1.5 versicolor #> 74 6.1 2.8 4.7 1.2 versicolor #> 75 6.4 2.9 4.3 1.3 versicolor #> 76 6.6 3.0 4.4 1.4 versicolor #> 77 6.8 2.8 4.8 1.4 versicolor #> 78 6.7 3.0 5.0 1.7 versicolor #> 79 6.0 2.9 4.5 1.5 versicolor #> 80 5.7 2.6 3.5 1.0 versicolor #> 81 5.5 2.4 3.8 1.1 versicolor #> 82 5.5 2.4 3.7 1.0 versicolor #> 83 5.8 2.7 3.9 1.2 versicolor #> 84 6.0 2.7 5.1 1.6 versicolor #> 85 5.4 3.0 4.5 1.5 versicolor #> 86 6.0 3.4 4.5 1.6 versicolor #> 87 6.7 3.1 4.7 1.5 versicolor #> 88 6.3 2.3 4.4 1.3 versicolor #> 89 5.6 3.0 4.1 1.3 versicolor #> 90 5.5 2.5 4.0 1.3 versicolor #> 91 5.5 2.6 4.4 1.2 versicolor #> 92 6.1 3.0 4.6 1.4 versicolor #> 93 5.8 2.6 4.0 1.2 versicolor #> 94 5.0 2.3 3.3 1.0 versicolor #> 95 5.6 2.7 4.2 1.3 versicolor #> 96 5.7 3.0 4.2 1.2 versicolor #> 97 5.7 2.9 4.2 1.3 versicolor #> 98 6.2 2.9 4.3 1.3 versicolor #> 99 5.1 2.5 3.0 1.1 versicolor #> 100 5.7 2.8 4.1 1.3 versicolor #> 101 6.3 3.3 6.0 2.5 virginica #> 102 5.8 2.7 5.1 1.9 virginica #> 103 7.1 3.0 5.9 2.1 virginica #> 104 6.3 2.9 5.6 1.8 virginica #> 105 6.5 3.0 5.8 2.2 virginica #> 106 7.6 3.0 6.6 2.1 virginica #> 107 4.9 2.5 4.5 1.7 virginica #> 108 7.3 2.9 6.3 1.8 virginica #> 109 6.7 2.5 5.8 1.8 virginica #> 110 7.2 3.6 6.1 2.5 virginica #> 111 6.5 3.2 5.1 2.0 virginica #> 112 6.4 2.7 5.3 1.9 virginica #> 113 6.8 3.0 5.5 2.1 virginica #> 114 5.7 2.5 5.0 2.0 virginica #> 115 5.8 2.8 5.1 2.4 virginica #> 116 6.4 3.2 5.3 2.3 virginica #> 117 6.5 3.0 5.5 1.8 virginica #> 118 7.7 3.8 6.7 2.2 virginica #> 119 7.7 2.6 6.9 2.3 virginica #> 120 6.0 2.2 5.0 1.5 virginica #> 121 6.9 3.2 5.7 2.3 virginica #> 122 5.6 2.8 4.9 2.0 virginica #> 123 7.7 2.8 6.7 2.0 virginica #> 124 6.3 2.7 4.9 1.8 virginica #> 125 6.7 3.3 5.7 2.1 virginica #> 126 7.2 3.2 6.0 1.8 virginica #> 127 6.2 2.8 4.8 1.8 virginica #> 128 6.1 3.0 4.9 1.8 virginica #> 129 6.4 2.8 5.6 2.1 virginica #> 130 7.2 3.0 5.8 1.6 virginica #> 131 7.4 2.8 6.1 1.9 virginica #> 132 7.9 3.8 6.4 2.0 virginica #> 133 6.4 2.8 5.6 2.2 virginica #> 134 6.3 2.8 5.1 1.5 virginica #> 135 6.1 2.6 5.6 1.4 virginica #> 136 7.7 3.0 6.1 2.3 virginica #> 137 6.3 3.4 5.6 2.4 virginica #> 138 6.4 3.1 5.5 1.8 virginica #> 139 6.0 3.0 4.8 1.8 virginica #> 140 6.9 3.1 5.4 2.1 virginica #> 141 6.7 3.1 5.6 2.4 virginica #> 142 6.9 3.1 5.1 2.3 virginica #> 143 5.8 2.7 5.1 1.9 virginica #> 144 6.8 3.2 5.9 2.3 virginica #> 145 6.7 3.3 5.7 2.5 virginica #> 146 6.7 3.0 5.2 2.3 virginica #> 147 6.3 2.5 5.0 1.9 virginica #> 148 6.5 3.0 5.2 2.0 virginica #> 149 6.2 3.4 5.4 2.3 virginica #> 150 5.9 3.0 5.1 1.8 virginica # Get code isolate(get_code_tdata(data)) #> [1] \"iris <- iris\\n mtcars <- mtcars\\n dd <- data.frame(x = 1:10)\" # Get metadata get_metadata(data, \"iris\") #> $version #> [1] 1 #>"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to convert a tdata object to an environment — tdata2env","title":"Function to convert a tdata object to an environment — tdata2env","text":"reactive expressions inside tdata evaluated first.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to convert a tdata object to an environment — tdata2env","text":"","code":"tdata2env(data)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to convert a tdata object to an environment — tdata2env","text":"data (tdata) object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to convert a tdata object to an environment — tdata2env","text":"environment.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to convert a tdata object to an environment — tdata2env","text":"","code":"data <- new_tdata( data = list(iris = iris, mtcars = reactive(mtcars)), code = \"iris <- iris mtcars = mtcars\" ) my_env <- isolate(tdata2env(data))"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":null,"dir":"Reference","previous_headings":"","what":"Downgrade teal_data objects in modules for compatibility — as_tdata","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"Convert teal_data tdata teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"","code":"as_tdata(x)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"x data object, either tdata teal_data, latter possibly reactive expression","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"Object class tdata.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Downgrade teal_data objects in modules for compatibility — as_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/latest-tag/reference/tdata_deprecation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"","code":"td <- teal_data() td <- within(td, iris <- iris) %>% within(mtcars <- mtcars) td #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • mtcars: [L] #> • iris: [L] as_tdata(td) #> $iris #> reactive({ #> x[[dataname]] #> }) #> #> $mtcars #> reactive({ #> x[[dataname]] #> }) #> #> attr(,\"code\") #> reactive({ #> teal.code::get_code(x) #> }) #> attr(,\"join_keys\") #> An empty join_keys object. #> attr(,\"class\") #> [1] \"tdata\" \"list\" as_tdata(reactive(td)) #> $iris #> reactive({ #> x()[[dataname]] #> }) #> #> $mtcars #> reactive({ #> x()[[dataname]] #> }) #> #> attr(,\"code\") #> reactive({ #> teal.code::get_code(x()) #> }) #> attr(,\"join_keys\") #> An empty join_keys object. #> attr(,\"class\") #> [1] \"tdata\" \"list\""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/teal_data_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Wrapper on teal.data::datanames — teal_data_datanames","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"Special function used internals teal return names datasets even datanames set.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/teal_data_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"","code":"teal_data_datanames(data)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/teal_data_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"data (teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/teal_data_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"character","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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) # S4 method for teal_data_module,character eval_code(object, code) # S3 method for teal_data_module within(data, expr, ...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 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/latest-tag/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 object class teal_data_module. 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/latest-tag/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 supply modify data teal application. module allows running data pre-processing code (creation modification) app starts. 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/latest-tag/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 } ) datanames(data) <- c(\"dataset1\", \"dataset2\") data }) }) } ) eval_code(tdm, \"dataset1 <- subset(dataset1, Species == 'virginica')\") #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> moduleServer(id, function(input, output, session) { #> teal_data_rv <- object$server(\"mutate_inner\") #> #> if (!is.reactive(teal_data_rv)) { #> stop(\"The `teal_data_module` must return a reactive expression.\", call. = FALSE) #> } #> #> td <- eventReactive(teal_data_rv(), #> { #> if (inherits(teal_data_rv(), c(\"teal_data\", \"qenv.error\"))) { #> eval_code(teal_data_rv(), code) #> } else { #> teal_data_rv() #> } #> }, #> ignoreNULL = FALSE #> ) #> td #> }) #> } #> #> #> attr(,\"class\") #> [1] \"teal_data_module\" within(tdm, dataset1 <- subset(dataset1, Species == \"virginica\")) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> moduleServer(id, function(input, output, session) { #> teal_data_rv <- object$server(\"mutate_inner\") #> #> if (!is.reactive(teal_data_rv)) { #> stop(\"The `teal_data_module` must return a reactive expression.\", call. = FALSE) #> } #> #> td <- eventReactive(teal_data_rv(), #> { #> if (inherits(teal_data_rv(), c(\"teal_data\", \"qenv.error\"))) { #> eval_code(teal_data_rv(), code) #> } else { #> teal_data_rv() #> } #> }, #> ignoreNULL = FALSE #> ) #> td #> }) #> } #> #> #> attr(,\"class\") #> [1] \"teal_data_module\" # 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) { #> moduleServer(id, function(input, output, session) { #> teal_data_rv <- object$server(\"mutate_inner\") #> #> if (!is.reactive(teal_data_rv)) { #> stop(\"The `teal_data_module` must return a reactive expression.\", call. = FALSE) #> } #> #> td <- eventReactive(teal_data_rv(), #> { #> if (inherits(teal_data_rv(), c(\"teal_data\", \"qenv.error\"))) { #> eval_code(teal_data_rv(), code) #> } else { #> teal_data_rv() #> } #> }, #> ignoreNULL = FALSE #> ) #> td #> }) #> } #> #> #> attr(,\"class\") #> [1] \"teal_data_module\""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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 = teal_data_datanames(x))"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 datanames(x)","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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, ...) { moduleServer(id, function(input, output, session) { }) }, ui = function(id, ...) { tags$p(paste0(\"This module has no UI (id: \", id, \" )\")) }, filters, datanames = \"all\", server_args = NULL, ui_args = NULL ) modules(..., label = \"root\") # S3 method for teal_module format(x, indent = 0, ...) # S3 method for teal_module print(x, ...) # S3 method for teal_modules format(x, indent = 0, ...) # S3 method for teal_modules print(x, ...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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) vector datanames relevant item. filter panel automatically update shown filters include filters listed datasets. NULL hide filter panel, keyword \"\" show filters datasets. datanames also determines subset datasets appended data argument server function. server_args (named list) additional arguments passed server function. ui_args (named list) additional arguments passed UI function. ... 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 .","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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 teal_slices c(...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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. print format, additional arguments passed functions. 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 optional (logical(1)) 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/latest-tag/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/latest-tag/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/latest-tag/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 ) #> module \"module1\" server function takes no data so \"datanames\" will be ignored #> module \"module2\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":null,"dir":"Reference","previous_headings":"","what":"Explicitly enumerate global filters. — unfold_mapping","title":"Explicitly enumerate global filters. — unfold_mapping","text":"Transform module mapping global filters explicitly specified every module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Explicitly enumerate global filters. — unfold_mapping","text":"","code":"unfold_mapping(mapping, module_names)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Explicitly enumerate global filters. — unfold_mapping","text":"mapping (named list) stored mapping parameter teal_slices module_names (character) vector containing names modules app","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Explicitly enumerate global filters. — unfold_mapping","text":"named_list one element per module, element containing filters applied module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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), 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\", ~ if (as.integer(.) %% 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\", ~ if (length(.) > 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(eruptions ~ waiting, faithful, las = 1, pch = 16, col = input[[\"color\"]], cex = input[[\"size\"]] ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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) example_module <- function(label = \"example teal module\") { module( label = label, server = function(id, data) { checkmate::assert_class(data, \"reactive\") checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(datanames(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 = example_module() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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":"example_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(datanames(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 = example_module_with_reporting() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 example_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":"example_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(datanames(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 = example_module_with_reporting() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 } example_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(datanames(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 = example_module_with_reporting() ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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(datanames(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( 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\"), example_module(label = \"without Reporter\") ), filter = teal_slices(teal_slice(dataname = \"AIR\", varname = \"Temp\", selected = c(72, 85))), header = \"Example teal app with reporter\" ) if (interactive()) shinyApp(app$ui, app$server)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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_theme(version = \"5\") %>% bslib::bs_add_rules(\"Anything understood by sass::as_sass()\"))"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 latest shinyWidgets package main branch, see .","code":"# Downloading the newest shinyWidgets # needed only when bslib::bs_theme(version = \"3\", ...) is used remotes::install_github(\"https://github.com/dreamRs/shinyWidgets@main\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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), # nolint 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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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 incorporated teal applications. However, also possible create modules using module function.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"ui-function","dir":"Articles","previous_headings":"Components of a module","what":"UI function","title":"Creating Custom Modules","text":"function contains UI required module. function least argument id. See server section details.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"server-function","dir":"Articles","previous_headings":"Components of a module","what":"Server function","title":"Creating Custom Modules","text":"function contains shiny server logic module form: data arrives module teal_data object, data container used throughout teal application. teal_data passed init function building application , filtering filter panel, passed modules, wrapped reactive expression. teal_data class allows modules track R code execute module outputs can reproduced. See teal.data package detailed explanation.","code":"function( id, data, # optional; use if module needs access to application data filter_panel_api, # optional; use if module needs access to filter panel; see teal.slice reporter, # optional; use if module supports reporting; see reporting vignette ...) { moduleServer(id, function(input, output, session) { # module code here }) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"viewing-data","dir":"Articles","previous_headings":"Example modules","what":"Viewing data","title":"Creating Custom Modules","text":"minimal module allows user select view one dataset time. default, filtering enabled datasets. Note dataset choices specified datanames property teal_data container.","code":"library(teal) example_module <- function(label = \"example teal module\") { checkmate::assert_string(label) module( label = label, server = function(id, data) { checkmate::assert_class(data, \"reactive\") checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { updateSelectInput(session, \"dataname\", choices = isolate(datanames(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\"))) ) } ) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"interacting-with-data-and-viewing-code","dir":"Articles","previous_headings":"Example modules","what":"Interacting with data and viewing code","title":"Creating Custom Modules","text":"example allows user interact data create simple visualization. addition, prints code can used reproduce visualization. module ready used teal app.","code":"library(teal) # ui function for the module # allows for selecting dataset and one of its numeric variables ui_histogram_example <- function(id) { ns <- NS(id) sidebarLayout( sidebarPanel( selectInput(ns(\"datasets\"), \"select dataset\", choices = NULL), selectInput(ns(\"numerics\"), \"select numeric variable\", choices = NULL) ), mainPanel( plotOutput(ns(\"plot\")), verbatimTextOutput(ns(\"code\")) ), ) } # server function for the module # presents datasets and numeric variables for selection # displays a histogram of the selected variable # displays code to reproduce the histogram srv_histogram_example <- function(id, data) { checkmate::assert_class(data, \"reactive\") checkmate::assert_class(isolate(data()), \"teal_data\") moduleServer(id, function(input, output, session) { # update dataset and variable choices # each selection stored in separate reactive expression updateSelectInput(inputId = \"datasets\", choices = isolate(datanames(data()))) observe({ req(dataset()) nums <- vapply(data()[[dataset()]], is.numeric, logical(1L)) updateSelectInput(inputId = \"numerics\", choices = names(nums[nums])) }) dataset <- reactive(input$datasets) selected <- reactive(input$numerics) # add plot code plot_code_q <- reactive({ validate(need(length(dataset()) == 1L, \"Please select a dataset\")) validate(need(length(selected()) == 1L, \"Please select a variable\")) req(selected() %in% names(data()[[dataset()]])) # evaluate plotting expression within data # inject input values into plotting expression within( data(), p <- hist(dataset[, selected], las = 1), dataset = as.name(dataset()), selected = selected() ) }) # view plot output$plot <- renderPlot({ plot_code_q()[[\"p\"]] }) # view code output$code <- renderPrint({ plot_code_q() %>% get_code() %>% cat() }) }) } # function that creates module instance to use in `teal` app tm_histogram_example <- function(label) { module( label = label, server = srv_histogram_example, ui = ui_histogram_example, datanames = \"all\" ) } app <- init( data = teal_data(IRIS = iris, NPK = npk), modules = tm_histogram_example(label = \"Histogram Module\"), header = \"Simple app with custom histogram module\" ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"adding-reporting-to-a-module","dir":"Articles","previous_headings":"","what":"Adding reporting to a module","title":"Creating Custom Modules","text":"Refer vignette read adding support reporting teal module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/articles/creating-custom-modules.html","id":"using-standard-widgets-in-your-custom-module","dir":"Articles","previous_headings":"","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 module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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) div(), server = function(id) { moduleServer(id, function(input, output, session) { reactive({ data <- within( teal_data(), { dataset1 <- iris dataset2 <- mtcars } ) datanames(data) <- c(\"dataset1\", \"dataset2\") # optional data }) }) } ) app <- init( data = data_module, modules = example_module() ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 }) datanames(data) <- c(\"dataset1\", \"dataset2\") data_module <- teal_data_module( ui = function(id) { ns <- NS(id) 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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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 = div(a(\"Powered by teal\", href = \"https://insightsengineering.github.io/teal/latest-tag/latest-tag/\")) ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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) datanames(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/latest-tag/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/latest-tag/articles/including-data-in-teal-applications.html","id":"datanames","dir":"Articles","previous_headings":"teal_data properties","what":"datanames","title":"Including Data in teal Applications","text":"datanames property lists objects stored teal_data environment constitute datasets interest. Objects passed teal_data become automatically listed datanames property resulting object. Objects created teal_data evaluating code need data objects interest automatically added datanames. convenience, empty datanames property considered mean “objects container”. datanames can read modified datanames function. datanames property serves communication bridge data container modules teal application. teal modules called datanames argument determines variables teal_data object access. variables enumerated datanames property eligible use modules. Note specifying datanames teal_data optional; property empty, objects considered eligible. Likewise, datanames argument module call defaults \"\", means module attempt access eligible variables teal_data object. detailed explanation datanames, see teal.data vignette. (back General Data)","code":"data_with_objects <- teal_data(iris = iris, cars = mtcars) data_with_code <- teal_data() %>% within({ iris <- iris cars <- mtcars not_a_dataset <- \"data source credits\" }) datanames(data_with_objects) #> [1] \"iris\" \"cars\" datanames(data_with_code) #> character(0) datanames(data_with_code) <- c(\"iris\", \"cars\") datanames(data_with_code) #> [1] \"iris\" \"cars\""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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 #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • not_a_dataset: [L] #> • 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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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. 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/latest-tag/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. Read documentation teal.logger::register_logger information. Possible values: \"TRACE\", \"INFO\", \"WARNING\", \"ERROR\". See documentation logger::TRACE possible values logging threshold information . 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/latest-tag/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":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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.1, https://github.com/insightsengineering/teal/, https://insightsengineering.github.io/teal/latest-tag/.","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.1, https://github.com/insightsengineering/teal/}, url = {https://insightsengineering.github.io/teal/latest-tag/}, }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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@*release\") install.packages(\"teal\", repos = c(\"https://pharmaverse.r-universe.dev\", getOption(\"repos\"))) # install.packages(\"pak\") pak::pak(\"insightsengineering/teal\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/pull_request_template.html","id":null,"dir":"","previous_headings":"","what":"Pull Request","title":"Pull Request","text":"Fixes #nnn","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/TealSlicesBlock.html","id":null,"dir":"Reference","previous_headings":"","what":"RcodeBlock — TealSlicesBlock","title":"RcodeBlock — TealSlicesBlock","text":"RcodeBlock RcodeBlock","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"super-classes","dir":"Reference","previous_headings":"","what":"Super classes","title":"RcodeBlock — TealSlicesBlock","text":"teal.reporter::ContentBlock -> teal.reporter::TextBlock -> TealSlicesBlock","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"methods","dir":"Reference","previous_headings":"","what":"Methods","title":"RcodeBlock — 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/latest-tag/reference/TealSlicesBlock.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"RcodeBlock — TealSlicesBlock","text":"TealSlicesBlock$new() TealSlicesBlock$set_content() TealSlicesBlock$from_list() TealSlicesBlock$to_list() TealSlicesBlock$clone()","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"RcodeBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$new(content = teal_slices(), style = \"verbatim\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function. style (character(1)) string specifying style apply.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"RcodeBlock — TealSlicesBlock","text":"Returns TealSlicesBlock object content parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"Object class TealSlicesBlock, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-set-content-","dir":"Reference","previous_headings":"","what":"Method set_content()","title":"RcodeBlock — 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/latest-tag/reference/TealSlicesBlock.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$set_content(content)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"content (teal_slices) object returned teal_slices() function.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns-1","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-from-list-","dir":"Reference","previous_headings":"","what":"Method from_list()","title":"RcodeBlock — TealSlicesBlock","text":"Create RcodeBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage-2","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$from_list(x)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"x (named list) two fields c(\"text\", \"params\"). Use get_available_params method get possible parameters.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns-2","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"self, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-to-list-","dir":"Reference","previous_headings":"","what":"Method to_list()","title":"RcodeBlock — TealSlicesBlock","text":"Convert RcodeBlock list.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage-3","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$to_list()"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"returns-3","dir":"Reference","previous_headings":"","what":"Returns","title":"RcodeBlock — TealSlicesBlock","text":"named list text params.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"RcodeBlock — TealSlicesBlock","text":"objects class cloneable method.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"usage-4","dir":"Reference","previous_headings":"","what":"Usage","title":"RcodeBlock — TealSlicesBlock","text":"","code":"TealSlicesBlock$clone(deep = FALSE)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/TealSlicesBlock.html","id":"arguments-3","dir":"Reference","previous_headings":"","what":"Arguments","title":"RcodeBlock — TealSlicesBlock","text":"deep Whether make deep clone.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/calculate_hashes.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the hash of a dataset — calculate_hashes","title":"Get the hash of a dataset — calculate_hashes","text":"Get hash dataset","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/calculate_hashes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the hash of a dataset — calculate_hashes","text":"","code":"calculate_hashes(datanames, datasets)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/calculate_hashes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the hash of a dataset — calculate_hashes","text":"datanames (character) names datasets datasets (FilteredData) object holding data","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/calculate_hashes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the hash of a dataset — calculate_hashes","text":"list hashes per dataset.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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":"function ensures specified datanames modules match data object, returning error messages TRUE successful validation.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/reference/check_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check datanames in modules — check_modules_datanames","text":"character(1) containing error message TRUE validation passes.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/dot-datasets_to_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"Converts FilteredData object teal_data object containing datasets needed specific module. Please note module needs dataset parent, parent also returned. hash per dataset calculated internally returned code.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/dot-datasets_to_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"","code":".datasets_to_data(module, datasets)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/dot-datasets_to_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"module (teal_module) module needed filters taken datasets (FilteredData) object needed data taken ","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/dot-datasets_to_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert FilteredData to reactive list of datasets of the teal_data type. — .datasets_to_data","text":"teal_data object.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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\")"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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) vector datanames relevant item. filter panel automatically update shown filters include filters listed datasets. NULL hide filter panel, keyword \"\" show filters datasets. datanames also determines subset datasets appended data argument server function.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/reference/filter_manager_module_srv.html","id":null,"dir":"Reference","previous_headings":"","what":"Module specific filter manager — filter_manager_module_srv","title":"Module specific filter manager — filter_manager_module_srv","text":"Tracks filter states single module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Module specific filter manager — filter_manager_module_srv","text":"","code":"filter_manager_module_srv(id, module_fd, slices_global)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Module specific filter manager — filter_manager_module_srv","text":"id (character(1)) shiny module id. module_fd (FilteredData) Object containing data filtered single teal module. slices_global (reactiveVal) stores teal_slices available filters; allows following actions: disable/enable specific filter module restore saved filter settings save current filter panel settings","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Module specific filter manager — filter_manager_module_srv","text":"reactive expression containing slices active module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/filter_manager_module_srv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Module specific filter manager — filter_manager_module_srv","text":"module tracks state single FilteredData object global teal_slices updates objects necessary. Filter states added different modules Filter states added individual module added global teal_slices become available modules setting private$available_teal_slices FilteredData.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/get_client_timezone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get client timezone — get_client_timezone","text":"(shiny) input variable accessible input$tz (character) string containing timezone browser/client.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Wrapper for get_code.tdata — get_code_tdata","title":"Wrapper for get_code.tdata — get_code_tdata","text":"wrapper used downstream packages extract code tdata object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Wrapper for get_code.tdata — get_code_tdata","text":"","code":"get_code_tdata(data)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Wrapper for get_code.tdata — get_code_tdata","text":"data (tdata) object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_code_tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Wrapper for get_code.tdata — get_code_tdata","text":"(character) code used tdata object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":null,"dir":"Reference","previous_headings":"","what":"Get datasets code — get_datasets_code","title":"Get datasets code — get_datasets_code","text":"Retrieve complete code create, verify, filter dataset.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get datasets code — get_datasets_code","text":"","code":"get_datasets_code(datanames, datasets, hashes)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get datasets code — get_datasets_code","text":"datanames (character) names datasets extract code datasets (FilteredData) object hashes named (list) hashes per dataset","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_datasets_code.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get datasets code — get_datasets_code","text":"Character string concatenated following elements: data pre-processing code (data argument init) hash check loaded objects filter code ()","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to get metadata from a tdata object — get_metadata","title":"Function to get metadata from a tdata object — get_metadata","text":"Function get metadata tdata object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to get metadata from a tdata object — get_metadata","text":"","code":"get_metadata(data, dataname) # S3 method for tdata get_metadata(data, dataname) # S3 method for default get_metadata(data, dataname)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to get metadata from a tdata object — get_metadata","text":"data (tdata - object) extract data dataname (character(1)) dataset name whose metadata requested","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/get_metadata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to get metadata from a tdata object — get_metadata","text":"Either list metadata NULL metadata.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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) )"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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(). 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) Specifies initial filter using teal_slices(). title (shiny.tag character(1)) 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)) header app. footer (shiny.tag character(1)) footer app. id (character) Optional string specifying shiny module id cases used shiny module rather standalone shiny app. legacy feature.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 server UI functions.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/init.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create the server and UI function for the shiny app — init","text":"initializing teal app, datanames set teal_data object, defaults teal_data environment used.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 = teal_data( new_iris = transform(iris, id = seq_len(nrow(iris))), new_mtcars = transform(mtcars, id = seq_len(nrow(mtcars))), code = \" 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, ...) 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\")), 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(\"Copyright 2017 - 2023\") ) if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/join_keys.tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract join_keys from tdata — join_keys.tdata","title":"Extract join_keys from tdata — join_keys.tdata","text":"Extract join_keys tdata","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/join_keys.tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract join_keys from tdata — join_keys.tdata","text":"","code":"# S3 method for tdata join_keys(data, ...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/join_keys.tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract join_keys from tdata — join_keys.tdata","text":"data (tdata) object ... Additional arguments (used)","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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( landing_popup_module( content = \"A place for the welcome message or a disclaimer statement.\", buttons = modalButton(\"Proceed\") ), example_module() ) ) #> [INFO] 2024-02-23 00:08:26.6854 pid:931 token:[] teal 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( 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()\") ) ), example_module() ) ) #> [INFO] 2024-02-23 00:08:26.7342 pid:931 token:[] teal 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/latest-tag/reference/matrix_to_mapping.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"Transform mapping matrix, .e. data frame maps filter state module, list specification like one used mapping attribute teal_slices. Global filters gathered one list element. module active filters global ones, mentioned output.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/matrix_to_mapping.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"","code":"matrix_to_mapping(mapping_matrix)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/matrix_to_mapping.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"mapping_matrix (data.frame) logical vectors columns represent modules row represent teal_slices","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/matrix_to_mapping.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert mapping matrix to filter mapping specification. — matrix_to_mapping","text":"Named list like mapping attribute teal_slices object.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/reference/module_filter_manager.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manage multiple FilteredData objects — module_filter_manager","text":"","code":"filter_manager_ui(id) filter_manager_srv(id, filtered_data_list, filter)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 id. filtered_data_list (named list) list, possibly nested, FilteredData objects. FilteredData served one module teal application. structure list must reflect nesting modules tabs names list must match labels respective modules. filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Manage multiple FilteredData objects — module_filter_manager","text":"list reactives, holding teal_slices, returned filter_manager_module_srv.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Manage multiple FilteredData objects — module_filter_manager","text":"module observes changes filters FilteredData object keeps track filters used. mapping filters modules kept mapping_matrix object (actually data.frame) tracks filters (rows) active modules (columns).","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager_modal.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter manager modal — module_filter_manager_modal","title":"Filter manager modal — module_filter_manager_modal","text":"Opens modal containing filter manager UI.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager_modal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter manager modal — module_filter_manager_modal","text":"","code":"filter_manager_modal_ui(id) filter_manager_modal_srv(id, filtered_data_list, filter)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_filter_manager_modal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter manager modal — module_filter_manager_modal","text":"id (character(1)) shiny module id. filtered_data_list (named list) list, possibly nested, FilteredData objects. FilteredData served one module teal application. structure list must reflect nesting modules tabs names list must match labels respective modules. filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/module_nested_tabs.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a UI of nested tabs of teal_modules — module_nested_tabs","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"Create UI nested tabs teal_modules","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"","code":"ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) # S3 method for default ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) # S3 method for teal_modules ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) # S3 method for teal_module ui_nested_tabs(id, modules, datasets, depth = 0L, is_module_specific = FALSE) srv_nested_tabs( id, datasets, modules, is_module_specific = FALSE, reporter = teal.reporter::Reporter$new() ) # S3 method for default srv_nested_tabs( id, datasets, modules, is_module_specific = FALSE, reporter = teal.reporter::Reporter$new() ) # S3 method for teal_modules srv_nested_tabs( id, datasets, modules, is_module_specific = FALSE, reporter = teal.reporter::Reporter$new() ) # S3 method for teal_module srv_nested_tabs( id, datasets, modules, is_module_specific = TRUE, reporter = teal.reporter::Reporter$new() )"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"id (character(1)) module id modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. datasets (named list FilteredData) object store filter state filtered datasets, shared across modules. details see teal.slice::FilteredData. Structure list must structure modules argument list names must correspond labels modules. filter module-specific list contains object elements. depth (integer(1)) number helps determine depth modules nesting. is_module_specific (logical(1)) flag determining filter panel global module-specific. set TRUE, filter panel called inside module tab. reporter (Reporter) object teal.reporter","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"Depending class modules, ui_nested_tabs returns: teal_module: instantiated UI module. teal_modules: tabsetPanel tab corresponding recursively calling function . srv_nested_tabs returns reactive returns active module corresponds selected tab.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"ui-nested-tabs","dir":"Reference","previous_headings":"","what":"ui_nested_tabs","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"teal_modules translated tabsetPanel children another tab-module called recursively. UI teal_module obtained calling UI function. datasets argument required resolve teal arguments isolated context (respect reactivity).","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_nested_tabs.html","id":"srv-nested-tabs","dir":"Reference","previous_headings":"","what":"srv_nested_tabs","title":"Create a UI of nested tabs of teal_modules — module_nested_tabs","text":"module recursively calls elements modules returns currently active one. teal_module returns self active module. teal_modules also returns module active within self determined input$active_tab.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":null,"dir":"Reference","previous_headings":"","what":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"ui_nested_tabs function returns nested tabbed UI corresponding nested modules. function adds right filter panel main tab.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"","code":"ui_tabs_with_filters(id, modules, datasets, filter = teal_slices()) srv_tabs_with_filters( id, datasets, modules, reporter = teal.reporter::Reporter$new(), filter = teal_slices() )"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"id (character(1)) module id modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. datasets (named list FilteredData) object store filter state filtered datasets, shared across modules. details see teal.slice::FilteredData. Structure list must structure modules argument list names must correspond labels modules. filter module-specific list contains object elements. filter (teal_slices) Specifies initial filter using teal_slices(). reporter (Reporter) object teal.reporter","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"shiny.tag.list containing main menu, placeholders filters placeholders teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_tabs_with_filters.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add right filter panel into each of the top-level teal_modules UIs — module_tabs_with_filters","text":"right filter panel's filter choices affect datasets object. Therefore, modules using datasets share filters. works nested modules depth greater 2, though filter panel inserted right modules depth 1 leaves.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":null,"dir":"Reference","previous_headings":"","what":"teal main app module — module_teal","title":"teal main app module — module_teal","text":"main teal app puts everything together.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"teal main app module — module_teal","text":"","code":"ui_teal( id, splash_ui = tags$h2(\"Starting the Teal App\"), title = build_app_title(), header = tags$p(), footer = tags$p() ) srv_teal(id, modules, teal_data_rv, filter = teal_slices())"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"teal main app module — module_teal","text":"id (character(1)) module id splash_ui (shiny.tag) UI display initially, can splash screen shiny module UI. latter, see init() call corresponding server function. title (shiny.tag character(1)) 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)) header app. footer (shiny.tag character(1)) footer app. modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. teal_data_rv (reactive) returns teal_data, evaluated , NULL value ignored filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"teal main app module — module_teal","text":"Returns reactive expression returns currently active module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"teal main app module — module_teal","text":"displays splash UI used fetch data, possibly prompting password input fetch data. data ready, splash screen replaced actual teal UI tabsetted filter panel datanames relevant current tab. Nested tabs possible, limit two nesting levels reasons clarity UI. splash screen functionality can also used non-delayed data takes time load memory, avoiding shiny session timeouts. Server evaluates teal_data_rv (delayed data mechanism) creates datasets object shared across modules. ready non-NULL, splash screen replaced main teal UI depends data. currently active tab tracked right filter panel updates displayed datasets filter according active datanames tab. written shiny module can added apps well.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":null,"dir":"Reference","previous_headings":"","what":"Add splash screen to teal application — module_teal_with_splash","title":"Add splash screen to teal application — module_teal_with_splash","text":"Displays custom splash screen initial delayed data loading.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add splash screen to teal application — 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/latest-tag/reference/module_teal_with_splash.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add splash screen to teal application — module_teal_with_splash","text":"id (character(1)) module id data (teal_data teal_data_module) constructing data object, refer teal_data() teal_data_module(). title (shiny.tag character(1)) 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)) header app. footer (shiny.tag character(1)) footer app. modules (teal_modules) object containing output modules displayed teal application. See modules() module() details. filter (teal_slices) Specifies initial filter using teal_slices().","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add splash screen to teal application — module_teal_with_splash","text":"Returns reactive expression containing teal_data object data loaded NULL .","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add splash screen to teal application — module_teal_with_splash","text":"module pauses app initialization pending delayed data loading. necessary filter panel modules depend data initialize. teal_with_splash follows shiny module convention. init() wrapper around assumes teal top-level module embedded. Note: longer recommended embed teal shiny apps module. rather use init create standalone application.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/module_teal_with_splash.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add splash screen to teal application — module_teal_with_splash","text":"","code":"teal_modules <- modules(example_module()) # Shiny app with modular integration of teal ui <- fluidPage( ui_teal_with_splash(id = \"app1\", data = teal_data()) ) server <- function(input, output, session) { srv_teal_with_splash( id = \"app1\", data = teal_data(iris = iris), modules = teal_modules ) } if (interactive()) { shinyApp(ui, server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. lifecycle badge magrittr %>%","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/resolve_modules_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Resolve datanames for the modules — resolve_modules_datanames","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"Modifies module$datanames include names parent dataset (taken join_keys). datanames set \"\" replaced available datasets names.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/resolve_modules_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"","code":"resolve_modules_datanames(modules, datanames, join_keys)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/resolve_modules_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"modules (teal_modules) object datanames (character) names datasets available data object join_keys (join_keys) object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/resolve_modules_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Resolve datanames for the modules — resolve_modules_datanames","text":"teal_modules resolved datanames.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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":"returns NULL, invisibly.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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, missing shiny::getDefaultReactiveDomain() used.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/snapshot_manager_module.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter state snapshot management — snapshot_manager_module","title":"Filter state snapshot management — snapshot_manager_module","text":"Capture restore snapshots global (app) filter state.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter state snapshot management — snapshot_manager_module","text":"","code":"snapshot_manager_ui(id) snapshot_manager_srv(id, slices_global, mapping_matrix, filtered_data_list)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter state snapshot management — snapshot_manager_module","text":"id (character(1)) shiny module id slices_global (reactiveVal) contains teal_slices object containing teal_slices existing app, active inactive mapping_matrix (reactive) contains data.frame representation mapping filter state ids (rows) modules labels (columns); columns logical vectors filtered_data_list non-nested (named list) contains FilteredData objects","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Filter state snapshot management — snapshot_manager_module","text":"Nothing returned.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/snapshot_manager_module.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter state snapshot management — snapshot_manager_module","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 filter manager, cog icon top right corner. 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/latest-tag/reference/snapshot_manager_module.html","id":"server-logic","dir":"Reference","previous_headings":"","what":"Server logic","title":"Filter state snapshot management — snapshot_manager_module","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/latest-tag/reference/snapshot_manager_module.html","id":"snapshot-mechanics","dir":"Reference","previous_headings":"","what":"Snapshot mechanics","title":"Filter state snapshot management — snapshot_manager_module","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 filtered_data_list) 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/latest-tag/reference/snapshot_manager_module.html","id":"transferring-snapshots","dir":"Reference","previous_headings":"","what":"Transferring snapshots","title":"Filter state snapshot management — snapshot_manager_module","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/latest-tag/reference/snapshot_manager_module.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Filter state snapshot management — snapshot_manager_module","text":"Aleksander Chlebowski","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a tdata object — tdata","title":"Create a tdata object — tdata","text":"Create new object called tdata contains data, reactive list data.frames (MultiAssayExperiment), attributes: code (reactive) containing code used generate data join_keys (join_keys) containing relationships data metadata (named list) containing metadata associated data frames","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a tdata object — tdata","text":"","code":"new_tdata(data, code = \"\", join_keys = NULL, metadata = NULL)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a tdata object — tdata","text":"data (named list) list data.frame MultiAssayExperiment objects, optionally can reactive. Inside object items made reactive. code (character reactive evaluates character) containing code used generate data. reactive code changing reactive context (e.g. filtering changes code). Inside object code made reactive join_keys (teal.data::join_keys) object containing relationships datasets. metadata (named list) element contains list metadata named data.frame element list atomic length one.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a tdata object — tdata","text":"tdata object.","code":""},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a tdata object — tdata","text":"","code":"data <- new_tdata( data = list(iris = iris, mtcars = reactive(mtcars), dd = data.frame(x = 1:10)), code = \"iris <- iris mtcars <- mtcars dd <- data.frame(x = 1:10)\", metadata = list(dd = list(author = \"NEST\"), iris = list(version = 1)) ) #> Warning: `tdata()` was deprecated in teal 0.15.0. #> ℹ tdata is deprecated and will be removed in the next release. Use `teal_data` #> instead. Please follow migration instructions #> https://github.com/insightsengineering/teal/discussions/987. # Extract a data.frame isolate(data[[\"iris\"]]()) #> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa #> 4 4.6 3.1 1.5 0.2 setosa #> 5 5.0 3.6 1.4 0.2 setosa #> 6 5.4 3.9 1.7 0.4 setosa #> 7 4.6 3.4 1.4 0.3 setosa #> 8 5.0 3.4 1.5 0.2 setosa #> 9 4.4 2.9 1.4 0.2 setosa #> 10 4.9 3.1 1.5 0.1 setosa #> 11 5.4 3.7 1.5 0.2 setosa #> 12 4.8 3.4 1.6 0.2 setosa #> 13 4.8 3.0 1.4 0.1 setosa #> 14 4.3 3.0 1.1 0.1 setosa #> 15 5.8 4.0 1.2 0.2 setosa #> 16 5.7 4.4 1.5 0.4 setosa #> 17 5.4 3.9 1.3 0.4 setosa #> 18 5.1 3.5 1.4 0.3 setosa #> 19 5.7 3.8 1.7 0.3 setosa #> 20 5.1 3.8 1.5 0.3 setosa #> 21 5.4 3.4 1.7 0.2 setosa #> 22 5.1 3.7 1.5 0.4 setosa #> 23 4.6 3.6 1.0 0.2 setosa #> 24 5.1 3.3 1.7 0.5 setosa #> 25 4.8 3.4 1.9 0.2 setosa #> 26 5.0 3.0 1.6 0.2 setosa #> 27 5.0 3.4 1.6 0.4 setosa #> 28 5.2 3.5 1.5 0.2 setosa #> 29 5.2 3.4 1.4 0.2 setosa #> 30 4.7 3.2 1.6 0.2 setosa #> 31 4.8 3.1 1.6 0.2 setosa #> 32 5.4 3.4 1.5 0.4 setosa #> 33 5.2 4.1 1.5 0.1 setosa #> 34 5.5 4.2 1.4 0.2 setosa #> 35 4.9 3.1 1.5 0.2 setosa #> 36 5.0 3.2 1.2 0.2 setosa #> 37 5.5 3.5 1.3 0.2 setosa #> 38 4.9 3.6 1.4 0.1 setosa #> 39 4.4 3.0 1.3 0.2 setosa #> 40 5.1 3.4 1.5 0.2 setosa #> 41 5.0 3.5 1.3 0.3 setosa #> 42 4.5 2.3 1.3 0.3 setosa #> 43 4.4 3.2 1.3 0.2 setosa #> 44 5.0 3.5 1.6 0.6 setosa #> 45 5.1 3.8 1.9 0.4 setosa #> 46 4.8 3.0 1.4 0.3 setosa #> 47 5.1 3.8 1.6 0.2 setosa #> 48 4.6 3.2 1.4 0.2 setosa #> 49 5.3 3.7 1.5 0.2 setosa #> 50 5.0 3.3 1.4 0.2 setosa #> 51 7.0 3.2 4.7 1.4 versicolor #> 52 6.4 3.2 4.5 1.5 versicolor #> 53 6.9 3.1 4.9 1.5 versicolor #> 54 5.5 2.3 4.0 1.3 versicolor #> 55 6.5 2.8 4.6 1.5 versicolor #> 56 5.7 2.8 4.5 1.3 versicolor #> 57 6.3 3.3 4.7 1.6 versicolor #> 58 4.9 2.4 3.3 1.0 versicolor #> 59 6.6 2.9 4.6 1.3 versicolor #> 60 5.2 2.7 3.9 1.4 versicolor #> 61 5.0 2.0 3.5 1.0 versicolor #> 62 5.9 3.0 4.2 1.5 versicolor #> 63 6.0 2.2 4.0 1.0 versicolor #> 64 6.1 2.9 4.7 1.4 versicolor #> 65 5.6 2.9 3.6 1.3 versicolor #> 66 6.7 3.1 4.4 1.4 versicolor #> 67 5.6 3.0 4.5 1.5 versicolor #> 68 5.8 2.7 4.1 1.0 versicolor #> 69 6.2 2.2 4.5 1.5 versicolor #> 70 5.6 2.5 3.9 1.1 versicolor #> 71 5.9 3.2 4.8 1.8 versicolor #> 72 6.1 2.8 4.0 1.3 versicolor #> 73 6.3 2.5 4.9 1.5 versicolor #> 74 6.1 2.8 4.7 1.2 versicolor #> 75 6.4 2.9 4.3 1.3 versicolor #> 76 6.6 3.0 4.4 1.4 versicolor #> 77 6.8 2.8 4.8 1.4 versicolor #> 78 6.7 3.0 5.0 1.7 versicolor #> 79 6.0 2.9 4.5 1.5 versicolor #> 80 5.7 2.6 3.5 1.0 versicolor #> 81 5.5 2.4 3.8 1.1 versicolor #> 82 5.5 2.4 3.7 1.0 versicolor #> 83 5.8 2.7 3.9 1.2 versicolor #> 84 6.0 2.7 5.1 1.6 versicolor #> 85 5.4 3.0 4.5 1.5 versicolor #> 86 6.0 3.4 4.5 1.6 versicolor #> 87 6.7 3.1 4.7 1.5 versicolor #> 88 6.3 2.3 4.4 1.3 versicolor #> 89 5.6 3.0 4.1 1.3 versicolor #> 90 5.5 2.5 4.0 1.3 versicolor #> 91 5.5 2.6 4.4 1.2 versicolor #> 92 6.1 3.0 4.6 1.4 versicolor #> 93 5.8 2.6 4.0 1.2 versicolor #> 94 5.0 2.3 3.3 1.0 versicolor #> 95 5.6 2.7 4.2 1.3 versicolor #> 96 5.7 3.0 4.2 1.2 versicolor #> 97 5.7 2.9 4.2 1.3 versicolor #> 98 6.2 2.9 4.3 1.3 versicolor #> 99 5.1 2.5 3.0 1.1 versicolor #> 100 5.7 2.8 4.1 1.3 versicolor #> 101 6.3 3.3 6.0 2.5 virginica #> 102 5.8 2.7 5.1 1.9 virginica #> 103 7.1 3.0 5.9 2.1 virginica #> 104 6.3 2.9 5.6 1.8 virginica #> 105 6.5 3.0 5.8 2.2 virginica #> 106 7.6 3.0 6.6 2.1 virginica #> 107 4.9 2.5 4.5 1.7 virginica #> 108 7.3 2.9 6.3 1.8 virginica #> 109 6.7 2.5 5.8 1.8 virginica #> 110 7.2 3.6 6.1 2.5 virginica #> 111 6.5 3.2 5.1 2.0 virginica #> 112 6.4 2.7 5.3 1.9 virginica #> 113 6.8 3.0 5.5 2.1 virginica #> 114 5.7 2.5 5.0 2.0 virginica #> 115 5.8 2.8 5.1 2.4 virginica #> 116 6.4 3.2 5.3 2.3 virginica #> 117 6.5 3.0 5.5 1.8 virginica #> 118 7.7 3.8 6.7 2.2 virginica #> 119 7.7 2.6 6.9 2.3 virginica #> 120 6.0 2.2 5.0 1.5 virginica #> 121 6.9 3.2 5.7 2.3 virginica #> 122 5.6 2.8 4.9 2.0 virginica #> 123 7.7 2.8 6.7 2.0 virginica #> 124 6.3 2.7 4.9 1.8 virginica #> 125 6.7 3.3 5.7 2.1 virginica #> 126 7.2 3.2 6.0 1.8 virginica #> 127 6.2 2.8 4.8 1.8 virginica #> 128 6.1 3.0 4.9 1.8 virginica #> 129 6.4 2.8 5.6 2.1 virginica #> 130 7.2 3.0 5.8 1.6 virginica #> 131 7.4 2.8 6.1 1.9 virginica #> 132 7.9 3.8 6.4 2.0 virginica #> 133 6.4 2.8 5.6 2.2 virginica #> 134 6.3 2.8 5.1 1.5 virginica #> 135 6.1 2.6 5.6 1.4 virginica #> 136 7.7 3.0 6.1 2.3 virginica #> 137 6.3 3.4 5.6 2.4 virginica #> 138 6.4 3.1 5.5 1.8 virginica #> 139 6.0 3.0 4.8 1.8 virginica #> 140 6.9 3.1 5.4 2.1 virginica #> 141 6.7 3.1 5.6 2.4 virginica #> 142 6.9 3.1 5.1 2.3 virginica #> 143 5.8 2.7 5.1 1.9 virginica #> 144 6.8 3.2 5.9 2.3 virginica #> 145 6.7 3.3 5.7 2.5 virginica #> 146 6.7 3.0 5.2 2.3 virginica #> 147 6.3 2.5 5.0 1.9 virginica #> 148 6.5 3.0 5.2 2.0 virginica #> 149 6.2 3.4 5.4 2.3 virginica #> 150 5.9 3.0 5.1 1.8 virginica # Get code isolate(get_code_tdata(data)) #> [1] \"iris <- iris\\n mtcars <- mtcars\\n dd <- data.frame(x = 1:10)\" # Get metadata get_metadata(data, \"iris\") #> $version #> [1] 1 #>"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to convert a tdata object to an environment — tdata2env","title":"Function to convert a tdata object to an environment — tdata2env","text":"reactive expressions inside tdata evaluated first.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to convert a tdata object to an environment — tdata2env","text":"","code":"tdata2env(data)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to convert a tdata object to an environment — tdata2env","text":"data (tdata) object","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to convert a tdata object to an environment — tdata2env","text":"environment.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata2env.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to convert a tdata object to an environment — tdata2env","text":"","code":"data <- new_tdata( data = list(iris = iris, mtcars = reactive(mtcars)), code = \"iris <- iris mtcars = mtcars\" ) my_env <- isolate(tdata2env(data))"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":null,"dir":"Reference","previous_headings":"","what":"Downgrade teal_data objects in modules for compatibility — as_tdata","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"Convert teal_data tdata teal modules.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"","code":"as_tdata(x)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"x data object, either tdata teal_data, latter possibly reactive expression","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"Object class tdata.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/tdata_deprecation.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Downgrade teal_data objects in modules for compatibility — as_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/latest-tag/reference/tdata_deprecation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Downgrade teal_data objects in modules for compatibility — as_tdata","text":"","code":"td <- teal_data() td <- within(td, iris <- iris) %>% within(mtcars <- mtcars) td #> ✅︎ verified teal_data object #> [L] #> Parent: #> Bindings: #> • mtcars: [L] #> • iris: [L] as_tdata(td) #> $iris #> reactive({ #> x[[dataname]] #> }) #> #> $mtcars #> reactive({ #> x[[dataname]] #> }) #> #> attr(,\"code\") #> reactive({ #> teal.code::get_code(x) #> }) #> attr(,\"join_keys\") #> An empty join_keys object. #> attr(,\"class\") #> [1] \"tdata\" \"list\" as_tdata(reactive(td)) #> $iris #> reactive({ #> x()[[dataname]] #> }) #> #> $mtcars #> reactive({ #> x()[[dataname]] #> }) #> #> attr(,\"code\") #> reactive({ #> teal.code::get_code(x()) #> }) #> attr(,\"join_keys\") #> An empty join_keys object. #> attr(,\"class\") #> [1] \"tdata\" \"list\""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/reference/teal_data_datanames.html","id":null,"dir":"Reference","previous_headings":"","what":"Wrapper on teal.data::datanames — teal_data_datanames","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"Special function used internals teal return names datasets even datanames set.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/teal_data_datanames.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"","code":"teal_data_datanames(data)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/teal_data_datanames.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"data (teal_data)","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/teal_data_datanames.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Wrapper on teal.data::datanames — teal_data_datanames","text":"character","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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) # S4 method for teal_data_module,character eval_code(object, code) # S3 method for teal_data_module within(data, expr, ...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 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/latest-tag/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 object class teal_data_module. 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/latest-tag/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 supply modify data teal application. module allows running data pre-processing code (creation modification) app starts. 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/latest-tag/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 } ) datanames(data) <- c(\"dataset1\", \"dataset2\") data }) }) } ) eval_code(tdm, \"dataset1 <- subset(dataset1, Species == 'virginica')\") #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> moduleServer(id, function(input, output, session) { #> teal_data_rv <- object$server(\"mutate_inner\") #> #> if (!is.reactive(teal_data_rv)) { #> stop(\"The `teal_data_module` must return a reactive expression.\", call. = FALSE) #> } #> #> td <- eventReactive(teal_data_rv(), #> { #> if (inherits(teal_data_rv(), c(\"teal_data\", \"qenv.error\"))) { #> eval_code(teal_data_rv(), code) #> } else { #> teal_data_rv() #> } #> }, #> ignoreNULL = FALSE #> ) #> td #> }) #> } #> #> #> attr(,\"class\") #> [1] \"teal_data_module\" within(tdm, dataset1 <- subset(dataset1, Species == \"virginica\")) #> $ui #> function(id) { #> ns <- NS(id) #> object$ui(ns(\"mutate_inner\")) #> } #> #> #> $server #> function(id) { #> moduleServer(id, function(input, output, session) { #> teal_data_rv <- object$server(\"mutate_inner\") #> #> if (!is.reactive(teal_data_rv)) { #> stop(\"The `teal_data_module` must return a reactive expression.\", call. = FALSE) #> } #> #> td <- eventReactive(teal_data_rv(), #> { #> if (inherits(teal_data_rv(), c(\"teal_data\", \"qenv.error\"))) { #> eval_code(teal_data_rv(), code) #> } else { #> teal_data_rv() #> } #> }, #> ignoreNULL = FALSE #> ) #> td #> }) #> } #> #> #> attr(,\"class\") #> [1] \"teal_data_module\" # 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) { #> moduleServer(id, function(input, output, session) { #> teal_data_rv <- object$server(\"mutate_inner\") #> #> if (!is.reactive(teal_data_rv)) { #> stop(\"The `teal_data_module` must return a reactive expression.\", call. = FALSE) #> } #> #> td <- eventReactive(teal_data_rv(), #> { #> if (inherits(teal_data_rv(), c(\"teal_data\", \"qenv.error\"))) { #> eval_code(teal_data_rv(), code) #> } else { #> teal_data_rv() #> } #> }, #> ignoreNULL = FALSE #> ) #> td #> }) #> } #> #> #> attr(,\"class\") #> [1] \"teal_data_module\""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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 = teal_data_datanames(x))"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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 datanames(x)","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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, ...) { moduleServer(id, function(input, output, session) { }) }, ui = function(id, ...) { tags$p(paste0(\"This module has no UI (id: \", id, \" )\")) }, filters, datanames = \"all\", server_args = NULL, ui_args = NULL ) modules(..., label = \"root\") # S3 method for teal_module format(x, indent = 0, ...) # S3 method for teal_module print(x, ...) # S3 method for teal_modules format(x, indent = 0, ...) # S3 method for teal_modules print(x, ...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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) vector datanames relevant item. filter panel automatically update shown filters include filters listed datasets. NULL hide filter panel, keyword \"\" show filters datasets. datanames also determines subset datasets appended data argument server function. server_args (named list) additional arguments passed server function. ui_args (named list) additional arguments passed UI function. ... 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 .","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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 teal_slices c(...)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/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. print format, additional arguments passed functions. 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 optional (logical(1)) 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/latest-tag/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/latest-tag/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/latest-tag/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 ) #> module \"module1\" server function takes no data so \"datanames\" will be ignored #> module \"module2\" server function takes no data so \"datanames\" will be ignored if (interactive()) { shinyApp(app$ui, app$server) }"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":null,"dir":"Reference","previous_headings":"","what":"Explicitly enumerate global filters. — unfold_mapping","title":"Explicitly enumerate global filters. — unfold_mapping","text":"Transform module mapping global filters explicitly specified every module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Explicitly enumerate global filters. — unfold_mapping","text":"","code":"unfold_mapping(mapping, module_names)"},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Explicitly enumerate global filters. — unfold_mapping","text":"mapping (named list) stored mapping parameter teal_slices module_names (character) vector containing names modules app","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/reference/unfold_mapping.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Explicitly enumerate global filters. — unfold_mapping","text":"named_list one element per module, element containing filters applied module.","code":""},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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), 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\", ~ if (as.integer(.) %% 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\", ~ if (length(.) > 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(eruptions ~ waiting, faithful, las = 1, pch = 16, col = input[[\"color\"]], cex = input[[\"size\"]] ) }) } if (interactive()) { shinyApp(ui, server) }"},{"path":[]},{"path":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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":"https://insightsengineering.github.io/teal/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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/latest-tag/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":""}] diff --git a/main/404.html b/main/404.html index 9851ef2b39..fcd7605ed5 100644 --- a/main/404.html +++ b/main/404.html @@ -80,6 +80,21 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +