From 776e21d20aed3491334f0eabff938b7f7589ced8 Mon Sep 17 00:00:00 2001 From: donyunardi Date: Fri, 9 Feb 2024 17:07:59 +0000 Subject: [PATCH] [actions skip] Built site for teal@e3a369b9b0ddfd76c49cacfca9e38546eb60d471 --- latest-tag/404.html | 46 +- latest-tag/CODE_OF_CONDUCT.html | 46 +- latest-tag/CONTRIBUTING.html | 50 +- latest-tag/LICENSE-text.html | 44 +- latest-tag/SECURITY.html | 46 +- .../adding-support-for-reporting.html | 306 +- latest-tag/articles/blueprint/actors.html | 275 + latest-tag/articles/blueprint/dataflow.html | 207 + .../articles/blueprint/filter_panel.html | 216 + .../articles/blueprint/in_app_data.html | 186 + latest-tag/articles/blueprint/index.html | 166 + latest-tag/articles/blueprint/input_data.html | 222 + .../figure-html/teal_data_dot_diagram-1.png | Bin 0 -> 17563 bytes latest-tag/articles/blueprint/intro.html | 228 + .../blueprint/module_encapsulation.html | 193 + .../articles/blueprint/product_map.html | 235 + ...mes.html => bootstrap-themes-in-teal.html} | 246 +- .../articles/creating-custom-modules.html | 342 +- latest-tag/articles/data-as-shiny-module.html | 317 + latest-tag/articles/filter-panel.html | 144 +- ...al.html => getting-started-with-teal.html} | 271 +- latest-tag/articles/images/custom_app.png | Bin 51747 -> 116254 bytes latest-tag/articles/images/example_app.png | Bin 92587 -> 0 bytes latest-tag/articles/images/filter_panel.png | Bin 38808 -> 0 bytes .../articles/images/filters-mapping.svg | 1 + .../articles/images/filters_mapping.jpg | Bin 25394 -> 0 bytes .../images/show_code_prepro_missing.png | Bin 0 -> 49689 bytes .../images/show_code_prepro_present.png | Bin 0 -> 48877 bytes .../images/teal-app-components-hover.svg | 1 + .../articles/images/teal-app-components.svg | 1 + .../articles/including-adam-data-in-teal.html | 292 - .../including-data-in-teal-applications.html | 473 + .../including-general-data-in-teal.html | 210 - .../articles/including-mae-data-in-teal.html | 177 - latest-tag/articles/index.html | 110 +- latest-tag/articles/preprocessing-data.html | 231 - latest-tag/articles/teal-options.html | 231 +- latest-tag/authors.html | 71 +- latest-tag/coverage-report/index.html | 24946 ---------------- .../css/bootstrap-theme.min.css | 5 - .../lib/bootstrap-3.3.5/css/bootstrap.min.css | 5 - .../lib/bootstrap-3.3.5/js/bootstrap.min.js | 7 - .../lib/bootstrap-3.3.5/shim/html5shiv.min.js | 7 - .../lib/bootstrap-3.3.5/shim/respond.min.js | 8 - .../lib/crosstalk-1.2.0/css/crosstalk.min.css | 1 - .../lib/crosstalk-1.2.0/js/crosstalk.js | 1474 - .../lib/crosstalk-1.2.0/js/crosstalk.js.map | 37 - .../lib/crosstalk-1.2.0/js/crosstalk.min.js | 2 - .../crosstalk-1.2.0/js/crosstalk.min.js.map | 1 - .../lib/crosstalk-1.2.0/scss/crosstalk.scss | 75 - .../lib/datatables-binding-0.28/datatables.js | 1515 - .../datatables-crosstalk.css | 32 - .../css/jquery.dataTables.extra.css | 28 - .../css/jquery.dataTables.min.css | 1 - .../js/jquery.dataTables.min.js | 4 - .../lib/highlight.js-6.2/LICENSE | 24 - .../lib/highlight.js-6.2/highlight.pack.js | 1 - .../lib/highlight.js-6.2/rstudio.css | 81 - .../lib/htmlwidgets-1.6.2/htmlwidgets.js | 901 - .../lib/jquery-3.6.0/jquery-3.6.0.js | 10881 ------- .../lib/jquery-3.6.0/jquery-3.6.0.min.js | 2 - .../lib/jquery-3.6.0/jquery-3.6.0.min.map | 1 - .../bootstrap-5.2.2/bootstrap.bundle.min.js | 7 - .../bootstrap.bundle.min.js.map | 1 - .../deps/bootstrap-5.2.2/bootstrap.min.css | 6 - .../bootstrap-5.3.1/bootstrap.bundle.min.js | 7 + .../bootstrap.bundle.min.js.map | 1 + .../deps/bootstrap-5.3.1/bootstrap.min.css | 5 + latest-tag/deps/bootstrap-5.3.1/font.css | 124 + ...txg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff | Bin 0 -> 27828 bytes ...txg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff | Bin 0 -> 27492 bytes .../1adeadb2fe618c5ed46221f15e12b9c8.woff | Bin 0 -> 46088 bytes .../fonts/4iCs6KVjbNBYlgo6ew.woff | Bin 0 -> 134032 bytes .../fonts/4iCs6KVjbNBYlgoKfw7w.woff | Bin 0 -> 39832 bytes .../fonts/4iCv6KVjbNBYlgoCxCvTtA.woff | Bin 0 -> 117140 bytes .../fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff | Bin 0 -> 34452 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff | Bin 0 -> 17760 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff | Bin 0 -> 49156 bytes .../fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff | Bin 0 -> 74684 bytes .../6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff | Bin 0 -> 18420 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff | Bin 0 -> 74348 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff | Bin 0 -> 74332 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff | Bin 0 -> 18388 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff | Bin 0 -> 74148 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff | Bin 0 -> 18340 bytes .../fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff | Bin 0 -> 16724 bytes .../fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff | Bin 0 -> 29672 bytes .../fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff | Bin 0 -> 75128 bytes .../fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff | Bin 0 -> 16516 bytes ...xRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff | Bin 0 -> 55992 bytes ...xRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff | Bin 0 -> 56004 bytes ...g3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff | Bin 0 -> 47720 bytes ...g3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff | Bin 0 -> 47924 bytes ...HjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff | Bin 0 -> 50580 bytes ...HjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff | Bin 0 -> 50580 bytes ...HjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff | Bin 0 -> 51108 bytes .../fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff | Bin 0 -> 20544 bytes .../fonts/KFOlCnqEu92Fr1MmEU9vAA.woff | Bin 0 -> 65756 bytes .../fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff | Bin 0 -> 20416 bytes .../fonts/KFOlCnqEu92Fr1MmSU5vAA.woff | Bin 0 -> 65164 bytes .../fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff | Bin 0 -> 20408 bytes .../fonts/KFOlCnqEu92Fr1MmWUlvAA.woff | Bin 0 -> 65556 bytes .../fonts/KFOmCnqEu92Fr1Me5g.woff | Bin 0 -> 65456 bytes .../fonts/KFOmCnqEu92Fr1Mu4mxM.woff | Bin 0 -> 20344 bytes .../fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff | Bin 0 -> 89776 bytes .../fonts/S6u8w4BMUTPHjxsAXC-s.woff | Bin 0 -> 29864 bytes .../fonts/S6u8w4BMUTPHjxswWA.woff | Bin 0 -> 35436 bytes .../fonts/S6u9w4BMUTPHh6UVSwiPHw.woff | Bin 0 -> 28044 bytes .../fonts/S6u9w4BMUTPHh6UVeww.woff | Bin 0 -> 33296 bytes .../fonts/S6u9w4BMUTPHh7USSwiPHw.woff | Bin 0 -> 30016 bytes .../fonts/S6u9w4BMUTPHh7USeww.woff | Bin 0 -> 35168 bytes .../fonts/S6uyw4BMUTPHjx4wWA.woff | Bin 0 -> 28648 bytes .../fonts/S6uyw4BMUTPHvxo.woff | Bin 0 -> 34020 bytes ...HuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff | Bin 0 -> 138900 bytes ...HuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff | Bin 0 -> 137508 bytes ...HuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff | Bin 0 -> 128192 bytes .../XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff | Bin 0 -> 53216 bytes .../XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff | Bin 0 -> 54196 bytes .../XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff | Bin 0 -> 53856 bytes .../a98f7a7574819ba83bec6279a2cecd95.woff | Bin 0 -> 45884 bytes ...cVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff | Bin 0 -> 72136 bytes ...SCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff | Bin 0 -> 23636 bytes ...cVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff | Bin 0 -> 74700 bytes ...SCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff | Bin 0 -> 23576 bytes ...cVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff | Bin 0 -> 74564 bytes ...cVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff | Bin 0 -> 74940 bytes ...cVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff | Bin 0 -> 74644 bytes ...SCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff | Bin 0 -> 22964 bytes ...cVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff | Bin 0 -> 71660 bytes ...X2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff | Bin 0 -> 22332 bytes ...vWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff | Bin 0 -> 68664 bytes ...vWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff | Bin 0 -> 70652 bytes ...vWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff | Bin 0 -> 69392 bytes ...X2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff | Bin 0 -> 22940 bytes ...vWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff | Bin 0 -> 70524 bytes ...X2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff | Bin 0 -> 22908 bytes ...vWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff | Bin 0 -> 70792 bytes ...vWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff | Bin 0 -> 71144 bytes .../fonts/q5uGsou0JOdh94bfvQlr.woff | Bin 0 -> 31584 bytes latest-tag/deps/data-deps.txt | 4 +- latest-tag/index.html | 161 +- latest-tag/news/index.html | 145 +- latest-tag/pkgdown.yml | 21 +- latest-tag/pull_request_template.html | 46 +- latest-tag/reference/TealReportCard.html | 64 +- latest-tag/reference/TealSlicesBlock.html | 73 +- latest-tag/reference/append_module.html | 56 +- latest-tag/reference/build_app_title.html | 153 + latest-tag/reference/calculate_hashes.html | 48 +- ...odule.html => check_filter_datanames.html} | 87 +- .../reference/check_modules_datanames.html | 151 + latest-tag/reference/create_app_id.html | 154 + latest-tag/reference/deep_copy_filter.html | 46 +- .../reference/dot-datasets_to_data.html | 70 +- latest-tag/reference/example_cdisc_data.html | 119 - latest-tag/reference/example_datasets.html | 117 - latest-tag/reference/example_module.html | 59 +- latest-tag/reference/figures/filterpanel.png | Bin 0 -> 116824 bytes latest-tag/reference/figures/notification.jpg | Bin 0 -> 288712 bytes latest-tag/reference/figures/readme_app.gif | Bin 1348181 -> 0 bytes latest-tag/reference/figures/readme_app.webp | Bin 0 -> 786974 bytes latest-tag/reference/figures/reporter.jpg | Bin 0 -> 207761 bytes latest-tag/reference/figures/showrcode.jpg | Bin 0 -> 278194 bytes latest-tag/reference/figures/teal.png | Bin 33053 -> 79859 bytes .../reference/filter_manager_module_srv.html | 57 +- latest-tag/reference/get_client_timezone.html | 66 +- latest-tag/reference/get_code_tdata.html | 56 +- latest-tag/reference/get_datasets_code.html | 51 +- latest-tag/reference/get_metadata.html | 52 +- latest-tag/reference/get_rcode_libraries.html | 50 +- latest-tag/reference/get_teal_bs_theme.html | 107 - latest-tag/reference/include_css_files.html | 52 +- latest-tag/reference/include_js_files.html | 48 +- latest-tag/reference/include_teal_css_js.html | 64 +- latest-tag/reference/index.html | 135 +- latest-tag/reference/init.html | 149 +- latest-tag/reference/is_arg_used.html | 50 +- ...et_join_keys.html => join_keys.tdata.html} | 73 +- .../reference/landing_popup_module.html | 215 + latest-tag/reference/matrix_to_mapping.html | 48 +- latest-tag/reference/module.html | 228 - .../reference/module_filter_manager.html | 63 +- .../module_filter_manager_modal.html | 100 +- latest-tag/reference/module_labels.html | 145 + latest-tag/reference/module_management.html | 154 + latest-tag/reference/module_nested_tabs.html | 108 +- .../reference/module_tabs_with_filters.html | 95 +- latest-tag/reference/module_teal.html | 127 +- .../reference/module_teal_with_splash.html | 225 + latest-tag/reference/modules.html | 207 - latest-tag/reference/modules_depth.html | 85 +- latest-tag/reference/reexports.html | 52 +- .../reference/report_card_template.html | 170 + .../reference/reporter_previewer_module.html | 68 +- .../reference/resolve_modules_datanames.html | 155 + latest-tag/reference/run_js_files.html | 56 +- latest-tag/reference/show_rcode_modal.html | 63 +- latest-tag/reference/slices_store.html | 171 + .../reference/snapshot_manager_module.html | 76 +- .../reference/srv_teal_with_splash.html | 156 - latest-tag/reference/tdata.html | 96 +- latest-tag/reference/tdata2env.html | 62 +- latest-tag/reference/tdata_deprecation.html | 204 + latest-tag/reference/teal-package.html | 67 +- ..._modules.html => teal_data_datanames.html} | 64 +- latest-tag/reference/teal_data_module.html | 338 + .../reference/teal_data_to_filtered_data.html | 148 + latest-tag/reference/teal_modules.html | 303 + latest-tag/reference/teal_slices.html | 135 +- latest-tag/reference/ui_teal_with_splash.html | 170 - latest-tag/reference/unfold_mapping.html | 48 +- .../reference/validate_app_title_tag.html | 138 + latest-tag/reference/validate_has_data.html | 65 +- .../reference/validate_has_elements.html | 46 +- .../reference/validate_has_variable.html | 52 +- latest-tag/reference/validate_in.html | 52 +- latest-tag/reference/validate_inputs.html | 48 +- latest-tag/reference/validate_n_levels.html | 46 +- .../reference/validate_no_intersection.html | 48 +- .../reference/validate_one_row_per_id.html | 50 +- latest-tag/search.json | 2 +- latest-tag/sitemap.xml | 107 +- latest-tag/unit-test-report/index.html | 109 - main/404.html | 1 + main/CODE_OF_CONDUCT.html | 1 + main/CONTRIBUTING.html | 1 + main/LICENSE-text.html | 1 + main/SECURITY.html | 1 + .../adding-support-for-reporting.html | 1 + main/articles/blueprint/actors.html | 1 + main/articles/blueprint/dataflow.html | 1 + main/articles/blueprint/filter_panel.html | 1 + main/articles/blueprint/in_app_data.html | 1 + main/articles/blueprint/index.html | 1 + main/articles/blueprint/input_data.html | 1 + main/articles/blueprint/intro.html | 1 + .../blueprint/module_encapsulation.html | 1 + main/articles/blueprint/product_map.html | 1 + main/articles/bootstrap-themes-in-teal.html | 1 + main/articles/creating-custom-modules.html | 1 + main/articles/data-as-shiny-module.html | 1 + main/articles/filter-panel.html | 1 + main/articles/getting-started-with-teal.html | 1 + .../including-data-in-teal-applications.html | 1 + main/articles/index.html | 1 + main/articles/teal-options.html | 1 + main/authors.html | 1 + main/index.html | 1 + main/news/index.html | 1 + main/pull_request_template.html | 1 + main/reference/TealReportCard.html | 1 + main/reference/TealSlicesBlock.html | 1 + main/reference/append_module.html | 1 + main/reference/build_app_title.html | 1 + main/reference/calculate_hashes.html | 1 + main/reference/check_filter_datanames.html | 1 + main/reference/check_modules_datanames.html | 1 + main/reference/create_app_id.html | 1 + main/reference/deep_copy_filter.html | 1 + main/reference/dot-datasets_to_data.html | 1 + main/reference/example_module.html | 1 + main/reference/filter_manager_module_srv.html | 1 + main/reference/get_client_timezone.html | 1 + main/reference/get_code_tdata.html | 1 + main/reference/get_datasets_code.html | 1 + main/reference/get_metadata.html | 1 + main/reference/get_rcode_libraries.html | 1 + main/reference/include_css_files.html | 1 + main/reference/include_js_files.html | 1 + main/reference/include_teal_css_js.html | 1 + main/reference/index.html | 1 + main/reference/init.html | 1 + main/reference/is_arg_used.html | 1 + main/reference/join_keys.tdata.html | 1 + main/reference/landing_popup_module.html | 1 + main/reference/matrix_to_mapping.html | 1 + main/reference/module_filter_manager.html | 1 + .../module_filter_manager_modal.html | 1 + main/reference/module_labels.html | 1 + main/reference/module_management.html | 1 + main/reference/module_nested_tabs.html | 1 + main/reference/module_tabs_with_filters.html | 1 + main/reference/module_teal.html | 1 + main/reference/module_teal_with_splash.html | 1 + main/reference/modules_depth.html | 1 + main/reference/reexports.html | 1 + main/reference/report_card_template.html | 1 + main/reference/reporter_previewer_module.html | 1 + main/reference/resolve_modules_datanames.html | 1 + main/reference/run_js_files.html | 1 + main/reference/show_rcode_modal.html | 1 + main/reference/slices_store.html | 1 + main/reference/snapshot_manager_module.html | 1 + main/reference/tdata.html | 1 + main/reference/tdata2env.html | 1 + main/reference/tdata_deprecation.html | 1 + main/reference/teal-package.html | 1 + main/reference/teal_data_datanames.html | 1 + main/reference/teal_data_module.html | 1 + .../reference/teal_data_to_filtered_data.html | 1 + main/reference/teal_modules.html | 1 + main/reference/teal_slices.html | 1 + main/reference/unfold_mapping.html | 1 + main/reference/validate_app_title_tag.html | 1 + main/reference/validate_has_data.html | 1 + main/reference/validate_has_elements.html | 1 + main/reference/validate_has_variable.html | 1 + main/reference/validate_in.html | 1 + main/reference/validate_inputs.html | 1 + main/reference/validate_n_levels.html | 1 + main/reference/validate_no_intersection.html | 1 + main/reference/validate_one_row_per_id.html | 1 + release-candidate/404.html | 1 + release-candidate/CODE_OF_CONDUCT.html | 1 + release-candidate/CONTRIBUTING.html | 1 + release-candidate/LICENSE-text.html | 1 + release-candidate/SECURITY.html | 1 + .../adding-support-for-reporting.html | 1 + .../articles/blueprint/actors.html | 1 + .../articles/blueprint/dataflow.html | 1 + .../articles/blueprint/filter_panel.html | 1 + .../articles/blueprint/in_app_data.html | 1 + .../articles/blueprint/index.html | 1 + .../articles/blueprint/input_data.html | 1 + .../articles/blueprint/intro.html | 1 + .../blueprint/module_encapsulation.html | 1 + .../articles/blueprint/product_map.html | 1 + .../articles/bootstrap-themes-in-teal.html | 1 + .../articles/creating-custom-modules.html | 1 + .../articles/data-as-shiny-module.html | 1 + release-candidate/articles/filter-panel.html | 1 + .../articles/getting-started-with-teal.html | 1 + .../including-data-in-teal-applications.html | 1 + release-candidate/articles/index.html | 1 + release-candidate/articles/teal-options.html | 1 + release-candidate/authors.html | 1 + release-candidate/index.html | 1 + release-candidate/news/index.html | 1 + release-candidate/pull_request_template.html | 1 + .../reference/TealReportCard.html | 1 + .../reference/TealSlicesBlock.html | 1 + .../reference/append_module.html | 1 + .../reference/build_app_title.html | 1 + .../reference/calculate_hashes.html | 1 + .../reference/check_filter_datanames.html | 1 + .../reference/check_modules_datanames.html | 1 + .../reference/create_app_id.html | 1 + .../reference/deep_copy_filter.html | 1 + .../reference/dot-datasets_to_data.html | 1 + .../reference/example_module.html | 1 + .../reference/filter_manager_module_srv.html | 1 + .../reference/get_client_timezone.html | 1 + .../reference/get_code_tdata.html | 1 + .../reference/get_datasets_code.html | 1 + release-candidate/reference/get_metadata.html | 1 + .../reference/get_rcode_libraries.html | 1 + .../reference/include_css_files.html | 1 + .../reference/include_js_files.html | 1 + .../reference/include_teal_css_js.html | 1 + release-candidate/reference/index.html | 1 + release-candidate/reference/init.html | 1 + release-candidate/reference/is_arg_used.html | 1 + .../reference/join_keys.tdata.html | 1 + .../reference/landing_popup_module.html | 1 + .../reference/matrix_to_mapping.html | 1 + .../reference/module_filter_manager.html | 1 + .../module_filter_manager_modal.html | 1 + .../reference/module_labels.html | 1 + .../reference/module_management.html | 1 + .../reference/module_nested_tabs.html | 1 + .../reference/module_tabs_with_filters.html | 1 + release-candidate/reference/module_teal.html | 1 + .../reference/module_teal_with_splash.html | 1 + .../reference/modules_depth.html | 1 + release-candidate/reference/reexports.html | 1 + .../reference/report_card_template.html | 1 + .../reference/reporter_previewer_module.html | 1 + .../reference/resolve_modules_datanames.html | 1 + release-candidate/reference/run_js_files.html | 1 + .../reference/show_rcode_modal.html | 1 + release-candidate/reference/slices_store.html | 1 + .../reference/snapshot_manager_module.html | 1 + release-candidate/reference/tdata.html | 1 + release-candidate/reference/tdata2env.html | 1 + .../reference/tdata_deprecation.html | 1 + release-candidate/reference/teal-package.html | 1 + .../reference/teal_data_datanames.html | 1 + .../reference/teal_data_module.html | 1 + .../reference/teal_data_to_filtered_data.html | 1 + release-candidate/reference/teal_modules.html | 1 + release-candidate/reference/teal_slices.html | 1 + .../reference/unfold_mapping.html | 1 + .../reference/validate_app_title_tag.html | 1 + .../reference/validate_has_data.html | 1 + .../reference/validate_has_elements.html | 1 + .../reference/validate_has_variable.html | 1 + release-candidate/reference/validate_in.html | 1 + .../reference/validate_inputs.html | 1 + .../reference/validate_n_levels.html | 1 + .../reference/validate_no_intersection.html | 1 + .../reference/validate_one_row_per_id.html | 1 + v0.12.0/404.html | 1 + v0.12.0/CODE_OF_CONDUCT.html | 1 + v0.12.0/CONTRIBUTING.html | 1 + v0.12.0/LICENSE-text.html | 1 + v0.12.0/SECURITY.html | 1 + .../adding-support-for-reporting.html | 1 + v0.12.0/articles/creating-custom-modules.html | 1 + .../articles/including-adam-data-in-teal.html | 1 + .../including-general-data-in-teal.html | 1 + .../articles/including-mae-data-in-teal.html | 1 + v0.12.0/articles/index.html | 1 + v0.12.0/articles/preprocessing-data.html | 1 + v0.12.0/articles/teal-bs-themes.html | 1 + v0.12.0/articles/teal-options.html | 1 + v0.12.0/articles/teal.html | 1 + v0.12.0/authors.html | 1 + v0.12.0/index.html | 1 + v0.12.0/news/index.html | 1 + v0.12.0/pull_request_template.html | 1 + v0.12.0/reference/append_module.html | 1 + v0.12.0/reference/bookmarkableShinyApp.html | 1 + v0.12.0/reference/default_filter.html | 1 + v0.12.0/reference/dot-log.html | 1 + v0.12.0/reference/example_module.html | 1 + v0.12.0/reference/filter_calls_module.html | 1 + v0.12.0/reference/fold_lines.html | 1 + v0.12.0/reference/get_client_timezone.html | 1 + v0.12.0/reference/get_datasets_code.html | 1 + v0.12.0/reference/get_dummy_cdisc_data.html | 1 + v0.12.0/reference/get_dummy_datasets.html | 1 + v0.12.0/reference/get_dummy_filter.html | 1 + v0.12.0/reference/get_dummy_modules.html | 1 + v0.12.0/reference/get_rcode.html | 1 + v0.12.0/reference/get_rcode_header.html | 1 + v0.12.0/reference/get_rcode_libraries.html | 1 + v0.12.0/reference/get_rcode_srv.html | 1 + v0.12.0/reference/get_rcode_ui.html | 1 + v0.12.0/reference/get_teal_bs_theme.html | 1 + v0.12.0/reference/include_css_files.html | 1 + v0.12.0/reference/include_js_files.html | 1 + v0.12.0/reference/include_teal_css_js.html | 1 + v0.12.0/reference/index.html | 1 + v0.12.0/reference/init.html | 1 + v0.12.0/reference/is_arg_used.html | 1 + v0.12.0/reference/line_pkg_log.html | 1 + v0.12.0/reference/line_usage_log.html | 1 + v0.12.0/reference/log_app_usage.html | 1 + v0.12.0/reference/module.html | 1 + v0.12.0/reference/modules.html | 1 + v0.12.0/reference/modules_depth.html | 1 + v0.12.0/reference/pad.html | 1 + v0.12.0/reference/reexports.html | 1 + .../reference/reporter_previewer_module.html | 1 + v0.12.0/reference/root_modules.html | 1 + v0.12.0/reference/run_js_files.html | 1 + v0.12.0/reference/show_rcode_modal.html | 1 + v0.12.0/reference/srv_nested_tabs.html | 1 + v0.12.0/reference/srv_tabs_with_filters.html | 1 + v0.12.0/reference/srv_teal.html | 1 + v0.12.0/reference/srv_teal_with_splash.html | 1 + v0.12.0/reference/teal-package.html | 1 + v0.12.0/reference/ui_nested_tabs.html | 1 + v0.12.0/reference/ui_tabs_with_filters.html | 1 + v0.12.0/reference/ui_teal.html | 1 + v0.12.0/reference/ui_teal_with_splash.html | 1 + v0.12.0/reference/validate_has_data.html | 1 + v0.12.0/reference/validate_has_elements.html | 1 + v0.12.0/reference/validate_has_variable.html | 1 + v0.12.0/reference/validate_in.html | 1 + v0.12.0/reference/validate_n_levels.html | 1 + .../reference/validate_no_intersection.html | 1 + .../reference/validate_one_row_per_id.html | 1 + v0.13.0/404.html | 1 + v0.13.0/CODE_OF_CONDUCT.html | 1 + v0.13.0/CONTRIBUTING.html | 1 + v0.13.0/LICENSE-text.html | 1 + v0.13.0/SECURITY.html | 1 + .../adding-support-for-reporting.html | 1 + v0.13.0/articles/creating-custom-modules.html | 1 + .../articles/including-adam-data-in-teal.html | 1 + .../including-general-data-in-teal.html | 1 + .../articles/including-mae-data-in-teal.html | 1 + v0.13.0/articles/index.html | 1 + v0.13.0/articles/preprocessing-data.html | 1 + v0.13.0/articles/teal-bs-themes.html | 1 + v0.13.0/articles/teal-options.html | 1 + v0.13.0/articles/teal.html | 1 + v0.13.0/authors.html | 1 + v0.13.0/index.html | 1 + v0.13.0/news/index.html | 1 + v0.13.0/pull_request_template.html | 1 + v0.13.0/reference/append_module.html | 1 + v0.13.0/reference/calculate_hashes.html | 1 + v0.13.0/reference/dot-datasets_to_data.html | 1 + v0.13.0/reference/example_module.html | 1 + v0.13.0/reference/filter_calls_module.html | 1 + v0.13.0/reference/fold_lines.html | 1 + v0.13.0/reference/get_client_timezone.html | 1 + v0.13.0/reference/get_code_tdata.html | 1 + v0.13.0/reference/get_datasets_code.html | 1 + v0.13.0/reference/get_dummy_cdisc_data.html | 1 + v0.13.0/reference/get_dummy_datasets.html | 1 + v0.13.0/reference/get_dummy_filter.html | 1 + v0.13.0/reference/get_dummy_modules.html | 1 + v0.13.0/reference/get_join_keys.html | 1 + v0.13.0/reference/get_metadata.html | 1 + v0.13.0/reference/get_rcode.html | 1 + v0.13.0/reference/get_rcode_header.html | 1 + v0.13.0/reference/get_rcode_libraries.html | 1 + v0.13.0/reference/get_rcode_srv.html | 1 + v0.13.0/reference/get_rcode_ui.html | 1 + v0.13.0/reference/get_teal_bs_theme.html | 1 + v0.13.0/reference/include_css_files.html | 1 + v0.13.0/reference/include_js_files.html | 1 + v0.13.0/reference/include_teal_css_js.html | 1 + v0.13.0/reference/index.html | 1 + v0.13.0/reference/init.html | 1 + v0.13.0/reference/is_arg_used.html | 1 + v0.13.0/reference/module.html | 1 + v0.13.0/reference/modules.html | 1 + v0.13.0/reference/modules_depth.html | 1 + v0.13.0/reference/pad.html | 1 + v0.13.0/reference/reexports.html | 1 + .../reference/reporter_previewer_module.html | 1 + v0.13.0/reference/run_js_files.html | 1 + v0.13.0/reference/show_rcode_modal.html | 1 + v0.13.0/reference/srv_nested_tabs.html | 1 + v0.13.0/reference/srv_tabs_with_filters.html | 1 + v0.13.0/reference/srv_teal.html | 1 + v0.13.0/reference/srv_teal_with_splash.html | 1 + v0.13.0/reference/tdata.html | 1 + v0.13.0/reference/tdata2env.html | 1 + v0.13.0/reference/teal-package.html | 1 + v0.13.0/reference/ui_nested_tabs.html | 1 + v0.13.0/reference/ui_tabs_with_filters.html | 1 + v0.13.0/reference/ui_teal.html | 1 + v0.13.0/reference/ui_teal_with_splash.html | 1 + v0.13.0/reference/validate_has_data.html | 1 + v0.13.0/reference/validate_has_elements.html | 1 + v0.13.0/reference/validate_has_variable.html | 1 + v0.13.0/reference/validate_in.html | 1 + v0.13.0/reference/validate_inputs.html | 1 + v0.13.0/reference/validate_n_levels.html | 1 + .../reference/validate_no_intersection.html | 1 + .../reference/validate_one_row_per_id.html | 1 + v0.14.0/404.html | 1 + v0.14.0/CODE_OF_CONDUCT.html | 1 + v0.14.0/CONTRIBUTING.html | 1 + v0.14.0/LICENSE-text.html | 1 + v0.14.0/SECURITY.html | 1 + .../adding-support-for-reporting.html | 1 + v0.14.0/articles/creating-custom-modules.html | 1 + v0.14.0/articles/filter-panel.html | 1 + .../articles/including-adam-data-in-teal.html | 1 + .../including-general-data-in-teal.html | 1 + .../articles/including-mae-data-in-teal.html | 1 + v0.14.0/articles/index.html | 1 + v0.14.0/articles/preprocessing-data.html | 1 + v0.14.0/articles/teal-bs-themes.html | 1 + v0.14.0/articles/teal-options.html | 1 + v0.14.0/articles/teal.html | 1 + v0.14.0/authors.html | 1 + v0.14.0/index.html | 1 + v0.14.0/news/index.html | 1 + v0.14.0/pull_request_template.html | 1 + v0.14.0/reference/TealReportCard.html | 1 + v0.14.0/reference/TealSlicesBlock.html | 1 + v0.14.0/reference/append_module.html | 1 + v0.14.0/reference/calculate_hashes.html | 1 + v0.14.0/reference/deep_copy_filter.html | 1 + v0.14.0/reference/dot-datasets_to_data.html | 1 + v0.14.0/reference/example_cdisc_data.html | 1 + v0.14.0/reference/example_datasets.html | 1 + v0.14.0/reference/example_module.html | 1 + v0.14.0/reference/example_modules.html | 1 + v0.14.0/reference/filter_calls_module.html | 1 + .../reference/filter_manager_module_srv.html | 1 + v0.14.0/reference/get_client_timezone.html | 1 + v0.14.0/reference/get_code_tdata.html | 1 + v0.14.0/reference/get_datasets_code.html | 1 + v0.14.0/reference/get_join_keys.html | 1 + v0.14.0/reference/get_metadata.html | 1 + v0.14.0/reference/get_rcode_libraries.html | 1 + v0.14.0/reference/get_teal_bs_theme.html | 1 + v0.14.0/reference/include_css_files.html | 1 + v0.14.0/reference/include_js_files.html | 1 + v0.14.0/reference/include_teal_css_js.html | 1 + v0.14.0/reference/index.html | 1 + v0.14.0/reference/init.html | 1 + v0.14.0/reference/is_arg_used.html | 1 + v0.14.0/reference/matrix_to_mapping.html | 1 + v0.14.0/reference/module.html | 1 + v0.14.0/reference/module_filter_manager.html | 1 + .../module_filter_manager_modal.html | 1 + v0.14.0/reference/module_nested_tabs.html | 1 + .../reference/module_tabs_with_filters.html | 1 + v0.14.0/reference/module_teal.html | 1 + v0.14.0/reference/modules.html | 1 + v0.14.0/reference/modules_depth.html | 1 + v0.14.0/reference/reexports.html | 1 + .../reference/reporter_previewer_module.html | 1 + v0.14.0/reference/run_js_files.html | 1 + v0.14.0/reference/show_rcode_modal.html | 1 + .../reference/snapshot_manager_module.html | 1 + v0.14.0/reference/srv_teal_with_splash.html | 1 + v0.14.0/reference/tdata.html | 1 + v0.14.0/reference/tdata2env.html | 1 + v0.14.0/reference/teal-package.html | 1 + v0.14.0/reference/teal_slices.html | 1 + v0.14.0/reference/ui_teal_with_splash.html | 1 + v0.14.0/reference/unfold_mapping.html | 1 + v0.14.0/reference/validate_has_data.html | 1 + v0.14.0/reference/validate_has_elements.html | 1 + v0.14.0/reference/validate_has_variable.html | 1 + v0.14.0/reference/validate_in.html | 1 + v0.14.0/reference/validate_inputs.html | 1 + v0.14.0/reference/validate_n_levels.html | 1 + .../reference/validate_no_intersection.html | 1 + .../reference/validate_one_row_per_id.html | 1 + v0.15.0-rc1/404.html | 1 + v0.15.0-rc1/CODE_OF_CONDUCT.html | 1 + v0.15.0-rc1/CONTRIBUTING.html | 1 + v0.15.0-rc1/LICENSE-text.html | 1 + v0.15.0-rc1/SECURITY.html | 1 + .../adding-support-for-reporting.html | 1 + v0.15.0-rc1/articles/blueprint/actors.html | 1 + v0.15.0-rc1/articles/blueprint/dataflow.html | 1 + .../articles/blueprint/filter_panel.html | 1 + .../articles/blueprint/in_app_data.html | 1 + v0.15.0-rc1/articles/blueprint/index.html | 1 + .../articles/blueprint/input_data.html | 1 + v0.15.0-rc1/articles/blueprint/intro.html | 1 + .../blueprint/module_encapsulation.html | 1 + .../articles/blueprint/product_map.html | 1 + .../articles/bootstrap-themes-in-teal.html | 1 + .../articles/creating-custom-modules.html | 1 + .../articles/data-as-shiny-module.html | 1 + v0.15.0-rc1/articles/filter-panel.html | 1 + .../articles/getting-started-with-teal.html | 1 + .../including-data-in-teal-applications.html | 1 + v0.15.0-rc1/articles/index.html | 1 + v0.15.0-rc1/articles/teal-options.html | 1 + v0.15.0-rc1/authors.html | 1 + v0.15.0-rc1/index.html | 1 + v0.15.0-rc1/news/index.html | 1 + v0.15.0-rc1/pull_request_template.html | 1 + v0.15.0-rc1/reference/TealReportCard.html | 1 + v0.15.0-rc1/reference/TealSlicesBlock.html | 1 + v0.15.0-rc1/reference/append_module.html | 1 + v0.15.0-rc1/reference/build_app_title.html | 1 + v0.15.0-rc1/reference/calculate_hashes.html | 1 + .../reference/check_filter_datanames.html | 1 + .../reference/check_modules_datanames.html | 1 + v0.15.0-rc1/reference/create_app_id.html | 1 + v0.15.0-rc1/reference/deep_copy_filter.html | 1 + .../reference/dot-datasets_to_data.html | 1 + v0.15.0-rc1/reference/example_module.html | 1 + .../reference/filter_manager_module_srv.html | 1 + .../reference/get_client_timezone.html | 1 + v0.15.0-rc1/reference/get_code_tdata.html | 1 + v0.15.0-rc1/reference/get_datasets_code.html | 1 + v0.15.0-rc1/reference/get_metadata.html | 1 + .../reference/get_rcode_libraries.html | 1 + v0.15.0-rc1/reference/include_css_files.html | 1 + v0.15.0-rc1/reference/include_js_files.html | 1 + .../reference/include_teal_css_js.html | 1 + v0.15.0-rc1/reference/index.html | 1 + v0.15.0-rc1/reference/init.html | 1 + v0.15.0-rc1/reference/is_arg_used.html | 1 + v0.15.0-rc1/reference/join_keys.tdata.html | 1 + .../reference/landing_popup_module.html | 1 + v0.15.0-rc1/reference/matrix_to_mapping.html | 1 + .../reference/module_filter_manager.html | 1 + .../module_filter_manager_modal.html | 1 + v0.15.0-rc1/reference/module_labels.html | 1 + v0.15.0-rc1/reference/module_management.html | 1 + v0.15.0-rc1/reference/module_nested_tabs.html | 1 + .../reference/module_tabs_with_filters.html | 1 + v0.15.0-rc1/reference/module_teal.html | 1 + .../reference/module_teal_with_splash.html | 1 + v0.15.0-rc1/reference/modules_depth.html | 1 + v0.15.0-rc1/reference/reexports.html | 1 + .../reference/report_card_template.html | 1 + .../reference/reporter_previewer_module.html | 1 + .../reference/resolve_modules_datanames.html | 1 + v0.15.0-rc1/reference/run_js_files.html | 1 + v0.15.0-rc1/reference/show_rcode_modal.html | 1 + v0.15.0-rc1/reference/slices_store.html | 1 + .../reference/snapshot_manager_module.html | 1 + v0.15.0-rc1/reference/tdata.html | 1 + v0.15.0-rc1/reference/tdata2env.html | 1 + v0.15.0-rc1/reference/tdata_deprecation.html | 1 + v0.15.0-rc1/reference/teal-package.html | 1 + .../reference/teal_data_datanames.html | 1 + v0.15.0-rc1/reference/teal_data_module.html | 1 + .../reference/teal_data_to_filtered_data.html | 1 + v0.15.0-rc1/reference/teal_modules.html | 1 + v0.15.0-rc1/reference/teal_slices.html | 1 + v0.15.0-rc1/reference/unfold_mapping.html | 1 + .../reference/validate_app_title_tag.html | 1 + v0.15.0-rc1/reference/validate_has_data.html | 1 + .../reference/validate_has_elements.html | 1 + .../reference/validate_has_variable.html | 1 + v0.15.0-rc1/reference/validate_in.html | 1 + v0.15.0-rc1/reference/validate_inputs.html | 1 + v0.15.0-rc1/reference/validate_n_levels.html | 1 + .../reference/validate_no_intersection.html | 1 + .../reference/validate_one_row_per_id.html | 1 + v0.15.0/404.html | 13 + v0.15.0/CODE_OF_CONDUCT.html | 13 + v0.15.0/CONTRIBUTING.html | 13 + v0.15.0/LICENSE-text.html | 13 + v0.15.0/SECURITY.html | 13 + .../adding-support-for-reporting.html | 13 + v0.15.0/articles/blueprint/actors.html | 13 + v0.15.0/articles/blueprint/dataflow.html | 13 + v0.15.0/articles/blueprint/filter_panel.html | 13 + v0.15.0/articles/blueprint/in_app_data.html | 13 + v0.15.0/articles/blueprint/index.html | 13 + v0.15.0/articles/blueprint/input_data.html | 13 + v0.15.0/articles/blueprint/intro.html | 13 + .../blueprint/module_encapsulation.html | 13 + v0.15.0/articles/blueprint/product_map.html | 13 + .../articles/bootstrap-themes-in-teal.html | 13 + v0.15.0/articles/creating-custom-modules.html | 13 + v0.15.0/articles/data-as-shiny-module.html | 13 + v0.15.0/articles/filter-panel.html | 13 + .../articles/getting-started-with-teal.html | 13 + .../including-data-in-teal-applications.html | 13 + v0.15.0/articles/index.html | 13 + v0.15.0/articles/teal-options.html | 13 + v0.15.0/authors.html | 13 + v0.15.0/index.html | 13 + v0.15.0/news/index.html | 13 + v0.15.0/pull_request_template.html | 13 + v0.15.0/reference/TealReportCard.html | 13 + v0.15.0/reference/TealSlicesBlock.html | 13 + v0.15.0/reference/append_module.html | 13 + v0.15.0/reference/build_app_title.html | 13 + v0.15.0/reference/calculate_hashes.html | 13 + v0.15.0/reference/check_filter_datanames.html | 13 + .../reference/check_modules_datanames.html | 13 + v0.15.0/reference/create_app_id.html | 13 + v0.15.0/reference/deep_copy_filter.html | 13 + v0.15.0/reference/dot-datasets_to_data.html | 13 + v0.15.0/reference/example_module.html | 13 + .../reference/filter_manager_module_srv.html | 13 + v0.15.0/reference/get_client_timezone.html | 13 + v0.15.0/reference/get_code_tdata.html | 13 + v0.15.0/reference/get_datasets_code.html | 13 + v0.15.0/reference/get_metadata.html | 13 + v0.15.0/reference/get_rcode_libraries.html | 13 + v0.15.0/reference/include_css_files.html | 13 + v0.15.0/reference/include_js_files.html | 13 + v0.15.0/reference/include_teal_css_js.html | 13 + v0.15.0/reference/index.html | 13 + v0.15.0/reference/init.html | 13 + v0.15.0/reference/is_arg_used.html | 13 + v0.15.0/reference/join_keys.tdata.html | 13 + v0.15.0/reference/landing_popup_module.html | 13 + v0.15.0/reference/matrix_to_mapping.html | 13 + v0.15.0/reference/module_filter_manager.html | 13 + .../module_filter_manager_modal.html | 13 + v0.15.0/reference/module_labels.html | 13 + v0.15.0/reference/module_management.html | 13 + v0.15.0/reference/module_nested_tabs.html | 13 + .../reference/module_tabs_with_filters.html | 13 + v0.15.0/reference/module_teal.html | 13 + .../reference/module_teal_with_splash.html | 13 + v0.15.0/reference/modules_depth.html | 13 + v0.15.0/reference/reexports.html | 13 + v0.15.0/reference/report_card_template.html | 13 + .../reference/reporter_previewer_module.html | 13 + .../reference/resolve_modules_datanames.html | 13 + v0.15.0/reference/run_js_files.html | 13 + v0.15.0/reference/show_rcode_modal.html | 13 + v0.15.0/reference/slices_store.html | 13 + .../reference/snapshot_manager_module.html | 13 + v0.15.0/reference/tdata.html | 13 + v0.15.0/reference/tdata2env.html | 13 + v0.15.0/reference/tdata_deprecation.html | 13 + v0.15.0/reference/teal-package.html | 13 + v0.15.0/reference/teal_data_datanames.html | 13 + v0.15.0/reference/teal_data_module.html | 13 + .../reference/teal_data_to_filtered_data.html | 13 + v0.15.0/reference/teal_modules.html | 13 + v0.15.0/reference/teal_slices.html | 13 + v0.15.0/reference/unfold_mapping.html | 13 + v0.15.0/reference/validate_app_title_tag.html | 13 + v0.15.0/reference/validate_has_data.html | 13 + v0.15.0/reference/validate_has_elements.html | 13 + v0.15.0/reference/validate_has_variable.html | 13 + v0.15.0/reference/validate_in.html | 13 + v0.15.0/reference/validate_inputs.html | 13 + v0.15.0/reference/validate_n_levels.html | 13 + .../reference/validate_no_intersection.html | 13 + .../reference/validate_one_row_per_id.html | 13 + v0.15.0/search.json | 2 +- 799 files changed, 10935 insertions(+), 44233 deletions(-) create mode 100644 latest-tag/articles/blueprint/actors.html create mode 100644 latest-tag/articles/blueprint/dataflow.html create mode 100644 latest-tag/articles/blueprint/filter_panel.html create mode 100644 latest-tag/articles/blueprint/in_app_data.html create mode 100644 latest-tag/articles/blueprint/index.html create mode 100644 latest-tag/articles/blueprint/input_data.html create mode 100644 latest-tag/articles/blueprint/input_data_files/figure-html/teal_data_dot_diagram-1.png create mode 100644 latest-tag/articles/blueprint/intro.html create mode 100644 latest-tag/articles/blueprint/module_encapsulation.html create mode 100644 latest-tag/articles/blueprint/product_map.html rename latest-tag/articles/{teal-bs-themes.html => bootstrap-themes-in-teal.html} (64%) create mode 100644 latest-tag/articles/data-as-shiny-module.html rename latest-tag/articles/{teal.html => getting-started-with-teal.html} (50%) delete mode 100644 latest-tag/articles/images/example_app.png delete mode 100644 latest-tag/articles/images/filter_panel.png create mode 100644 latest-tag/articles/images/filters-mapping.svg delete mode 100644 latest-tag/articles/images/filters_mapping.jpg create mode 100644 latest-tag/articles/images/show_code_prepro_missing.png create mode 100644 latest-tag/articles/images/show_code_prepro_present.png create mode 100644 latest-tag/articles/images/teal-app-components-hover.svg create mode 100644 latest-tag/articles/images/teal-app-components.svg delete mode 100644 latest-tag/articles/including-adam-data-in-teal.html create mode 100644 latest-tag/articles/including-data-in-teal-applications.html delete mode 100644 latest-tag/articles/including-general-data-in-teal.html delete mode 100644 latest-tag/articles/including-mae-data-in-teal.html delete mode 100644 latest-tag/articles/preprocessing-data.html delete mode 100644 latest-tag/coverage-report/index.html delete mode 100644 latest-tag/coverage-report/lib/bootstrap-3.3.5/css/bootstrap-theme.min.css delete mode 100644 latest-tag/coverage-report/lib/bootstrap-3.3.5/css/bootstrap.min.css delete mode 100644 latest-tag/coverage-report/lib/bootstrap-3.3.5/js/bootstrap.min.js delete mode 100644 latest-tag/coverage-report/lib/bootstrap-3.3.5/shim/html5shiv.min.js delete mode 100644 latest-tag/coverage-report/lib/bootstrap-3.3.5/shim/respond.min.js delete mode 100644 latest-tag/coverage-report/lib/crosstalk-1.2.0/css/crosstalk.min.css delete mode 100644 latest-tag/coverage-report/lib/crosstalk-1.2.0/js/crosstalk.js delete mode 100644 latest-tag/coverage-report/lib/crosstalk-1.2.0/js/crosstalk.js.map delete mode 100644 latest-tag/coverage-report/lib/crosstalk-1.2.0/js/crosstalk.min.js delete mode 100644 latest-tag/coverage-report/lib/crosstalk-1.2.0/js/crosstalk.min.js.map delete mode 100644 latest-tag/coverage-report/lib/crosstalk-1.2.0/scss/crosstalk.scss delete mode 100644 latest-tag/coverage-report/lib/datatables-binding-0.28/datatables.js delete mode 100644 latest-tag/coverage-report/lib/datatables-css-0.0.0/datatables-crosstalk.css delete mode 100644 latest-tag/coverage-report/lib/dt-core-1.13.4/css/jquery.dataTables.extra.css delete mode 100644 latest-tag/coverage-report/lib/dt-core-1.13.4/css/jquery.dataTables.min.css delete mode 100644 latest-tag/coverage-report/lib/dt-core-1.13.4/js/jquery.dataTables.min.js delete mode 100644 latest-tag/coverage-report/lib/highlight.js-6.2/LICENSE delete mode 100644 latest-tag/coverage-report/lib/highlight.js-6.2/highlight.pack.js delete mode 100644 latest-tag/coverage-report/lib/highlight.js-6.2/rstudio.css delete mode 100644 latest-tag/coverage-report/lib/htmlwidgets-1.6.2/htmlwidgets.js delete mode 100644 latest-tag/coverage-report/lib/jquery-3.6.0/jquery-3.6.0.js delete mode 100644 latest-tag/coverage-report/lib/jquery-3.6.0/jquery-3.6.0.min.js delete mode 100644 latest-tag/coverage-report/lib/jquery-3.6.0/jquery-3.6.0.min.map delete mode 100644 latest-tag/deps/bootstrap-5.2.2/bootstrap.bundle.min.js delete mode 100644 latest-tag/deps/bootstrap-5.2.2/bootstrap.bundle.min.js.map delete mode 100644 latest-tag/deps/bootstrap-5.2.2/bootstrap.min.css create mode 100644 latest-tag/deps/bootstrap-5.3.1/bootstrap.bundle.min.js create mode 100644 latest-tag/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map create mode 100644 latest-tag/deps/bootstrap-5.3.1/bootstrap.min.css create mode 100644 latest-tag/deps/bootstrap-5.3.1/font.css create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/1adeadb2fe618c5ed46221f15e12b9c8.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgo6ew.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw7w.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Me5g.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxM.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-s.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxswWA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVeww.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPHw.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USeww.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wWA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHvxo.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/a98f7a7574819ba83bec6279a2cecd95.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff create mode 100644 latest-tag/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlr.woff create mode 100644 latest-tag/reference/build_app_title.html rename latest-tag/reference/{filter_calls_module.html => check_filter_datanames.html} (62%) create mode 100644 latest-tag/reference/check_modules_datanames.html create mode 100644 latest-tag/reference/create_app_id.html delete mode 100644 latest-tag/reference/example_cdisc_data.html delete mode 100644 latest-tag/reference/example_datasets.html create mode 100644 latest-tag/reference/figures/filterpanel.png create mode 100644 latest-tag/reference/figures/notification.jpg delete mode 100644 latest-tag/reference/figures/readme_app.gif create mode 100644 latest-tag/reference/figures/readme_app.webp create mode 100644 latest-tag/reference/figures/reporter.jpg create mode 100644 latest-tag/reference/figures/showrcode.jpg delete mode 100644 latest-tag/reference/get_teal_bs_theme.html rename latest-tag/reference/{get_join_keys.html => join_keys.tdata.html} (50%) create mode 100644 latest-tag/reference/landing_popup_module.html delete mode 100644 latest-tag/reference/module.html create mode 100644 latest-tag/reference/module_labels.html create mode 100644 latest-tag/reference/module_management.html create mode 100644 latest-tag/reference/module_teal_with_splash.html delete mode 100644 latest-tag/reference/modules.html create mode 100644 latest-tag/reference/report_card_template.html create mode 100644 latest-tag/reference/resolve_modules_datanames.html create mode 100644 latest-tag/reference/slices_store.html delete mode 100644 latest-tag/reference/srv_teal_with_splash.html create mode 100644 latest-tag/reference/tdata_deprecation.html rename latest-tag/reference/{example_modules.html => teal_data_datanames.html} (65%) create mode 100644 latest-tag/reference/teal_data_module.html create mode 100644 latest-tag/reference/teal_data_to_filtered_data.html create mode 100644 latest-tag/reference/teal_modules.html delete mode 100644 latest-tag/reference/ui_teal_with_splash.html create mode 100644 latest-tag/reference/validate_app_title_tag.html delete mode 100644 latest-tag/unit-test-report/index.html diff --git a/latest-tag/404.html b/latest-tag/404.html index 3b8defcef9..86871657d0 100644 --- a/latest-tag/404.html +++ b/latest-tag/404.html @@ -7,8 +7,8 @@ Page not found (404) • teal - - + + Contributor Covenant Code of Conduct • tealContributor Covenant Code of Conduct • teal @@ -10,7 +10,7 @@ teal - 0.14.0 + 0.15.0
part of NESTpharmaverse
+ + + + + +
+ + + + +
+
+ + + +

