Skip to content

Releases: insightsengineering/teal

v0.15.2

07 Mar 23:33
06a0a58
Compare
Choose a tag to compare

Bug fixes

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

What's Changed

Full Changelog: v0.15.1...v0.15.2

v0.15.1

22 Feb 23:26
bcef4f9
Compare
Choose a tag to compare

Bug fixes

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

Miscellaneous

  • Updated links in vignettes

v0.15.0

09 Feb 16:23
e3a369b
Compare
Choose a tag to compare

New features

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

Breaking changes

  • data argument in init now accepts only teal_data and teal_data_module.
  • tdata has been deprecated and replaced with teal_data. Support for tdata passed to the data argument in module(server) will be removed in the next release.
  • module(ui) argument no longer accepts data and datasets arguments. All data dependent logic should be set in the server function.
  • module(server) argument deprecated datasets argument. teal_modules' server functions should accept data (teal_data) instead.
  • Changed the order of formal arguments in init. filter now comes directly after modules, before title.

Miscellaneous

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

Bug fixes

  • Removed Report previewer module from mapping matrix display in filter manager.
  • Specified minimal version of package dependencies.

v0.14.0

14 Aug 13:42
bf6262b
Compare
Choose a tag to compare

New features

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

Breaking changes

  • Specifying filter argument in teal::init requires teal_slices object now. Details in documentation of teal::init.
  • Soft deprecated filters argument in module and replaced it with datanames. Details in documentation of teal::module

Miscellaneous

  • Removed scda package dependency from examples.

What's Changed

Full Changelog: v0.13.0...v0.14.0

v0.13.0

22 May 18:10
9b5498d
Compare
Choose a tag to compare

Breaking changes

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

New features

  • Added the validate_inputs function that transfers input validation messages to app output.
  • modules argument of init accepts teal_module type of object. There is no need to wrap up a single module in modules() or list().
  • Updated module_nested_tabs so that only active modules are calculated in a teal app.

Miscellaneous

  • Updated examples to use scda.2022.
  • Added R session information into a link in the footer of teal applications.
  • Added data hashing step using rlang instead of digest package to calculate the hash (which has been moved from teal.data and teal.slice). There is now an explicit hashing check in the reproducible code output.
  • Removed deprecated functions: root_modules, default_filter, bookmarkableShinyApp, as well as deprecated logging mechanism, including the functions log_app_usage and .log.
  • Updated the "Teal and Bootstrap Themes" vignette to provide more details customizing a teal app with bslib::run_with_themer.
  • Removed outdated diagram from srv_nested_tabs documentation.
  • Changed default values of header and footer arguments in init to empty text.

What's Changed

New Contributors

Full Changelog: v0.12.0...v0.13.0

v0.12.0

14 Oct 01:25
19e1529
Compare
Choose a tag to compare

New features

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

Enhancements

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

Breaking changes

  • Updated teal_module to no longer receive datasets object in the ... argument. In order to use datasets in the teal_module please specify datasets explicitly.
  • Deprecated merge_expression argument in get_rcode_srv function and removed it in get_rcode function.
  • Deprecated session argument in get_rcode function.

Miscellaneous

  • Enhanced the burger button so it is disabled when the filter panel is not used.

What's Changed

Full Changelog: v0.11.1...v0.12.0

v0.11.1

09 Jun 14:31
d8b1e24
Compare
Choose a tag to compare

Enhancements

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

Breaking changes

  • Deprecated bookmarkableShinyApp. In future releases the teal framework will stop supporting shiny bookmarking (which has not officially been supported); it may be officially supported in the future. Note the filter panel in teal.slice retains its ability to save and restore its state if used in a standalone shiny app with bookmarking.

Miscellaneous

  • Added a template to the pkgdown configuration.
  • Removed unneeded shinytest app tests.
  • Updated package authors.
  • Added package vignettes.

v0.10.1

29 Jan 18:14
Compare
Choose a tag to compare

Breaking changes

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

New features

Logging

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

Other

  • Added print methods to the DatasetConnector, RelationalData, RelationalDataconnector and JoinKeys classes and added input validation to the implementation of the print method that was already in the Dataset object.

  • Added public facing constructor functions for CDISCDataConnector, RelationalDataConnector, and DataConnection classes.

  • Modified data_extract_spec to allow both the filter and select parameters to be NULL, which results in the data_extract_ui acting as if a filter_spec with all variables as possible choices had been supplied as the filter argument and a select_spec with the multiple parameter set to TRUE had been supplied as the select argument.

  • Added support of the full screen for a module when the filters argument is equal NULL.

  • Added support for shiny::moduleServer passed to the server parameter of teal::module.

  • Added teal.threshold_slider_vs_checkboxgroup as an R option: if a categorical variable has more than this number of unique values, the filter panel uses a drop-down select input instead of a checkbox group.

  • Extended the FilteredData API to allow managing filter states programmatically and not only from the UI of a teal application.

  • Hid the buttons to remove filters from all datasets and each dataset when there are no active filters.

  • Updated init to accept RelationalData, data.frame, MultiAssayExperiment, Dataset, DatasetConnector, list or a function returning a named list as data input.

