diff --git a/DESCRIPTION b/DESCRIPTION
index 7e508c44..d95d4671 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,6 +1,7 @@
Package: clinsight
Title: ClinSight
Version: 0.1.0.9008
+DevexVersion: 9000
Authors@R: c(
person("Leonard Daniƫl", "Samson", , "lsamson@gcp-service.com", role = c("cre", "aut"),
comment = c(ORCID = "0000-0002-6252-7639")),
diff --git a/NEWS.md b/NEWS.md
index f61c66bd..d6de4f11 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -13,6 +13,10 @@
- When using the `shinyproxy` deployment configuration, the user name is now expected to be base64 encoded, and will now be base64 encoded by `clinsight` by default, so that the app can also handle non-ASCII signs in user names that are stored in HTTP headers. To display the user name correctly, use base64 encoding in the `application.yml` in ShinyProxy settings (for example: `http-headers.X_SP_USERNAME: "#{T(java.util.Base64).getEncoder().encodeToString(oidcUser.getFullName().getBytes())}"`).
+## `devex` changes
+- Added `Excel` download button to Queries table & patient listings that need review.
+- Added helper function to automatically determine when adding said excel button is appropriate.
+
# clinsight 0.1.0
## Changed
diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R
index 30407059..a94e9ea5 100644
--- a/R/fct_data_helpers.R
+++ b/R/fct_data_helpers.R
@@ -505,6 +505,35 @@ add_missing_columns <- function(
data
}
+#' Configure DT helper
+#'
+#' Small wrapper that helps handle some messiness preparing the correct `DT`
+#' dom, extensions, & options when needed. Specifically, when & how to add an
+#' Excel download button.
+#'
+#' @param data A data frame used for display in a DT table. Number of rows will
+#' be assessed
+#' @param table_name character string, usually the form name
+#'
+#' @keywords internal
+#' @return list with three named objects: `dom`, `exts`, and `opts`
+dt_config <- function(data, table_name = "form") {
+ default_args<- formals(datatable_custom)
+ if(nrow(data) > 0 & isTRUE(get_golem_config("allow_listing_download"))) {
+ dt_dom <- 'Bfti'
+ dt_exts <- c("Buttons", eval(default_args$extensions))
+ dt_opts <- list(buttons=list(list(extend = 'excel',
+ text = '',
+ filename = paste("clinsight", gsub(" ", "-", table_name), sep = ".")
+ )))
+ } else {
+ dt_dom <- default_args$dom |> eval()
+ dt_exts <- default_args$extensions |> eval()
+ dt_opts <- default_args$options |> eval()
+ }
+ return(list(dom = dt_dom, exts = dt_exts, opts = dt_opts))
+}
+
#' Custom interactive datatable
#'
#' Small wrapper around [DT::datatable()]. Will be used to create tables in a
diff --git a/R/mod_common_forms.R b/R/mod_common_forms.R
index 09f0f833..5551c9a6 100644
--- a/R/mod_common_forms.R
+++ b/R/mod_common_forms.R
@@ -132,8 +132,16 @@ mod_common_forms_server <- function(
)) |>
adjust_colnames("^SAE ")
if(!input$show_all_data) SAE_data$subject_id <- NULL
- datatable_custom(SAE_data, rename_vars = table_names, rownames= FALSE,
- title = "Serious Adverse Events", escape = FALSE)
+
+ # determine DT dom / exts / opts
+ DT <- dt_config(SAE_data,
+ table_name = paste("SAE", ifelse(input$show_all_data,
+ "all_patients", r$subject_id), sep = "."))
+ datatable_custom(
+ SAE_data, rename_vars = table_names, rownames= FALSE,
+ title = "Serious Adverse Events", escape = FALSE,
+ dom = DT$dom, extensions = DT$exts, options = DT$opts
+ )
})
output[["common_form_table"]] <- DT::renderDT({
@@ -145,8 +153,14 @@ mod_common_forms_server <- function(
dplyr::select(-dplyr::starts_with("SAE"))
}
if(!input$show_all_data) df$subject_id <- NULL
- datatable_custom(df, rename_vars = table_names, rownames= FALSE,
- title = form, escape = FALSE)
+
+ # determine DT dom / exts / opts
+ DT <- dt_config(df,
+ table_name = paste(form, ifelse(input$show_all_data,
+ "all_patients", r$subject_id), sep = "."))
+ datatable_custom(
+ df, rename_vars = table_names, rownames= FALSE,title = form,
+ escape = FALSE, dom = DT$dom, extensions = DT$exts, options = DT$opts)
})
})
diff --git a/R/mod_queries.R b/R/mod_queries.R
index f5e45da4..89f943d3 100644
--- a/R/mod_queries.R
+++ b/R/mod_queries.R
@@ -144,11 +144,17 @@ mod_queries_server <- function(id, r, navinfo, all_forms, db_path, table_names){
query_cols <- c("resolved", query_cols)
table_title <- "All queries"
}
+
+ # determine DT dom / exts / opts
+ DT <- dt_config(initial_queries()[query_cols],
+ table_name = paste(ifelse(input$show_resolved, "all", "open"),
+ "queries", sep = "."))
datatable_custom(
initial_queries()[query_cols],
table_names,
title = table_title,
- callback = dblclick_to_form(ns("go_to_form"))
+ callback = dblclick_to_form(ns("go_to_form")),
+ dom = DT$dom, extensions = DT$exts, options = DT$opts
)
})
diff --git a/R/mod_study_forms.R b/R/mod_study_forms.R
index bbf45905..8db7185f 100644
--- a/R/mod_study_forms.R
+++ b/R/mod_study_forms.R
@@ -223,7 +223,12 @@ mod_study_forms_server <- function(
output[["table"]] <- DT::renderDT({
req(table_data_active())
- datatable_custom(table_data_active(), table_names, escape = FALSE)
+ # determine DT dom / exts / opts
+ DT <- dt_config(table_data_active(),
+ table_name = paste(form, ifelse(input$show_all,
+ "all_patients", r$subject_id), sep = "."))
+ datatable_custom(table_data_active(), table_names, escape = FALSE,
+ dom = DT$dom, extensions = DT$exts, options = DT$opts)
})
if(form %in% c("Vital signs", "Vitals adjusted")){
diff --git a/inst/app/www/custom.css b/inst/app/www/custom.css
index 5232a222..b69e7f62 100644
--- a/inst/app/www/custom.css
+++ b/inst/app/www/custom.css
@@ -1,4 +1,9 @@
+.dataTables_wrapper .dt-buttons {
+ padding-left: 0.75em;
+ float: right;
+}
+
.bslib-value-box .value-box-area {
padding: 0.1rem 0rem 0.1rem 1rem;
}
diff --git a/inst/golem-config.yml b/inst/golem-config.yml
index e1d167ee..b59197d2 100644
--- a/inst/golem-config.yml
+++ b/inst/golem-config.yml
@@ -11,6 +11,7 @@ default:
Medical Monitor: medical_monitor
Data Manager: data_manager
allow_to_review: [admin, medical_monitor]
+ allow_listing_download: TRUE
dev:
golem_wd: !expr golem::pkg_path()
test:
diff --git a/man/dt_config.Rd b/man/dt_config.Rd
new file mode 100644
index 00000000..8278fb92
--- /dev/null
+++ b/man/dt_config.Rd
@@ -0,0 +1,23 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/fct_data_helpers.R
+\name{dt_config}
+\alias{dt_config}
+\title{Configure DT helper}
+\usage{
+dt_config(data, table_name = "form")
+}
+\arguments{
+\item{data}{A data frame used for display in a DT table. Number of rows will
+be assessed}
+
+\item{table_name}{character string, usually the form name}
+}
+\value{
+list with three named objects: \code{dom}, \code{exts}, and \code{opts}
+}
+\description{
+Small wrapper that helps handle some messiness preparing the correct \code{DT}
+dom, extensions, & options when needed. Specifically, when & how to add an
+Excel download button.
+}
+\keyword{internal}
diff --git a/tests/testthat/_snaps/app_feature_01/app-feature-1-002.json b/tests/testthat/_snaps/app_feature_01/app-feature-1-002.json
index 2796a847..e24a32ef 100644
--- a/tests/testthat/_snaps/app_feature_01/app-feature-1-002.json
+++ b/tests/testthat/_snaps/app_feature_01/app-feature-1-002.json
@@ -239,6 +239,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -251,8 +252,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Adverse-events.BEL_04_772"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"className": "dt-right",
@@ -389,6 +397,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/app_feature_01/app-feature-1-003.json b/tests/testthat/_snaps/app_feature_01/app-feature-1-003.json
index 76c45761..e0fd19bc 100644
--- a/tests/testthat/_snaps/app_feature_01/app-feature-1-003.json
+++ b/tests/testthat/_snaps/app_feature_01/app-feature-1-003.json
@@ -239,6 +239,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -251,8 +252,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Adverse-events.BEL_04_772"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"className": "dt-right",
@@ -389,6 +397,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/app_feature_01/app-feature-1-004.json b/tests/testthat/_snaps/app_feature_01/app-feature-1-004.json
index 76db2408..f1c108f7 100644
--- a/tests/testthat/_snaps/app_feature_01/app-feature-1-004.json
+++ b/tests/testthat/_snaps/app_feature_01/app-feature-1-004.json
@@ -239,6 +239,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -251,8 +252,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Adverse-events.BEL_04_772"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"className": "dt-right",
@@ -389,6 +397,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
@@ -8267,6 +8309,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -8279,8 +8322,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Vital-signs.BEL_04_772"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"orderable": false,
@@ -8417,6 +8467,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/app_feature_01/app-feature-1-005.json b/tests/testthat/_snaps/app_feature_01/app-feature-1-005.json
index e683af83..a97090fb 100644
--- a/tests/testthat/_snaps/app_feature_01/app-feature-1-005.json
+++ b/tests/testthat/_snaps/app_feature_01/app-feature-1-005.json
@@ -239,6 +239,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -251,8 +252,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Adverse-events.BEL_04_772"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"className": "dt-right",
@@ -389,6 +397,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
@@ -8268,6 +8310,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -8280,8 +8323,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Vital-signs.NLD_06_893"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"orderable": false,
@@ -8418,6 +8468,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/app_feature_03/app-feature-3-002.json b/tests/testthat/_snaps/app_feature_03/app-feature-3-002.json
index 3a9093e2..644aea5a 100644
--- a/tests/testthat/_snaps/app_feature_03/app-feature-3-002.json
+++ b/tests/testthat/_snaps/app_feature_03/app-feature-3-002.json
@@ -693,6 +693,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -705,8 +706,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Adverse-events.BEL_04_772"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"className": "dt-right",
@@ -843,6 +851,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/app_feature_03/app-feature-3-003.json b/tests/testthat/_snaps/app_feature_03/app-feature-3-003.json
index f5d30dd2..5eb712d8 100644
--- a/tests/testthat/_snaps/app_feature_03/app-feature-3-003.json
+++ b/tests/testthat/_snaps/app_feature_03/app-feature-3-003.json
@@ -6,6 +6,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -18,8 +19,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.open.queries"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Open queries\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"orderable": false,
@@ -146,6 +154,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/app_feature_03/app-feature-3-004.json b/tests/testthat/_snaps/app_feature_03/app-feature-3-004.json
index ba6db3b3..ce0589f3 100644
--- a/tests/testthat/_snaps/app_feature_03/app-feature-3-004.json
+++ b/tests/testthat/_snaps/app_feature_03/app-feature-3-004.json
@@ -6,6 +6,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -18,8 +19,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.open.queries"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Open queries\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"orderable": false,
@@ -146,6 +154,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/app_feature_03/app-feature-3-005.json b/tests/testthat/_snaps/app_feature_03/app-feature-3-005.json
index f5ab8d82..9899ca5d 100644
--- a/tests/testthat/_snaps/app_feature_03/app-feature-3-005.json
+++ b/tests/testthat/_snaps/app_feature_03/app-feature-3-005.json
@@ -6,6 +6,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -18,8 +19,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.all.queries"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"All queries\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"orderable": false,
@@ -150,6 +158,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/mod_study_forms/study_forms-001.json b/tests/testthat/_snaps/mod_study_forms/study_forms-001.json
index c05b3cb7..00e8a3ca 100644
--- a/tests/testthat/_snaps/mod_study_forms/study_forms-001.json
+++ b/tests/testthat/_snaps/mod_study_forms/study_forms-001.json
@@ -1240,6 +1240,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -1252,8 +1253,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Vital-signs.NLD_06_755"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"orderable": false,
@@ -1390,6 +1398,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",
diff --git a/tests/testthat/_snaps/mod_study_forms/study_forms-002.json b/tests/testthat/_snaps/mod_study_forms/study_forms-002.json
index c05b3cb7..00e8a3ca 100644
--- a/tests/testthat/_snaps/mod_study_forms/study_forms-002.json
+++ b/tests/testthat/_snaps/mod_study_forms/study_forms-002.json
@@ -1240,6 +1240,7 @@
"filter": "none",
"vertical": false,
"extensions": [
+ "Buttons",
"Scroller",
"ColReorder"
],
@@ -1252,8 +1253,15 @@
"scrollResize": true,
"scrollCollapse": true,
"colReorder": true,
+ "buttons": [
+ {
+ "extend": "excel",
+ "text": "<\/i>",
+ "filename": "clinsight.Vital-signs.NLD_06_755"
+ }
+ ],
"initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}",
- "dom": "f<\"header h5\">ti",
+ "dom": "Bf<\"header h5\">ti",
"columnDefs": [
{
"orderable": false,
@@ -1390,6 +1398,40 @@
"attachment": null,
"all_files": true
},
+ {
+ "name": "jszip",
+ "version": "1.13.6",
+ "src": {
+ "href": "jszip-1.13.6"
+ },
+ "meta": null,
+ "script": "jszip.min.js",
+ "stylesheet": null,
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
+ {
+ "name": "dt-ext-buttons-bootstrap5",
+ "version": "1.13.6",
+ "src": {
+ "href": "dt-ext-buttons-bootstrap5-1.13.6"
+ },
+ "meta": null,
+ "script": [
+ "js/dataTables.buttons.min.js",
+ "js/buttons.html5.min.js",
+ "js/buttons.colVis.min.js",
+ "js/buttons.print.min.js",
+ "js/buttons.bootstrap5.min.js"
+ ],
+ "stylesheet": "css/buttons.bootstrap5.min.css",
+ "head": null,
+ "attachment": null,
+ "package": null,
+ "all_files": false
+ },
{
"name": "dt-ext-scroller-bootstrap5",
"version": "1.13.6",