There are two main actors in the teal development:

+
    +
  • +teal App Developer
  • +
  • +teal Module Developer
  • +
+
+

+teal app developer +

+ +
+%% 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
+
+

The primary responsibility of a teal app developer is to +leverage the available building blocks of the teal +framework to create a functional teal app that analyses the +data.

+

To expedite the app creation process, developers can take advantage +of pre-existing teal modules found in R +packages like teal.modules.general and +teal.modules.clinical.

+

These modules are designed with a focus on standardization and +versatility, making them suitable for a wide range of use cases.

+

When developing a teal app, the developer will select +the most appropriate teal modules and integrate them into +the app’s interface to ensure seamless usability for end-users.

+

To learn more about the existing modules, visit teal.gallery, +which contains several demo applications and their source code.

+
+
+

+teal module developer +

+
+%% 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
+
+

The main duty of a teal module developer is to construct +a compatible teal module that can be utilized within the +teal framework.

+

Several factors influence the scope and requirements for building a +teal module.

+

When creating a reusable teal module, it’s advisable to +focus on making it as general and adaptable as feasible to maximize the +possibilities of being re-used in the future. However, developers have +the freedom to create a teal module that is customized to +suit the specific demands of a project.

+

Ultimately, one or more teal modules are employed to +construct a teal app.