Bug fixes

  • choices_selected now correctly removes duplicates from the array passed to its choices parameter.
  • Fixed call returned by FilterState in case of using MultiAssayExperiment::subsetByColData. Now single condition for variable containing NA values is !is.na(var) & var == <condition>.
  • Fixed data loading of DatasetConnector being dependent on other Dataset or DatasetConnector objects.
  • Fixed restoring a bookmarked filter state of teal application.
  • Refactored module_nested_tabs to fix the issue with the filter panel not reacting to an input change in a nested module.
  • updateOptionalSelectInput no longer sets input to NULL when logical value is passed to selected.
  • Fixed setting JoinKeys when key name between two Dataset object differs.
  • Fixed printing of the JavaScript console logs to the R console when teal.show_js_log = TRUE.

Miscellaneous

  • Soft-deprecate mae_dataset() in favor of more general dataset() constructor.
  • Added a vignette describing the modifications to teal applications users can apply using R options.
  • Added default values to the label argument of select_spec and filter_spec.
  • Added validation to FilteredDataset::get_data to accept logical input only.
  • Changed references to outdated functions of teal.devel in the documentation.
  • Introduced a Teal prefix to all public R6 classes to avoid name collisions with other packages.
  • Removed dependency on utils.nest and replaced its functionality in teal with equivalents from the checkmate package and base R.
  • Replaced the old shiny server functions of DataConnection, RelationalDataConnector, DatasetConnector, and RelationalData with the shiny::moduleServer equivalents.
  • Running a teal application via ui_teal_with_splash and srv_teal_with_splash is now no longer recommended because it doesn't support new features (e.g. logging, bookmarking). Use init instead.
  • Updated the R version requirement to >= 4.0.
  • Updated the "filter panel collapse" icon to remove warnings when using shiny version >= 1.7.
  • Removed some of the non-exported, debugging modules.
  • Updated the footer tag style to be less visible.

v0.10.0

13 Oct 00:01
0b4de1f
Compare
Choose a tag to compare

New features

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

Bug fixes

  • Fixed the bug caused by calling mutate_dataset multiple times on the same DatasetConnector or Dataset object.
  • Fixed a bug that caused the output of get_code function to not reproduce its raw data set.
  • Changed filter_spec to allow no variable selection upon app initialization, where the first possible value was previously selected.

Enhancements

  • modules parameter of teal::init function can also receive a list except root_modules
    function call.
  • Added split and merge methods to the JoinKeys object.
  • Added all_choices() as a possible argument to the selected parameter of filter_spec, select_spec and choices_selected indicating that all choices are selected.
  • The append method of a CodeClass object has been modified to print a warning message when the argument does not result in any code being added because it is duplicated.
  • Implemented delayed functionality to the mutate method of the Dataset and DatasetConnector objects.
  • Modified teal_data to return a CDISCData object whenever any of its arguments is a type of CDISCData object.
  • Updated filters to show both levels of a logical variable TRUE/FALSE even if one is missing from the original array.

Miscellaneous

  • Updated LICENCE and README with new package references.
  • Added a method get_hash to the Dataset class returning the MD5 hash of the object stored inside the Dataset object.
  • Replaced random.cdisc.data with scda in examples and tests.
  • Implemented functionality to store JoinKeys in Dataset and DatasetConnector classes.
  • Added error_on_lintr: TRUE to .lintr
  • The pipe operator %>% is now exported such that downstream code and packages can use it.
  • Removed hyperlinks to the rice package from the documentation.

v0.9.5

19 Aug 22:16
Compare
Choose a tag to compare
  • Added informational stop message when using mutate_data with RelationalDataConnector.
  • Modified as_cdisc to behave similarly to cdisc_dataset when called on a Dataset object.
  • Changed the displayed format of the data name and the column name in data_extract_spec UI elements. Both are now compressed to <data name>.<column name> if they don't change during runtime of the app.
  • Added ADSAFTTE to the list of recognized ADaM dataset names.
  • Added another example to data_extract_spec's doc string showcasing app users can choose a variable used for filtering in the encoding panel.
  • Added CSS styling to tool tips in teal modules.
  • Fixed an edge case error when creating a filter on variable with all missing values crashed the app.
  • Fixed a bug that crashes app whenever a Date or datetime column is selected from a filter_spec.