+

To learn more about creating custom modules follow the Tutorial on Creating a Custom +Module.

+
+
+

Workflow in a clinical trial study +

+
+%% 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
+
+

In a clinical trial study setting, a unique study +teal app developer is assigned to each study team +and is accountable for developing a tailored teal app for +their respective study.

+

The study teal app developer will +initially leverage existing teal modules from +R packages created by teal module +developers.

+

In cases where there is a need to create new modules tailored to the +study, a study teal module developer will +need to be involved.

+

Upon completion, each study team will have their own designated +teal app tailored to their specific study.

+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/dataflow.html b/latest-tag/articles/blueprint/dataflow.html new file mode 100644 index 0000000000..08776069d7 --- /dev/null +++ b/latest-tag/articles/blueprint/dataflow.html @@ -0,0 +1,207 @@ + + + + + + + + +Data Flow • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + + +
+%% This is a mermaid diagram, if you see this the plot failed to render. Sorry.
+sequenceDiagram;
+    autonumber
+    participant data
+    participant filters
+    participant filtered data
+    participant teal module
+    data->filters: gets
+    filters->>filtered data: becomes
+    filtered data->>teal module: sent to
+
+

The sequence diagram above illustrates the different stages that data +goes through within the teal framework, supported by the +teal.slice package:

+
    +
  1. Data is created and loaded into teal app; +
      +
    • Data sets are wrapped in a teal_data before being +passed to the app;
    • +
    • The teal_data class +facilitates reproducibility;
    • +
    +
  2. +
  3. Data is passed to the filter panel; +
      +
    • Users (or app developers) can specify filters to +apply;
    • +
    • Filters can be specified globally, for the whole app, or for +specific modules;
    • +
    • Filtering code is appended to the data;
    • +
    • See the Filter panel vignette for +details;
    • +
    +
  4. +
  5. Filtered data is sent to teal modules for analysis; +
      +
    • Each module receives a teal_data object so analysis +code applied to the data is tracked (and can be used to reproduce +the whole analysis);
    • +
    +
  6. +
+

Whenever filters are added or removed, the data coming into modules +is re-computed, providing the teal module with new filtered +data to conduct the required analysis.

+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/filter_panel.html b/latest-tag/articles/blueprint/filter_panel.html new file mode 100644 index 0000000000..9f38282327 --- /dev/null +++ b/latest-tag/articles/blueprint/filter_panel.html @@ -0,0 +1,216 @@ + + + + + + + + +Filter Panel • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + +
+

Introduction +

+

+

+

The teal.slice package provides teal +applications with the filter panel, a powerful tool for +exploring and analyzing data, and a key component of the +teal framework.

+

One of the great things about the filter panel is that it comes +built-in with teal, requiring no programming knowledge to +use.

+

The filter panel provides a convenient way for users to subset their +data, simplifying the process of exploration and comprehension. +Moreover, users can activate or deactivate filter states interactively, +either individually or globally, using the filter panel.

+
+ +
+
+
+

Filter flow +

+ +
+%% 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
+
+

The filter panel creates subsets of data. Subsetting is achieved by +creating filter states, each of which holds a logical predicate (filter +condition) that is applied to single variables. These filter conditions +are composed into a single expression, a call to a particular function +(e.g. dplyr::filter), and that expression is evaluated to +create a filtered data subset.

+

The process is entirely interactive. Filter states can be created, +removed, and changed at will, however, the app developer may choose to +constrain or even restrict them.

+

When a filter state is created, the filter panel generates a +filter card with shiny inputs appropriate to the +type of the variable, e.g. range selectors for numeric columns and sets +of checkboxes or drop-down menus for categorical ones.

+

As users interact with the filter cards, the subsetting complete +expression is updated and filtered data is recomputed.

+

The filtered data is passed to teal modules for +downstream analysis. The subsetting expression is returned along with +the data, ensuring an unbroken track record of the entire analysis. +Signature of the data are also stored to ensure reproducible +results.

+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/in_app_data.html b/latest-tag/articles/blueprint/in_app_data.html new file mode 100644 index 0000000000..82fce28675 --- /dev/null +++ b/latest-tag/articles/blueprint/in_app_data.html @@ -0,0 +1,186 @@ + + + + + + + + +In-App Data • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + +
+

Building data in the App +

+

Typically the data that is passed into a teal +application is available before the app is run. However, this is not +always true and in some cases the data will be built only after the app +has started. A good example is pulling the data from an external +repository, like a database, or uploading a file. Additional +authentication may be required.

+
+

+teal_data_module +

+

Preprocessing actions can be performed in-app using the +teal_data_module. Rather than passing a +teal_data object to the app, one may pass a +shiny module that returns a +teal_data object (wrapped in a reactive expression). This +allows the app developer to include user actions data creation, +fetching, and even pre-filtering modification.

+
+
+
+

Further reading +

+

A complete explanation of using the teal_data_module can +be found in this teal +vignette

+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/index.html b/latest-tag/articles/blueprint/index.html new file mode 100644 index 0000000000..f344774094 --- /dev/null +++ b/latest-tag/articles/blueprint/index.html @@ -0,0 +1,166 @@ + + + + + + + + +About Technical Blueprint • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + +

Welcome to teal Technical Blueprint documentation!

+

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

+

While this material will be presented at a high-level, we will direct +you to our vignettes for a more in-depth understanding.

+

Our hope is that this resource will provide new developers with a +strong grasp of teal products, enabling them to contribute +to code with confidence.

+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/input_data.html b/latest-tag/articles/blueprint/input_data.html new file mode 100644 index 0000000000..ed45666323 --- /dev/null +++ b/latest-tag/articles/blueprint/input_data.html @@ -0,0 +1,222 @@ + + + + + + + + +Input Data • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + +
+

Introduction +

+

Reproducibility is paramount in the pharmaceutical industry. Accurate +and consistent results are essential to ensure high-quality research and +the safety of patients. By prioritizing reproducibility, researchers can +validate their methods, confirm their findings, and contribute to the +advancement of the field.

+

The teal.code package provides the qenv +class that facilitates code reproducibility. Code is passed to a +qenv object, where is evaluated in a specific environment. +qenv also stores the code so that it can be retrieved on +request.

+

The teal_data class, which serves as the primary data +interface for teal applications, inherits this code +tracking behavior from qenv.

+
+
+

Preparing data for a teal application +

+

All teal applications run on data provided in a +teal_data object. Data objects are stored and modified +within the environment of the teal_data object and all +R code used is tracked, which allows for the code to be +evaluated and executed in the teal application, and +reproduced outside the teal application. This includes data +loading, preprocessing, filtering, transformations, and plotting, +etc.

+

The teal_data object makes it easy for users to +reproduce and validate the results of their analyses.

+

+

Learn more about the use of teal_data in the teal.data +package vignettes.

+
+
+

+Show R Code and Reporter +

+

In both the teal.modules.clinical and +teal.modules.general packages, you’ll find that most +modules include a convenient Show R Code button. When this +button is clicked, a modal window appears, revealing the R +code responsible for generating the module’s output. This functionality +is achieved by inspecting the teal_data object and +retrieving code from it. With the Show R Code button, users +can easily copy and independently run the code to reproduce the analysis +presented in the teal module.

+
+Show R Code
Show R Code
+
+

The Reporter feature also leverages the teal_data object +in its operation. Much like the Show R Code mechanism, the +code displayed in a Reporter Card is extracted from the +teal_data object.

+
+Reporter
Reporter
+
+

To learn more about the Reporter feature, please visit +the teal.reporter +documentation.

+

Overall, qenv from teal.code and its child +class, teal_data, are powerful tools for ensuring code +reproducibility and promoting high-quality research in the +R programming language.

+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/input_data_files/figure-html/teal_data_dot_diagram-1.png b/latest-tag/articles/blueprint/input_data_files/figure-html/teal_data_dot_diagram-1.png new file mode 100644 index 0000000000000000000000000000000000000000..191257684931f1607d69646179b7255041f2bc8b GIT binary patch literal 17563 zcmcJ%cRbg9{4e~~P7)cFj3Pu-w2)CDBPDxARfQd`3=&vO@lSRGt<=q3oh4$edJnjr-o~rmsG`EH&MgJGGi+)#RC! zfabxwR`UCwr0?BU?Cg*~YNw~8 zr>Ea>LtzvCr?ZAf5MMW?w`RX!|D|CwtBC!H0BwJNn$AKit;5zI-U?jFF|6zpnB5wy znshqkZOWN#DYZ{jGvs&&vkfcRaRtSCX&KY7(b3B^9Fjc(S2ET4pS?e0s`&ZyXa9fz z6|vw9#w4fY6vhMmoQdNZ{CBCHcw}Wltv=)$Df&Iy&}y-plan*3D%scH-(O%=1T+4W zzd=bCe`?}9`2Y1UFXkz8PHrEInvRXZyJFcZ%>yU;4m8wTa>5}FdxJ?m06J8Z%u zB5tNVbf;dup7yX?`NoYKDL!xCp7-A%vu5quwIa@=bUi&i)7@4%My+w8JQt?E2x}x1 zsi*eX4$Yc*E@ktCt_}zY7=8PA_21v$Hyt~6j8at>!0@9}&+c=)OP`8Bc7Asmk6qAs zjj2LVP|&7QmnqwfasP}X^d}V*HYzGAW|(?jy?S+eZmzNP%EU!8GvE54ZC@sPUufjp zW{9iV6=zJkC^k1Y*E~9TbGo>4X>(5b@B5eBf|vz!9lo6Qn66&0UFlVRgZ}PTf#33* z!td%|xZv<(P}aJ?qFk}-(-Rf0`T6-rPo8X0P*Bh)C0DdLmhv}#tK{ENuH@9z!CsgC z4!1XN-fY3DaQ*fAn2Nf3@(Jf;Myx&NRA&Pjo4Dh~FQ50)@N&+NXXZ?Qd-f*LYw53h z3k{nX<1yQwsv?_D86sk;?Iyf}DGZ^GPEL8=D_*bn?Af_3gTc}r3JeUSV`B@E^!!`(>C?_TckW#NR3w;~n8-d6Hkx|&K><(Wg>rW$ ztYP~rS7dujuL!x%T<&?{vPCOfzZwHEFg{Mr!NH*vCqn=6<43XC-V&$vhc3N3fl;|= zZoYoYmMt?={TvPs4q|3+;zV!mmcD%=OSAUl#~l*xGbcPe%FdNwtr;@(*QRw}o$N{1 zS*~MH-o6;W+2+@c8>`9|CSP3c$Y6?#i#wloj*W)p@CLmi>yx;e?}U)^1Buej+4?0n z{QWmPfAJ#8wzqV4T{#jm_vKsevb#rxnUTyPZbgt>mn`1h9 znqRvMt>hIHu0MFN)5Ftq^WRsso*jLC?3;HUm6_@*&oi#4?y2-Pv=ddE9aFviyZ(NL z@Tc!8L$fdZ;zga-9VnY#_1^Lb9*T~YHF#-Z?w-z@kI&47Jm&4+XX$A@6OfQ7Z(k^^ z_#522CF1T~`-#ph$C2Cf3k$0$UVq1UZ+5>4TdLBpl=Au0cw1MRot}+N(4ASU>ElNo zEW6aX@(0K46eD=f*0r>p!JP77SRKdT^KGQ2-nxGMdQtlUpHypW>!*}3w_n3AdtbP4 z3ksf%7SQ3;)YKGq8di!gU0PgBK6!K9y2c$WEc}!`0s=~R*d_QyMMd*1JNT(~kq5@6 zQjnJq`}WORr^q^%5;pcO&8j2(?p@B;_m40fIB*~!BqZw9D<#ouzn|Xn^$k!=xqF~; zQC02t;-6oGlau>5vm6e)@Zze%)vHBuA`Yjp+xDG(aFprVwQDy&<$EstRxP%@aI?EA z=4iq}qZ>~;EI$@n-TOK;q+n^8@hVPKjUunFukUMP`R(Yw-gS>3KXx3bqI&uAWjJ0Y zC@Cq)`P+vddE=d3%)58*Ha0Wk-nL)=Enh#1s?M`ZXH&WpXRcv#`b};4IPZpqJ+eqp z_4W0|?{;BvGGKA*6k0}|yb|?W!_Ll*yvNh00t#o(M$PqIQ>HWx)&~_f$0jN7e79}$ z+7pRMNg>N|q7%o4t}^glvwqh#rPz|$VY!i(HhO;E^<`^oG?&~R`4?Be*R{5u^IDqK zDxXCmQqb3r`#L<_{8-wruDe^ey}g~k-0+@8g3!X}@s7+R6Z_9xx|B)@W0!DO{}6q9 za((LGrMBW8Mw8mwn%Y`!aq*tfH#*N}HSQJ!vmMu@T)v_hUMY6Byu7@?uHWF9z|o_c z?!UjKt2I7RNviAY)D%8+s4!aVsKv)3n+KhahK7bzyROYmcIfs!)j4GGF+Zg<-{DKc zMv6|cZG7j?#YK;F!^#Q~F)>AqH9FMJqe_&f+naY5H1qKC2H_?j?=qWomtiE^(YxZ^ z6TJRf+>Bs0Dbg7`>K_u)q07$BzMry3P%x|g%7j%A{#t?36v?Mn5Z&0=c;@E1&B?jB z=bycbDSA8i<;QayzMuUZQl2>&iE*}>7S(R8*(J){M3?d*?FY~Pjj=|21hbm;vG8VY zLCV*G>YKVP%5fsQDRpn&DBDSVDz@u-vD`e_W!7Q-%4@z&jsx#e>YUzJs+g|M@AmU0 zZ;K$8@x0f?jD8N!ma{@f#e)@ER)pl*6E!pIo0}EQZwC3VS+|awQsTAbUNUukDZ0(%;#&K0Re_YH1Js<~B;J7Z~2t zN_f2Rd1ZNOg_@#M;o(-2_o2I+?-inrV9JQetxQ z8p}f6k)GinUmB?>BX1JcQ}AWdVProQ*`U8X<~wH9DL^@4VDM03kiUGmGBPTP>1kHh z=dWLr3wyArC-g6k%{kcH`(V({l^YlsP<-CMS7&5o+;#l;PFh-8dk2R$KD`_R2{jKU zwuYiV?I~ySP+jy(oi~=d&)z^?{X0A17qashOF>1m?V&>5tl8rDcs9!A!s7J5wL9&~ zu9uaGFD~@2tfRyoccHCZ{JCj)d9Knb>RL~cYtNf|DJWptdB$sX3oc*x-L!3Rv@MCr zD>bpg@^VSz*t-UleARy}d>zCO7fTmu*XDM)!$` zY^NN&{B~CvN=A%`17~aealgBFxB72jK43sIP@W@;2Cv6e%^!Zdf{9$KsF1?Z>YQh>MFCG)vg(iBFES zd;tbS@jod8h}A>gqV-;Dv*4VFXZME+ZH65$dfDYrfBJ?}UIq%Ss0cTD*^GLPe)*y{ zIY+fz8XDw(xjDN2?GokSl=h|8yvIj{blL|o>$B3I^3Bc&7*?=S=$M&rCnj=c?f90$ zETHX!1)K!bQeR*Hq0(Ebth`+4%D6fZgyr4GemRckyWc*RraCdA`T`I8?c=lcKoA=? zZlt1+wqIqaMUg-|WHW#ButTphG<3_|h={`I6rde6;B}3cFF#oA^Ww#Ept;qQ+`>ZH z1WC`sT5HsuMIVb6$MQ`S6&E+6_}DM}wjtx7{p`|aK$29oNr&zl#)O=vT%%e#IyxVT zYrikfP4+THANZd6cXEOrUm^`H>X2N*(bNN->J7HV&CM@gwv}vo^)iCj;n(ol`9FU& z=2sgw>n{{OUNCxa)P_OcrKlzO2H&=2i>084r7Td4Fv^y@|*zX!GXg=2>Q; z1{UE_Q7Kna>T5@gP}+7~8Gqka+CCU6wHy`}MwhOY^RQ1;kU&sM*c-_OrTk~lhH88_ z2?K>#ynS@N+DSLq!l_VK@Z`ypcOxVB{Q2|8aiUW&AUK$j@)M{?>qBaT?X&!%>NruS zH9mXx>`^bB{P|Z}SNA@eN1$R#`+b+`gC^al`sZAGiWu9Zjtv^2bTCl1Zr}dIWx1wS zaUml#G}OAcR3kq>|0_1Tu-i}5A3uNI&D6?41^hSiEY!@xX+uU0r2fCQaJYIk8fCZz z&0-HPZ{wp(KlZG&$n@V6ay#-lq9Y^aQ8=38c=Rs=k2NWsVsKQ z_s!>@qk&pZ#4$&33!1mag`>UtKYRA z{{x(3)?eW%*0S>Fjko3a8D-^r$NF5Q?;o+^DJm*L`{CZRM+OBw>DlBn^Eb_5yQS-1 zzdq}vGu4@;m!g$paKE%Mlp}{PAv}CH1CJ6N0J4L#b0m5Da4xxIAf)?0orYhf=WeF4 z`BhgZ6MNX=uK2H4hp-X%V4A~Gaa!&fdRe?3upB+Q&uXW?f9ua}2CmftOGfBPt40mD zFDdC+_dHiIzW{)8SV2$h`06tDS#_wJ*x^#&LAY90P-~`z=6XnUt zd)BO3bMbq3;dUY8TP3ww(Eu>(D1<4C+~sGg{WPzZm2dq~_*IOM^w>dv%OldirBRJP ze9*T3kV|#u-u@1OO6ReyH8nNUpne_Qw^ELpw4XZCt!3!xi^a#u%e%fMTCleK+T47l zc_P2&$EAb2c2VR)+3WAH9S@6&T1%N93_1Wh$1!koi{wF<59*sgs_Wls%D3q**a&=d zxwrI4#me%v_z`3J@IM+?rL4OP_=;?MGyYtwzOixMD6X(QM5_TQLzOOG1UL# z@6!^z0+pqf)G>a|jO^^$&Koq&adRd*)5#3a%yt=?{QUZI11)U>0Mh60-?N+Q$dxeKhiXi*Eb#P)DL z`&4MPZPn`44xek*F8-a!QPO^L`eOU3!c%^s~hI@HSy#;e*C? z8_E`cwrrR35+D5Xr7cl*Q%WtT@Fwzfc4$M}aW7U@)?C|OG3Uu19Xtcg)@|GTgiIPv zq^KIrj(2RJrdGw+I1P^NP6X}VB_u>Is8>|y^hUz3sYyOEG7@)Ei6y*z$BqDe!y}W% zJMv0OrZuMuSA`bPEpgCS-{n4Y5C9Hjgj}#JZIi}vRGs>!a4rXo>Z=4P4nPYvykbTT zm!M3FIzJQo=525q{R)pAUS3`wN}ST#jp!}v>guZc`#E;(*fGB}*B_gEKC3p_ca%O} z>`D!wV_T-y0h;Xxede5Z*PEG}o3tk@Uqk;}p_=8A#K+gaZId@UuQeJ~LLfR;_{7J8=9`zI=7cp+|Jtyt#j726tB`B23i zv10CXpAcM}d8hmY^apRocL#R~&UO2BDVRfw{o%uh+QqhPi%UyUv;mee?UKKtGLQnZ zfrdsMqcnbld^bG{OW>_rYu;ySZ9zLZt**`(GZ(=ZDLHBnNoo7RixjM&=35vZ@%B^d z8-a(k3og_5xs9+9sMGK9Yx8(#R;IJI>Em+=k|F<=;sL`3@8w?{Wi#z(@QUheKjb&5 zn4!&^0PxJCDBA!0ssLTU1e$}QpDgo}nUj9N*7EZ57i&(b)8gerA3Ke-;?F0FZF{E| zf4wp3F0gQ&9=P6a6uwqoSy}G#<-G=OLri7Me2s&WTM#|h>5C}FO)V{IVgecKh$e$3 z;xW@EH~%$4dAfFs)T49pVt7MSm6!s$*qEC)S3_VTU%!Y4BYNGrIFZNB+R2Y%Vz#67 z?}B{jw}oT)CT#$JfWoHmSU}|6*d@4S{j)ccK~J9SO_5IIkB*A+ZA+3PZRVG}|52N6 zvP0{Q+fSLE2Jtwpug^OCD)#2Feh&sCBctcn=Ca$3RG35@zi#L*whM)PVT7Ce2L|2% zE5?e^IgIhXbO}TNoA6s-`A$5+?aE3ifP^$mD$f?F(Ol4GY{WVrs@0LSLH{b5y6lac zH?dkbNJ&YF1M2w)2g^7(w@7k2ax1JIPNl8hJg1QMr+l*7n z;y>0DS%17C8^rt>LqUY6@VL0AxYsHG(i^xn6fIxS5@W2E-26d02*y20{uwcfDK!Na z@9e*Q5CZ3{#rDn1%fn@(lBZ7kQBhHmJ8%hE>{j*9$vHsFAsI}TA}-TF=5}S-6UB-P zV47p}eL90?wtfIc)d;)S{_0gtF@Z#uAPo2oRyHCU^u$(z_rWUa32Lwyw z&Zj#5p`jyAss0%oBA62`6M@Si>CM9s)aPB|;;g8iSV8Vh4<)V*OihI{@SfYX ze?M(_czAA65qUV>n+ls$j;Nw`VER5+U0=On!-lHmrG+Tk%+7tDZ;b%i+8}G};o(UH z3?c(DL5BLa`|P+cP{sV;zlmTXWR4UR0@{r_6z^e&qVA@-y){x&q5;Pu^Qws@q<+@T z-Q5@qgzWL*HwmGr!vn*wA1L~1WIoj`q(<$KHZt0M_wL>KN79_W819S)#i_A;NUq=r zo0pfDKNQ*M#SR4p2D-l4wpzc$aV)U8QNb)nsJ}FX)b7hEy8)qlAU*A2M$Lu* zc@B&r^CM|LTGES7ojOH0sM3R@n+by)S_Tm16c>-XclKTq=sjSc3`U!pn%cQf3fmAp zHt*V;t@Wp(%_=G?xzC=d?Na4*XM|U<>GSw_U`M8wNqr#G{O|+2w-}%}DQ|;c%NXT@ z-pd}0OiZ8aw;8^F@SZOBavLYBnDYiaD&Yl(TOgC?U94W^Jk`f0s9SJCRdws%xv89s z$ucv0qx}8bPtt`u5O$0LFaYkMUFyt7Xg{{%0KU9;|Nh${A)CqkZjqcnF?K#P3Rsu) zTUl9I%Cgu}5y~?uf2iuDlt?a4ODn~TG4V$!e!d(qN-u;uBcOirBo*1l+-IU6f%87U z`kjSc-1U*0VT$VKE<^8nGJ6*zJLK?fDDMPkWF^;kbl@V?P;=`*GuyH+9QWnoP87yc z$alt?s>A0(vaH%8J^OmgAdA;xXntOSd}MmEFhI8CrN^G~3|V-KB1W2aDl|Ndop`<1Z zuh;H>7Kp8V6IJHro{84x=2Pd+(SnQ;D+e7uD~S=a-PGFJ`8PN-b03uJ!`={SYg=1s zv$L}yBVC6R16N0BtD&Q#Fc|=d(($5Fc*wnb_Y!%AY+mTqG^`?Yz_-U#z1o&Il=^Ir0LZw89X$U*4KX}pzLEcd>$TN2NLOe?OGBHs_B^-8L-oV@835= zR6cCe%?L$IEMXfxDf#5yfk8o!Rnsrp*n~hh0VUmljzi3dhu0=W`@TmvIg&Dz4yK&z zG;+@RWBytomySIwHlK?AVKyuXR0!E$rQRzQ!_OusCm{f}D{d8+kU%Z{JUF<@#lZ=D4zY1)1ipiV#;;W#v~wN9EZ_gSS5R;>v_vppuz40$HMPRK zJaTe!hpjqk&fY(K5~I~tV4+4-H$(5GBa|v=RDe4TkZ}kFE3oWn7WjTv=2By_?-L$H z1%+xbRx;`D(v-ivky@#XJ!F2^={QQ|TNF49h5E?)O88Jit>NjkC`VyvVG*tuQ13=s z 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 literal 0 HcmV?d00001 diff --git a/latest-tag/articles/blueprint/intro.html b/latest-tag/articles/blueprint/intro.html new file mode 100644 index 0000000000..516331727a --- /dev/null +++ b/latest-tag/articles/blueprint/intro.html @@ -0,0 +1,228 @@ + + + + + + + + +Introduction • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + +

teal is an interactive data exploration framework based +on Shiny, designed primarily to analyze CDISC clinical trial data.

+

A Shiny Application created with teal offers users the +ability to:

+
    +
  • Import data from external sources;
  • +
  • Dynamically filter data for analysis;
  • +
  • Generate reproducible code for future analysis;
  • +
  • Create and download reports of analysis results (for analysis +modules that support reporting).
  • +
+

Moreover, the teal framework provides application +developers with a wide range of customizable standard analysis modules +to integrate into their applications, along with a logging framework +that facilitates debugging. Additionally, advanced users of the +framework can develop new analysis modules and easily integrate them +into any teal application.

+

The teal framework’s functionality draws heavily from +the following packages:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
R packageDescription
teal +shiny-based interactive exploration +framework for analyzing data
teal.widgets +shiny UI components used within +teal +
teal.dataprovides the data structure used in all +teal applications
teal.sliceprovides the filter panel to allow dynamic filtering of +data
teal.codeprovides a mechanism for tracking code to reproduce an +analysis
teal.loggerstandardizes logging within teal +framework
teal.reporterallows teal applications to generate +reports
+

Although these packages are mentioned in the material, we strongly +recommend visiting their vignettes to learn more about them.

+

Learn on how to make your first teal application here!

+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/module_encapsulation.html b/latest-tag/articles/blueprint/module_encapsulation.html new file mode 100644 index 0000000000..ee82258691 --- /dev/null +++ b/latest-tag/articles/blueprint/module_encapsulation.html @@ -0,0 +1,193 @@ + + + + + + + + +Module Encapsulation • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + +
+

Introduction +

+

The teal framework leverages the shiny +module concept to enable encapsulation of analytical actions in +teal modules, while maintaining seamless communication +between the modules and the application.

+
+
+

Benefits +

+

By implementing the modular app technique from the shiny module into +the creation of the teal module, several benefits are +realized:

+
    +
  1. Streamlined maintenance
    +The development of the teal module becomes more manageable, +as it can function independently from the teal framework. +This separation allows developers to maintain the module with ease. This +approach has been successfully applied in R packages +dedicated to teal module development, such as +teal.modules.general and +teal.modules.clinical.

  2. +
  3. Enhanced focus on output
    teal module developers can concentrate solely on refining +parameters or encoding, and output aspects (such as data summarization +and visualization) without the need to concern themselves with the +intricacies of the teal framework. When developed +correctly, the module seamlessly integrates with +teal.

  4. +
  5. Facilitated collaboration
    teal module development becomes an accessible entry point +for developers interested in collaborating. This approach encourages +user collaboration for the improvement of teal modules, as +developers gain a deeper understanding of the mechanics of the +teal framework.

  6. +
+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/blueprint/product_map.html b/latest-tag/articles/blueprint/product_map.html new file mode 100644 index 0000000000..8b5ad97e39 --- /dev/null +++ b/latest-tag/articles/blueprint/product_map.html @@ -0,0 +1,235 @@ + + + + + + + + +Product Map • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + + +
+%% This is a mermaid diagram, if you see this the plot failed to render. Sorry.
+flowchart RL
+teal
+subgraph features
+  direction LR
+  teal.data
+  teal.slice
+  teal.code
+  teal.logger
+  teal.widgets
+end
+subgraph modules
+  direction RL
+  teal.modules.general
+  teal.modules.clinical
+  teal.osprey
+  teal.goshawk
+  teal.modules.hermes
+end
+teal--has-->features
+features--builds-->modules
+modules--creates-->teal
+subgraph modules
+  teal.modules.general
+  teal.modules.clinical
+  teal.osprey
+  teal.goshawk
+  teal.modules.hermes
+end
+subgraph calculations
+  direction RL
+  tern
+  osprey
+  goshawk
+  hermes
+end
+tern--supports-->teal.modules.clinical
+osprey--supports-->teal.osprey
+goshawk--supports-->teal.goshawk
+hermes--supports-->teal.modules.hermes
+style teal fill:lightblue
+style features fill:lightgreen
+style modules fill:pink
+
+

teal is a modular framework that relies on a suite of +related packages, as illustrated in the above diagram, to provide a wide +range of functionalities.

+

teal’s primary function is to create web app for +analyzing clinical trial data but it has a multitude of +features distributed across various packages.

+

Developers can selectively leverage these packages, such as +teal.widgets, teal.code, and +teal.logger, to build teal +modules for a teal app. This approach gives the developers +the tools that speed up their work and avoid re-implementing existing +logic and UI elements.

+

The teal modules utilize various packages such as +tern, osprey, and goshawk to +perform calculations and analyses. These packages provide +support to the teal modules by performing +all computations while the modules only have to focus on how to wrap the +input options and the output.

+

Once developed, new and existing modules can be integrated into +teal to create a functional +teal app.

+
+

Why so many packages? +

+

By breaking down teal features, modules, and +calculations into dedicated packages, maintenance is made significantly +more manageable.

+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/teal-bs-themes.html b/latest-tag/articles/bootstrap-themes-in-teal.html similarity index 64% rename from latest-tag/articles/teal-bs-themes.html rename to latest-tag/articles/bootstrap-themes-in-teal.html index 92b6c62ace..dd7ca20bc0 100644 --- a/latest-tag/articles/teal-bs-themes.html +++ b/latest-tag/articles/bootstrap-themes-in-teal.html @@ -6,12 +6,12 @@ -teal and Bootstrap Themes • teal +Bootstrap Themes in teal • teal - - + + - + + + @@ -27,7 +27,7 @@ teal - 0.14.0 + 0.15.0
part of NESTpharmaverse
+ + + + + +
+ + + + +
+
+ + + +
+

Introduction +

+

Proper functioning of any teal application requires the +presence of a teal_data object. Typically, a +teal_data object created in the global environment will be +passed to the data argument in init. This +teal_data object should contain all elements necessary for +successful execution of the application’s modules.

+

In some scenarios, however, application developers may opt to +postpone some data operations until the application runtime. This can be +done by passing a special shiny module to the +data argument. The teal_data_module function +is used to build such a module from the following components:

+
    +
  • a UI function; accepts only one argument, id; defines +user interface elements for the data module
  • +
  • a server function: accepts only one argument, id; +defines server logic for the data module, including data creation; must +return a reactive expression containing a teal_data +object
  • +
+

teal will run this module when the application starts +and the resulting teal_data object that will be used +throughout all teal (analytic) modules.

+
+
+

Creating data in-app +

+

One case for postponing data operations is datasets that are dynamic, +frequently updated. Such data cannot be created once and kept in the +global environment. Using teal_data_module enables creating +a dataset from scratch every time the user starts the application.

+ +
+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)
+}
+

See ?qenv for a detailed explanation of how to use +the within method.

+
+
+

Modification of data in-app +

+

Another reason to postpone data operations is to involve the +application user in the preprocessing stage. An initial, constant form +of the data can be created in the global environment and then modified +once the app starts.

+

The following example illustrates how teal_data_module +can be utilized to subset data based on the user inputs:

+
+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)
+}
+

Note that running preprocessing code in a module as opposed to the +global environment will increase app loading times. It is recommended to +keep the constant code in the global environment and to move only the +dynamic parts to a data module.

+
+
WARNING +
+

When using teal_data_module to modify a pre-existing +teal_data object, it is crucial that the server function +and the data object are defined in the same environment, otherwise the +server function will not be able to access the data object. This means +server functions defined in packages cannot be used.

+
+
+

Extending existing teal_data_modules +

+

The server logic of a teal_data_module can be modified +before it is used in an app, using the within function. +This allows the teal_data object that is created in the +teal_data_module to be processed further.

+

In the previous example, data_module takes a predefined +teal_data object and allows the app user to select a +subset. The following example modifies data_module so that +new columns are added once the data is retrieved.

+
+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)
+}
+
+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/filter-panel.html b/latest-tag/articles/filter-panel.html index 55f6353005..a33f725b47 100644 --- a/latest-tag/articles/filter-panel.html +++ b/latest-tag/articles/filter-panel.html @@ -8,8 +8,8 @@ Filter Panel • teal - - + + @@ -27,7 +27,7 @@ teal - 0.14.0 + 0.15.0
part of NESTpharmaverse
- - - - - -
- - - - -
-
- - - -
-

Introduction -

-

To include ADaM data in a teal app, the -teal.data::cdisc_data function is used.

-

The cdisc_data function allows teal -applications to include multiple datasets, identifying merge keys and -providing information to produce R code for reproducibility.

-

There is an advantage to passing CDISC datasets that -adhere to ADaM standards to these functions in that the -code is minimized. However, the dataset-related functions also include -the flexibility to work with non-standard datasets provided that merge -keys and the relationship between the datasets are specified.

-

The examples below illustrate the usage of these different dataset -functions for example cdisc_dataset and -dataset. For more information, see documentation in -teal.data.

-
-
-

Keys -

-

Primary keys serve as unique row identifiers in individual datasets -and thus need to be specified for each dataset and dataset connector. -These can be specified on the most general dataset constructor -dataset as shown below.

-
-library(teal)
-
-# using cdisc_dataset, keys are automatically derived for standard datanames
-# (although they can be overwritten)
-adsl <- data.frame(
-  STUDYID = "study",
-  USUBJID = 1:10,
-  SEX = sample(c("F", "M"), 10, replace = TRUE),
-  AGE = rpois(10, 40)
-)
-dataset_adsl <- cdisc_dataset("ADSL", adsl)
-class(dataset_adsl)
-
## [1] "CDISCTealDataset" "TealDataset"      "R6"
-

When passing multiple datasets to the cdisc_data -function, dataset relationship are set using join_keys and -join_key and these are used to merge datasets together -within teal apps.

-

In the example below, two standard CDISC datasets -(ADSL and ADTTE) are passed to the -aforementioned function. In the case of CDISC datasets that -adhere to ADaM standards, the merge keys do not need to be -manually specified. Keys are automatically added if -dataname matches one of the implemented standards as -documented in the cdisc_dataset function. This minimizes -the code needed to allow data merges as seen in this example:

-
-adsl <- data.frame(
-  STUDYID = "study",
-  USUBJID = 1:10,
-  SEX = sample(c("F", "M"), 10, replace = TRUE),
-  AGE = rpois(10, 40)
-)
-adtte <- rbind(adsl, adsl, adsl)
-adtte$PARAMCD <- rep(c("OS", "EFS", "PFS"), each = 10)
-adtte$AVAL <- c(
-  rnorm(10, mean = 700, sd = 200), # dummy OS level
-  rnorm(10, mean = 400, sd = 100), # dummy EFS level
-  rnorm(10, mean = 450, sd = 200) # dummy PFS level
-)
-
-cdisc_data_obj <- cdisc_data(
-  cdisc_dataset(
-    dataname = "ADSL",
-    x = adsl,
-    code = '
-    adsl <- data.frame(
-      STUDYID = "study",
-      USUBJID = 1:10,
-      SEX = sample(c("F", "M"), 10, replace = TRUE),
-      AGE = rpois(10, 40)
-    )'
-  ),
-  cdisc_dataset(
-    dataname = "ADTTE",
-    x = adtte,
-    code = '
-    adtte <- rbind(adsl, adsl, adsl)
-    adtte$PARAMCD <- rep(c("OS", "EFS", "PFS"), each = 10)
-    adtte$AVAL <- c(
-      rnorm(10, mean = 700, sd = 200),
-      rnorm(10, mean = 400, sd = 100),
-      rnorm(10, mean = 450, sd = 200)
-    )'
-  )
-)
-class(cdisc_data_obj)
-
## [1] "TealData"         "TealDataAbstract" "R6"
-
-# which is equivalent to:
-example_data <- cdisc_data(
-  cdisc_dataset(
-    dataname = "ADSL",
-    x = adsl,
-    code = '
-    adsl <- data.frame(
-      STUDYID = "study",
-      USUBJID = 1:10,
-      SEX = sample(c("F", "M"), 10, replace = TRUE),
-      AGE = rpois(10, 40)
-    )',
-    keys = c("STUDYID", "USUBJID")
-  ),
-  cdisc_dataset(
-    dataname = "ADTTE",
-    x = adtte,
-    code = '
-    adtte <- rbind(adsl, adsl, adsl)
-    adtte$PARAMCD <- rep(c("OS", "EFS", "PFS"), each = 10)
-    adtte$AVAL <- c(
-      rnorm(10, mean = 700, sd = 200),
-      rnorm(10, mean = 400, sd = 100),
-      rnorm(10, mean = 450, sd = 200)
-    )',
-    keys = c("STUDYID", "USUBJID", "PARAMCD")
-  ),
-  join_keys = join_keys(
-    join_key("ADSL", "ADSL", c("STUDYID", "USUBJID")),
-    join_key("ADTTE", "ADTTE", c("USUBJID", "STUDYID", "PARAMCD")),
-    join_key("ADSL", "ADTTE", c("STUDYID", "USUBJID"))
-  )
-)
-
-app <- init(
-  data = example_data,
-  modules = example_module()
-)
-
-if (interactive()) {
-  shinyApp(app$ui, app$server)
-}
-

The [teal.data::join_keys()] function is used to specify keys:

-
    -
  • [teal.data::join_keys()] is a collection of multiple -[teal.data::join_key()] entries
  • -
  • [teal.data::join_key()] specifies the relation between two datasets: -
      -
    • -dataset_1, dataset_2 - name of two -datasets
    • -
    • -key - (optionally) named vector of column names
    • -
    -
  • -
-

Note that it is assumed that join keys are symmetric, -i.e. join_key("x", "y", "x_col" = "y_col") will enable -merge from “x” to “y” and vice-versa.

-

For more information about preprocessing, reproducibility, -relationships between datasets and DDL, please refer to the -teal.data -package.

-
-
-
- - - - -
- - - - - - - diff --git a/latest-tag/articles/including-data-in-teal-applications.html b/latest-tag/articles/including-data-in-teal-applications.html new file mode 100644 index 0000000000..c9271c83fd --- /dev/null +++ b/latest-tag/articles/including-data-in-teal-applications.html @@ -0,0 +1,473 @@ + + + + + + + + +Including Data in teal Applications • teal + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + +
+

Data in teal Applications +

+

The teal framework readily accepts general, +non-relational data. Modules defined in the +teal.modules.general package are designed to work well with +that kind of data. Relational data is handled just as well and the +mechanism of passing data to applications is virtually the same. This +includes clinical data that conforms to the ADaM standard. +We are working on making the framework extendable so that support for +other data structures can be added with relative ease. Currently some +support is offered for the MultiAssayExperiment class.

+

All applications use the teal_data class as a data +container. teal_data objects are passed to +init to build the application, where they are modified by +the filter panel (if applicable) and passed on to modules. Thus, the +first step of building a teal app is creating a +teal_data object.

+
+

General data +

+

A teal_data object is created by calling the +teal_data function and passing data objects as +name:value pairs.

+
+library(teal)
+
+# create teal_data
+data <- teal_data(iris = iris, cars = mtcars)
+

Note that iris and cars have been added to +the datanames property of data (see datanames property).

+

This is sufficient to run a teal app.

+
+# build app
+app <- init(
+  data = data,
+  modules = example_module()
+)
+
+# run app
+shinyApp(app$ui, app$server)
+
+
+

Reproducible data +

+

A teal_data object stores data in a separate +environment. Therefore, modifying the stored datasets requires that +processing code be evaluated in that environment. Following that logic, +one can create an empty teal_data object and populate it by +evaluating code. This can be done using the eval_code +function or, more conveniently, using the within +function.

+
+# 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
+})
+

The key difference between eval_code and +within is that the former accepts code as character vector +or language objects (calls and expressions), while within +accepts only inline code. See ?qenv for more +details.

+

Note that in the first example data was created by +passing data objects, so the code that was used to create the data +objects is unknown and therefore the process cannot be reproduced. +Inspecting code the in the app created above reveals a note that the +preprocessing code is absent.

+

+

The necessary code can be supplied to the code argument +of the teal_data function.

+
+data_with_code <- teal_data(
+  iris = iris, cars = mtcars,
+  code = "iris <- iris
+          cars <- mtcars"
+)
+

+

Keep in mind this code is not executed in the +teal_data’s environment, so it may not reproduce the +environment. Such an object is considered unverified (see verified property).

+

If reproducibility is required, we recommend creating an empty +teal_data object and then evaluating code.

+
+

code from file +

+

The ability to pass code as a character vector to +eval_code opens the door to using code stored in a +file.

+
+# not run
+data_from_file <- teal_data()
+data_from_file <- eval_code(data, readLines("<path_to_file>"))
+
+
+
+

Creating data in-app +

+

The one departure from passing a teal_data object to +init is when the data does not exist in the environment +where the app is run, e.g. when it has to be pulled from a +remote source. In those cases a teal_data_module must be +used. See this vignette for a +detailed description.

+


+
+
+
+

Clinical data +

+

Currently teal supports two specialized data +formats.

+
+

+ADaM data +

+

The ADaM data model, defined in CDISC standards, +specifies relationships between the subject-level parent dataset and +observation-level child datasets. The cdisc_data function +takes advantage of that fact to automatically set default joining keys +(see join_keys property). In the +example below, two standard ADaM datasets +(ADSL and ADTTE) are passed to +cdisc_data.

+
+# 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)
+
+
+

+MultiAssayExperiment data +

+

The MultiAssayExperiment package offers a data structure +for representing and analyzing multi-omics experiments that involve +multi-modal, high-dimensionality data, such as DNA mutations, protein or +RNA abundance, chromatin occupancy, etc., in the same biological +specimens.

+

The MultiAssayExperiment class is described in detail here.

+

MultiAssayExperiment objects (MAEs) are placed in +teal_data just like normal objects.

+
+library(MultiAssayExperiment)
+utils::data(miniACC)
+
+data_mae <- teal_data(MAE = miniACC)
+
+app <- init(
+  data = data_mae,
+  modules = example_module()
+)
+shinyApp(app$ui, app$server)
+

Due to the unique structure of a MAE, teal requires +special considerations when building teal modules. +Therefore, we cannot guarantee that all modules will work properly with +MAEs. The package teal.modules.hermes +has been developed specifically with MAE in mind and will be more +reliable.

+

The filter panel supports MAEs out of the box.

+


+
+
+
+

+teal_data properties +

+
+
+datanames +
+

The datanames property lists the objects stored in the +teal_data environment that constitute datasets of interest. +Objects passed to teal_data become automatically listed in +the datanames property of the resulting object. Objects +created in teal_data by evaluating code need not be data +objects of interest and as such they are not automatically added to +datanames. For convenience, an empty datanames +property is considered to mean “all objects in the container”. +datanames can be read or modified with the +datanames function.

+
+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"
+

The datanames property serves as a communication bridge +between the data container and modules in a teal +application. In teal all modules are called with a +datanames argument that determines which of the variables +in the teal_data object they are to access. Only variables +enumerated in the datanames property are eligible for use +in modules.

+

Note that specifying datanames in teal_data +is optional; if the property is empty, all objects are considered +eligible. Likewise, the datanames argument in the module +call defaults to "all", which means that module will +attempt to access all eligible variables in the teal_data +object.

+

For a detailed explanation of datanames, see this +teal.data vignette.

+

(back to General Data)

+
+
+
+join_keys +
+

Using relational data requires specifying joining keys for each pair +of datasets. Primary keys are unique row identifiers in individual +datasets and thus should be specified for each dataset. Foreign keys +describe mapping of variables between datasets. Joining keys are stored +in the join_keys property, which can be set when creating a +teal_data object, using the join_keys +argument, or using the join_keys function.

+
+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
+

For a detailed explanation of join keys, see this +teal.data vignette.

+

(back to ADaM Data)

+
+
+
+verified +
+

teal_data allows for tracking code from data creation +through data filtering through data analysis so that the whole process +can be reproduced. The verified property designates whether +or not reproducibility has been confirmed. teal_data +objects that are created empty and only modified by evaluating code +within them are considered verified by default. Those created with data +objects alone or with data objects and code are not verified by default, +but can become verified by running the verify function.

+
+data_with_code
+#> ✅︎ verified teal_data object
+#> <environment: 0x55914df04e30> [L]
+#> Parent: <environment: package:teal>
+#> Bindings:
+#>  not_a_dataset: <chr> [L]
+#>  cars: <df[,11]> [L]
+#>  iris: <df[,5]> [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
+#> <environment: 0x55914e3a9cd8> [L]
+#> Parent: <environment: package:teal>
+#> Bindings:
+#>  cars: <df[,11]> [L]
+#>  iris: <df[,5]> [L]
+
+data_with_objects_and_code_ver <- verify(data_with_objects_and_code)
+data_with_objects_and_code_ver
+#> ✅︎ verified teal_data object
+#> <environment: 0x55914e3a9cd8> [L]
+#> Parent: <environment: package:teal>
+#> Bindings:
+#>  cars: <df[,11]> [L]
+#>  iris: <df[,5]> [L]
+

For a detailed explanation of verification, see this +teal.data vignette.

+

(back to Reproducible Data)

+


+
+
+
+

Further reading +

+

For a complete guide to the teal_data class, please +refer to the teal.data +package.

+
+
+
+ + + + +
+ + + + + + + diff --git a/latest-tag/articles/including-general-data-in-teal.html b/latest-tag/articles/including-general-data-in-teal.html deleted file mode 100644 index 550a28f2b7..0000000000 --- a/latest-tag/articles/including-general-data-in-teal.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - -Input general data in a teal application • teal - - - - - - - - - - - Skip to contents - - -
- - - - -
-
- - - -
-

Introduction -

-

teal applications are not restricted to -CDISC-standard data. Although many teal modules included -with NEST are designed for CDISC data, those -in the library teal.modules.general have been designed to -work with non-relational data.

-

For example this application uses the standard iris and -mtcars datasets:

-
-library(teal)
-
-app <- init(
-  data = teal_data(
-    dataset("IRIS", iris, code = "IRIS <- iris"),
-    dataset("CARS", mtcars, code = "CARS <- mtcars")
-  ),
-  modules = example_module()
-)
-
-if (interactive()) {
-  shinyApp(app$ui, app$server)
-}
-

For more information, see documentation in -teal.data.

-
-
-

Delayed Data Loading (DDL) -

-

To learn more about DDL, visit -vignette("delayed-data-loading", package = "teal.data"). -All the features of DDL are available for general -datasets:

-
-library(teal)
-
-person_generator <- function() {
-  return(
-    data.frame(
-      ID = factor(1:8),
-      AGE = c(40, 23, 56, 11, 17, 71, 23, 56)
-    )
-  )
-}
-
-pet_generator <- function() {
-  return(
-    data.frame(
-      ID = factor(1:10),
-      TYPE = rep(c("CAT", "DOG"), 5),
-      COLOR = c("GINGER", rep("BROWN", 5), rep("BLACK", 4)),
-      PERSON_ID = factor(c(5, 4, 3, 3, 3, 1, 8, 1, 2, 2))
-    )
-  )
-}
-
-
-app <- init(
-  data = teal_data(
-    fun_dataset_connector("PERSON", fun = person_generator, keys = "ID") %>%
-      mutate_dataset("PERSON$SEX <- rep(c('M', 'F'), 4)"),
-    fun_dataset_connector("PETS", fun = pet_generator, keys = "ID")
-  ) %>%
-    mutate_join_keys("PERSON", "PETS", c("ID" = "PERSON_ID")),
-  modules = example_module()
-)
-
-if (interactive()) {
-  shinyApp(app$ui, app$server)
-}
-

For more information about preprocessing, reproducibility, -relationships between datasets and DDL, please refer to the -teal.data -package.

-
-
-
- - - - -
- - - - - - - diff --git a/latest-tag/articles/including-mae-data-in-teal.html b/latest-tag/articles/including-mae-data-in-teal.html deleted file mode 100644 index 1fcf42b923..0000000000 --- a/latest-tag/articles/including-mae-data-in-teal.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - -Input `MultiAssayExperiment` data in a teal application • teal - - - - - - - - - - - Skip to contents - - -
- - - - -
-
- - - -
-

-MultiAssayExperiment data -

-

MultiAssayExperiment offers a data structure for -representing and analyzing multi-omics experiments: a biological -analysis approach utilizing multiple types of observations, such as DNA -mutations and abundance of RNA and proteins, in the same biological -specimens.

-

You can read more about MultiAssayExperiment data here.

-
-
-

Example application -

-

The example below represents an application including -MultiAssayExperiment data.

-
-library(teal)
-utils::data(miniACC, package = "MultiAssayExperiment")
-
-mae_d <- dataset("MAE", miniACC, metadata = list(type = "example"))
-
-app <- init(
-  data = teal_data(mae_d),
-  modules = example_module()
-)
-
-if (interactive()) {
-  shinyApp(app$ui, app$server)
-}
-

The filter panel supports MAE data out of the box, but -teal itself does not guarantee that any module will work -with MAE data the same way it works with other types of -data (e.g. ADaM) because MAE has a unique -structure that needs to be considered when developing a module. The -package teal.modules.hermes -has been specifically developed for the analysis of MAE -data.

-

For more information about preprocessing, reproducibility, -relationships between datasets and DDL, please refer to the -teal.data -package.

-
-
-
- - - - -
- - - - - - - diff --git a/latest-tag/articles/index.html b/latest-tag/articles/index.html index a44135ab0f..37d590b307 100644 --- a/latest-tag/articles/index.html +++ b/latest-tag/articles/index.html @@ -1,5 +1,5 @@ -Articles • tealArticles • teal @@ -10,7 +10,7 @@ teal - 0.14.0 + 0.15.0
part of NESTpharmaverse
- - - - - -
- - - - -
-
- - - -
-

Usage in teal apps -

-

In this vignette, we will show how to use preprocessing in a -teal app. The basics of preprocessing data have been -discussed in teal.data here.

-

In a teal app, providing the code in a copy-paste style -is cumbersome and can lead to an out-of-sync situation where the code -does not represent the preprocessing code anymore. We therefore use the -get_code function to extract the preprocessing code from -the app.R file. The get_code function requires -# tags to indicate which lines of code in -app.R need be included in the preprocessing code. -get_code understands the following tags:

-
    -
  • Enclosing preprocessing code between #code> -#<code determines the start and end of preprocessing. -Only one start and one end is allowed. If start or end are not specified -then preprocessing starts at the beginning of the file and ends at the -end respectively.
  • -
  • -#nocode at the end of the line excludes this line from -preprocessing.
  • -
  • Lines enclosed within #nocode> -#<nocode are excluded from preprocessing.
  • -
-

Further, the get_code function has the following -arguments that might be useful:

-
    -
  • -exclude_comments = TRUE removes comments from -preprocessing code.
  • -
  • -read_sources = TRUE means that code from sourced file -will be included instead of source() call.
  • -
-

To complete the above example try the code below (NOTE: make sure to save the code in a -file called app.R):

-
-# Code needs modification before it can be run:
-#     - save as app.R
-# for the purpose of example save the file to current directory
-library(teal)
-
-# code>
-new_iris <- transform(iris, id = seq_len(nrow(iris)))
-# <code
-
-app <- init(
-  data = teal_data(dataset("new_iris", new_iris), code = get_code(file = "app.R")),
-  modules = example_module()
-)
-
-shinyApp(app$ui, app$server)
-

Also try the following more advanced usage of -get_code:

-
-# Code needs modification before it can be run:
-#     - save as app.R
-library(teal)
-
-# code>
-# data import
-new_iris <- transform(iris, id = seq_len(nrow(iris)))
-
-excluded_obj1 <- 1:10 # nocode
-
-# nocode>
-excluded_obj2 <- 1:10
-# <nocode
-
-included_obj <- 1:10
-
-# <code
-
-x <- init(
-  data = cdisc_data(cdisc_dataset("ADSL", adsl),
-    code = get_code("app.R", exclude_comments = TRUE, read_sources = TRUE),
-    check = TRUE
-  ),
-  modules = example_module(),
-  header = "Simple app with preprocessing",
-  footer = tags$p(class = "text-muted", "Source: agile-R website")
-)
-
-shinyApp(x$ui, x$server)
-

If you set check = TRUE in cdisc_data then -the data provided to the application is checked against the data -obtained by evaluating the code in an isolated environment. -If the datasets do not match then cdisc_data returns an -error.

-

cdisc_data also analyzes the arguments passed to it. -Note that additional transformation within cdisc_data call -can break reproducibility and is not allowed, e.g. developers shouldn’t -do an operation like ADSL = mutate(ADSL, a = 1) inside -cdisc_data.

-
-
-
- - - - -
- - - - - - - diff --git a/latest-tag/articles/teal-options.html b/latest-tag/articles/teal-options.html index a261b66815..4da23d4e91 100644 --- a/latest-tag/articles/teal-options.html +++ b/latest-tag/articles/teal-options.html @@ -6,12 +6,12 @@ -Modifying a teal application with R options • teal +Modifying a teal Application With R Options • teal - - + + - + Authors and Citation • tealAuthors and Citation • teal @@ -10,7 +10,7 @@ teal - 0.14.0 + 0.15.0
part of NESTpharmaverse