From 53a79e51a25345bd0cd6a90d41cef0323a1f9bae Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Tue, 29 Oct 2024 10:03:23 -0400 Subject: [PATCH 01/22] Add basic excel button --- R/fct_data_helpers.R | 6 +++--- man/datatable_custom.Rd | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index 2e81a603..de297e59 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -539,10 +539,10 @@ datatable_custom <- function( rename_vars = NULL, title = NULL, selection = "single", - extensions = "Scroller", + extensions = c("Buttons", "Scroller"), plugins = "scrollResize", - dom = "fti", - options = list(), + dom = "Bfti", + options = list(buttons=list('excel')), ... ){ stopifnot(is.data.frame(data)) diff --git a/man/datatable_custom.Rd b/man/datatable_custom.Rd index 181fad89..2cf9ede0 100644 --- a/man/datatable_custom.Rd +++ b/man/datatable_custom.Rd @@ -9,10 +9,10 @@ datatable_custom( rename_vars = NULL, title = NULL, selection = "single", - extensions = "Scroller", + extensions = c("Buttons", "Scroller"), plugins = "scrollResize", - dom = "fti", - options = list(), + dom = "Bfti", + options = list(buttons = list("excel")), ... ) } From e31bf06f653776f176a87254ac53a24528ff4d92 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Sun, 3 Nov 2024 21:37:35 -0500 Subject: [PATCH 02/22] try moving the button to the right, but failed. --- R/fct_data_helpers.R | 2 +- dev/app.R | 2 +- inst/app/www/custom.css | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index de297e59..618a23ff 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -541,7 +541,7 @@ datatable_custom <- function( selection = "single", extensions = c("Buttons", "Scroller"), plugins = "scrollResize", - dom = "Bfti", + dom = "<'sep'>Bfti", options = list(buttons=list('excel')), ... ){ diff --git a/dev/app.R b/dev/app.R index c1ebc1e5..b8307b3b 100644 --- a/dev/app.R +++ b/dev/app.R @@ -33,7 +33,7 @@ db_create(get_review_data(merged_data), ) run_app( - data = data_path, #merged_data, # or db_path works too + # data = data_path, #merged_data, # or db_path works too # user_db = db_path, # defaults to "user_db.sqlite" # onStart = \(){onStop(\(){unlink(data_folder, recursive = TRUE)})} # be careful here ) diff --git a/inst/app/www/custom.css b/inst/app/www/custom.css index 5232a222..532d15d4 100644 --- a/inst/app/www/custom.css +++ b/inst/app/www/custom.css @@ -1,3 +1,6 @@ +.sep { + float: right; +} .bslib-value-box .value-box-area { padding: 0.1rem 0rem 0.1rem 1rem; From 4c0c9bd68cfaec5986bc75f6a6de96d6710d8618 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 07:15:52 -0500 Subject: [PATCH 03/22] Add helper function for DT renderDT() to determine the appropriate dt dom, exts, and opts --- R/fct_data_helpers.R | 27 ++++++++++++++++++++++++--- R/mod_common_forms.R | 16 ++++++++++++---- R/mod_queries.R | 5 ++++- R/mod_study_forms.R | 4 +++- inst/golem-config.yml | 1 + man/datatable_custom.Rd | 6 +++--- man/dt_options.Rd | 16 ++++++++++++++++ 7 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 man/dt_options.Rd diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index 618a23ff..2c5824ff 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -502,6 +502,27 @@ add_missing_columns <- function( data } +#' Decide if Excel Button is appropriate +#' +#' Small wrapper that helps handle some messiness preparing the correct `DT` +#' options when needed. +#' +#' @param data A data frame to use within the application. +#' +#' @keywords internal +dt_options <- function(data) { + if(nrow(data) > 0 & isTRUE(get_golem_config("allow_listing_download"))) { + dt_dom <- "Bfti" + dt_exts <- c("Buttons", "Scroller") + dt_opts <- list(buttons=list('excel')) + } else { + dt_exts <- c("Scroller") + dt_opts <- list() + dt_dom <- "fti" + } + 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 @@ -539,10 +560,10 @@ datatable_custom <- function( rename_vars = NULL, title = NULL, selection = "single", - extensions = c("Buttons", "Scroller"), + extensions = c("Scroller"), plugins = "scrollResize", - dom = "<'sep'>Bfti", - options = list(buttons=list('excel')), + dom = "fti", + options = list(), ... ){ stopifnot(is.data.frame(data)) diff --git a/R/mod_common_forms.R b/R/mod_common_forms.R index 09f0f833..d9a9b88c 100644 --- a/R/mod_common_forms.R +++ b/R/mod_common_forms.R @@ -132,8 +132,13 @@ 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) + + DT <- dt_options(SAE_data) # determine DT dom / exts / opts + 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 +150,11 @@ 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) + + DT <- dt_options(df) # determine DT dom / exts / opts + 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..c8086da8 100644 --- a/R/mod_queries.R +++ b/R/mod_queries.R @@ -144,11 +144,14 @@ mod_queries_server <- function(id, r, navinfo, all_forms, db_path, table_names){ query_cols <- c("resolved", query_cols) table_title <- "All queries" } + + DT <- dt_options(initial_queries()[query_cols]) # determine DT dom / exts / opts 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..998deee5 100644 --- a/R/mod_study_forms.R +++ b/R/mod_study_forms.R @@ -223,7 +223,9 @@ mod_study_forms_server <- function( output[["table"]] <- DT::renderDT({ req(table_data_active()) - datatable_custom(table_data_active(), table_names, escape = FALSE) + DT <- dt_options(table_data_active()) # determine DT dom / exts / opts + 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/golem-config.yml b/inst/golem-config.yml index ad66e448..804c88d9 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/datatable_custom.Rd b/man/datatable_custom.Rd index 2cf9ede0..5d9ebb44 100644 --- a/man/datatable_custom.Rd +++ b/man/datatable_custom.Rd @@ -9,10 +9,10 @@ datatable_custom( rename_vars = NULL, title = NULL, selection = "single", - extensions = c("Buttons", "Scroller"), + extensions = c("Scroller"), plugins = "scrollResize", - dom = "Bfti", - options = list(buttons = list("excel")), + dom = "fti", + options = list(), ... ) } diff --git a/man/dt_options.Rd b/man/dt_options.Rd new file mode 100644 index 00000000..98b24bb4 --- /dev/null +++ b/man/dt_options.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/fct_data_helpers.R +\name{dt_options} +\alias{dt_options} +\title{Decide if Excel Button is appropriate} +\usage{ +dt_options(data) +} +\arguments{ +\item{data}{A data frame to use within the application.} +} +\description{ +Small wrapper that helps handle some messiness preparing the correct \code{DT} +options when needed. +} +\keyword{internal} From d9d19dc121b8449c4821af942a752854e37fac31 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 09:33:24 -0500 Subject: [PATCH 04/22] update news --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index eb11f0ff..c34e65ea 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,8 @@ - Generalized `merge_meta_with_data()` to allow user-defined processing functions. - Added a feature where, in applicable tables, a user can navigate to a form by double-clicking a table row. - Fixed warnings in `apply_edc_specific_changes` due to the use of a vector within `dplyr::select`. +- 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 From 8576890a8a3d13b923c4e156502a6d04ff12d764 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 11:26:32 -0500 Subject: [PATCH 05/22] Add a default & custom excel filename for any & all listings with a download button --- R/fct_data_helpers.R | 19 +++++++++++++------ R/mod_common_forms.R | 10 ++++++++-- R/mod_queries.R | 4 +++- R/mod_study_forms.R | 5 ++++- man/dt_config.Rd | 23 +++++++++++++++++++++++ man/dt_options.Rd | 16 ---------------- 6 files changed, 51 insertions(+), 26 deletions(-) create mode 100644 man/dt_config.Rd delete mode 100644 man/dt_options.Rd diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index 2c5824ff..c59ffe5f 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -502,19 +502,26 @@ add_missing_columns <- function( data } -#' Decide if Excel Button is appropriate +#' Configure DT helper #' #' Small wrapper that helps handle some messiness preparing the correct `DT` -#' options when needed. +#' 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 #' -#' @param data A data frame to use within the application. -#' #' @keywords internal -dt_options <- function(data) { +#' @return list with three named objects: `dom`, `exts`, and `opts` +dt_config <- function(data, table_name = "form") { if(nrow(data) > 0 & isTRUE(get_golem_config("allow_listing_download"))) { dt_dom <- "Bfti" dt_exts <- c("Buttons", "Scroller") - dt_opts <- list(buttons=list('excel')) + dt_opts <- list(buttons=list(list(extend = 'excel', + filename = paste("clinsight", gsub(" ", "-", table_name), + gsub(":", "-", gsub(" ", "_", time_stamp())), sep = ".") + ))) } else { dt_exts <- c("Scroller") dt_opts <- list() diff --git a/R/mod_common_forms.R b/R/mod_common_forms.R index d9a9b88c..5551c9a6 100644 --- a/R/mod_common_forms.R +++ b/R/mod_common_forms.R @@ -133,7 +133,10 @@ mod_common_forms_server <- function( adjust_colnames("^SAE ") if(!input$show_all_data) SAE_data$subject_id <- NULL - DT <- dt_options(SAE_data) # determine DT dom / exts / opts + # 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, @@ -151,7 +154,10 @@ mod_common_forms_server <- function( } if(!input$show_all_data) df$subject_id <- NULL - DT <- dt_options(df) # determine DT dom / exts / opts + # 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 c8086da8..8dd2c9da 100644 --- a/R/mod_queries.R +++ b/R/mod_queries.R @@ -145,7 +145,9 @@ mod_queries_server <- function(id, r, navinfo, all_forms, db_path, table_names){ table_title <- "All queries" } - DT <- dt_options(initial_queries()[query_cols]) # determine DT dom / exts / opts + # determine DT dom / exts / opts + DT <- dt_config(initial_queries()[query_cols], + table_name = paste("queries", sep = ".")) datatable_custom( initial_queries()[query_cols], table_names, diff --git a/R/mod_study_forms.R b/R/mod_study_forms.R index 998deee5..8db7185f 100644 --- a/R/mod_study_forms.R +++ b/R/mod_study_forms.R @@ -223,7 +223,10 @@ mod_study_forms_server <- function( output[["table"]] <- DT::renderDT({ req(table_data_active()) - DT <- dt_options(table_data_active()) # determine DT dom / exts / opts + # 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) }) 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/man/dt_options.Rd b/man/dt_options.Rd deleted file mode 100644 index 98b24bb4..00000000 --- a/man/dt_options.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/fct_data_helpers.R -\name{dt_options} -\alias{dt_options} -\title{Decide if Excel Button is appropriate} -\usage{ -dt_options(data) -} -\arguments{ -\item{data}{A data frame to use within the application.} -} -\description{ -Small wrapper that helps handle some messiness preparing the correct \code{DT} -options when needed. -} -\keyword{internal} From 674b75cf42ab691f6a08301f77674bfd99596719 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 11:38:05 -0500 Subject: [PATCH 06/22] clean up some code --- R/fct_data_helpers.R | 2 +- dev/app.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index c59ffe5f..76fcf8ee 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -567,7 +567,7 @@ datatable_custom <- function( rename_vars = NULL, title = NULL, selection = "single", - extensions = c("Scroller"), + extensions = "Scroller", plugins = "scrollResize", dom = "fti", options = list(), diff --git a/dev/app.R b/dev/app.R index b8307b3b..c1ebc1e5 100644 --- a/dev/app.R +++ b/dev/app.R @@ -33,7 +33,7 @@ db_create(get_review_data(merged_data), ) run_app( - # data = data_path, #merged_data, # or db_path works too + data = data_path, #merged_data, # or db_path works too # user_db = db_path, # defaults to "user_db.sqlite" # onStart = \(){onStop(\(){unlink(data_folder, recursive = TRUE)})} # be careful here ) From b3e881900a4ef47146e25ee1420dfe94ab9968e1 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 12:05:16 -0500 Subject: [PATCH 07/22] move button to right-hand side so that it's not he first thing you see. --- R/fct_data_helpers.R | 2 +- inst/app/www/custom.css | 6 ++++-- man/datatable_custom.Rd | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index 76fcf8ee..9fb68a69 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -516,7 +516,7 @@ add_missing_columns <- function( #' @return list with three named objects: `dom`, `exts`, and `opts` dt_config <- function(data, table_name = "form") { if(nrow(data) > 0 & isTRUE(get_golem_config("allow_listing_download"))) { - dt_dom <- "Bfti" + dt_dom <- 'Bfti' dt_exts <- c("Buttons", "Scroller") dt_opts <- list(buttons=list(list(extend = 'excel', filename = paste("clinsight", gsub(" ", "-", table_name), diff --git a/inst/app/www/custom.css b/inst/app/www/custom.css index 532d15d4..6c050dbe 100644 --- a/inst/app/www/custom.css +++ b/inst/app/www/custom.css @@ -1,5 +1,7 @@ -.sep { - float: right; + +.dataTables_wrapper .dt-buttons { + padding-left: 0.5em; + float: right; } .bslib-value-box .value-box-area { diff --git a/man/datatable_custom.Rd b/man/datatable_custom.Rd index 5d9ebb44..181fad89 100644 --- a/man/datatable_custom.Rd +++ b/man/datatable_custom.Rd @@ -9,7 +9,7 @@ datatable_custom( rename_vars = NULL, title = NULL, selection = "single", - extensions = c("Scroller"), + extensions = "Scroller", plugins = "scrollResize", dom = "fti", options = list(), From d271dfb07088ee18d1596e7bb3861e0f74d82524 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 13:24:53 -0500 Subject: [PATCH 08/22] boost 'em' slightly for spacing of excel button --- inst/app/www/custom.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/app/www/custom.css b/inst/app/www/custom.css index 6c050dbe..b69e7f62 100644 --- a/inst/app/www/custom.css +++ b/inst/app/www/custom.css @@ -1,6 +1,6 @@ .dataTables_wrapper .dt-buttons { - padding-left: 0.5em; + padding-left: 0.75em; float: right; } From 15adcb64fb886caa76dbf6736cd77bcafd825232 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 13:29:10 -0500 Subject: [PATCH 09/22] Changed 'excel' text on download button to an icon --- R/fct_data_helpers.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index 9fb68a69..01d4bcd7 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -519,6 +519,7 @@ dt_config <- function(data, table_name = "form") { dt_dom <- 'Bfti' dt_exts <- c("Buttons", "Scroller") dt_opts <- list(buttons=list(list(extend = 'excel', + text = '', filename = paste("clinsight", gsub(" ", "-", table_name), gsub(":", "-", gsub(" ", "_", time_stamp())), sep = ".") ))) From 67a624c87db90654e6689625548f2e7516d847ca Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 14:12:21 -0500 Subject: [PATCH 10/22] Increment version number to 0.1.0.9005 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 7d77ce90..b0a0ebc5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: clinsight Title: ClinSight -Version: 0.1.0.9004 +Version: 0.1.0.9005 Authors@R: c( person("Leonard Daniël", "Samson", , "lsamson@gcp-service.com", role = c("cre", "aut"), comment = c(ORCID = "0000-0002-6252-7639")), From be88faed0dfc0d98ebb5f4fb1471ff64234ceb5d Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 14:13:15 -0500 Subject: [PATCH 11/22] update golem config version --- inst/golem-config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/golem-config.yml b/inst/golem-config.yml index 804c88d9..417db0b8 100644 --- a/inst/golem-config.yml +++ b/inst/golem-config.yml @@ -1,6 +1,6 @@ default: golem_name: clinsight - golem_version: 0.1.0.9004 + golem_version: 0.1.0.9005 app_prod: no user_identification: test_user study_data: !expr clinsight::clinsightful_data From b146fe92362c327c62d7972b8beb9daf532f67ad Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 14:33:30 -0500 Subject: [PATCH 12/22] add new json files --- .../app_feature_01/app-feature-1-002.json | 44 +++++++++- .../app_feature_01/app-feature-1-003.json | 44 +++++++++- .../app_feature_01/app-feature-1-004.json | 88 ++++++++++++++++++- .../app_feature_01/app-feature-1-005.json | 88 ++++++++++++++++++- 4 files changed, 258 insertions(+), 6 deletions(-) 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 a7d7eccf..6161e190 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 @@ -220,6 +220,7 @@ "filter": "none", "vertical": false, "extensions": [ + "Buttons", "Scroller" ], "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n start date<\/th>\n end date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Serious Adverse Event<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -230,8 +231,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": true, + "buttons": [ + { + "extend": "excel", + "text": "<\/i>", + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + } + ], "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", @@ -368,6 +376,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 2d7d8544..9c7aabb1 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 @@ -220,6 +220,7 @@ "filter": "none", "vertical": false, "extensions": [ + "Buttons", "Scroller" ], "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n start date<\/th>\n end date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Serious Adverse Event<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -230,8 +231,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": true, + "buttons": [ + { + "extend": "excel", + "text": "<\/i>", + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + } + ], "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", @@ -368,6 +376,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 d11ed734..255c91cc 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 @@ -220,6 +220,7 @@ "filter": "none", "vertical": false, "extensions": [ + "Buttons", "Scroller" ], "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n start date<\/th>\n end date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Serious Adverse Event<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -230,8 +231,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": true, + "buttons": [ + { + "extend": "excel", + "text": "<\/i>", + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + } + ], "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", @@ -368,6 +376,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", @@ -8229,6 +8271,7 @@ "filter": "none", "vertical": false, "extensions": [ + "Buttons", "Scroller" ], "container": "\n \n \n
<\/th>\n Event<\/th>\n Systolic blood pressure<\/th>\n Diastolic blood pressure<\/th>\n Pulse<\/th>\n Resp<\/th>\n Temperature<\/th>\n Weight change since screening<\/th>\n BMI<\/th>\n Weight<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -8239,8 +8282,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": true, + "buttons": [ + { + "extend": "excel", + "text": "<\/i>", + "filename": "clinsight.Vital-signs.BEL_04_772.2024-11-04_19-31-31_UTC" + } + ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}", - "dom": "f<\"header h5\">ti", + "dom": "Bf<\"header h5\">ti", "columnDefs": [ { "orderable": false, @@ -8377,6 +8427,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 d7697726..5017c276 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 @@ -220,6 +220,7 @@ "filter": "none", "vertical": false, "extensions": [ + "Buttons", "Scroller" ], "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n start date<\/th>\n end date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Serious Adverse Event<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -230,8 +231,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": true, + "buttons": [ + { + "extend": "excel", + "text": "<\/i>", + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + } + ], "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", @@ -368,6 +376,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", @@ -8230,6 +8272,7 @@ "filter": "none", "vertical": false, "extensions": [ + "Buttons", "Scroller" ], "container": "\n \n \n
<\/th>\n Event<\/th>\n Systolic blood pressure<\/th>\n Diastolic blood pressure<\/th>\n Pulse<\/th>\n Resp<\/th>\n Temperature<\/th>\n Weight change since screening<\/th>\n BMI<\/th>\n Weight<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -8240,8 +8283,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": true, + "buttons": [ + { + "extend": "excel", + "text": "<\/i>", + "filename": "clinsight.Vital-signs.NLD_06_893.2024-11-04_19-31-36_UTC" + } + ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}", - "dom": "f<\"header h5\">ti", + "dom": "Bf<\"header h5\">ti", "columnDefs": [ { "orderable": false, @@ -8378,6 +8428,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", From 785f90ddeccba84beef0a577976b02667079f095 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 20:02:30 -0500 Subject: [PATCH 13/22] remove timestamp from the downloadable excel filenames --- R/fct_data_helpers.R | 3 +-- R/mod_queries.R | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/fct_data_helpers.R b/R/fct_data_helpers.R index 01d4bcd7..a5b6034d 100644 --- a/R/fct_data_helpers.R +++ b/R/fct_data_helpers.R @@ -520,8 +520,7 @@ dt_config <- function(data, table_name = "form") { dt_exts <- c("Buttons", "Scroller") dt_opts <- list(buttons=list(list(extend = 'excel', text = '', - filename = paste("clinsight", gsub(" ", "-", table_name), - gsub(":", "-", gsub(" ", "_", time_stamp())), sep = ".") + filename = paste("clinsight", gsub(" ", "-", table_name), sep = ".") ))) } else { dt_exts <- c("Scroller") diff --git a/R/mod_queries.R b/R/mod_queries.R index 8dd2c9da..89f943d3 100644 --- a/R/mod_queries.R +++ b/R/mod_queries.R @@ -147,7 +147,8 @@ mod_queries_server <- function(id, r, navinfo, all_forms, db_path, table_names){ # determine DT dom / exts / opts DT <- dt_config(initial_queries()[query_cols], - table_name = paste("queries", sep = ".")) + table_name = paste(ifelse(input$show_resolved, "all", "open"), + "queries", sep = ".")) datatable_custom( initial_queries()[query_cols], table_names, From 85bbbcecc751677f7d634b2a578ae6b0cf6fee57 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 20:07:18 -0500 Subject: [PATCH 14/22] update json files after removing timestamp --- tests/testthat/_snaps/app_feature_01/app-feature-1-002.json | 2 +- tests/testthat/_snaps/app_feature_01/app-feature-1-003.json | 2 +- tests/testthat/_snaps/app_feature_01/app-feature-1-004.json | 4 ++-- tests/testthat/_snaps/app_feature_01/app-feature-1-005.json | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) 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 6161e190..bf78ee82 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", 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 9c7aabb1..8cc22017 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", 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 255c91cc..316ee52e 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", @@ -8286,7 +8286,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Vital-signs.BEL_04_772.2024-11-04_19-31-31_UTC" + "filename": "clinsight.Vital-signs.BEL_04_772.2024-11-05_01-03-35_UTC" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}", 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 5017c276..1ce1b804 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-04_19-31-25_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", @@ -8287,7 +8287,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Vital-signs.NLD_06_893.2024-11-04_19-31-36_UTC" + "filename": "clinsight.Vital-signs.NLD_06_893.2024-11-05_01-03-40_UTC" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}", From 43ea7ef90d31c99aba994cb1f94d1237a953509b Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 20:34:55 -0500 Subject: [PATCH 15/22] updating json files now after actually changing them to be sans timestamp --- tests/testthat/_snaps/app_feature_01/app-feature-1-002.json | 2 +- tests/testthat/_snaps/app_feature_01/app-feature-1-003.json | 2 +- tests/testthat/_snaps/app_feature_01/app-feature-1-004.json | 4 ++-- tests/testthat/_snaps/app_feature_01/app-feature-1-005.json | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) 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 bf78ee82..3e62d7a7 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", 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 8cc22017..19ad144b 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", 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 316ee52e..152bb711 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", @@ -8286,7 +8286,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Vital-signs.BEL_04_772.2024-11-05_01-03-35_UTC" + "filename": "clinsight.Vital-signs.BEL_04_772" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}", 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 1ce1b804..6ab029af 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 @@ -235,7 +235,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Adverse-events.BEL_04_772.2024-11-05_01-03-29_UTC" + "filename": "clinsight.Adverse-events.BEL_04_772" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", @@ -8287,7 +8287,7 @@ { "extend": "excel", "text": "<\/i>", - "filename": "clinsight.Vital-signs.NLD_06_893.2024-11-05_01-03-40_UTC" + "filename": "clinsight.Vital-signs.NLD_06_893" } ], "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"\")\n}", From 3278dc560347c33105081a7a78de208c42d4204f Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 20:55:57 -0500 Subject: [PATCH 16/22] update json snaps for feature 03 --- .../app_feature_03/app-feature-3-002.json | 44 ++++++++++++++++++- .../app_feature_03/app-feature-3-003.json | 44 ++++++++++++++++++- .../app_feature_03/app-feature-3-004.json | 44 ++++++++++++++++++- .../app_feature_03/app-feature-3-005.json | 44 ++++++++++++++++++- 4 files changed, 172 insertions(+), 4 deletions(-) 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 29c28e94..9e46197a 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 @@ -647,6 +647,7 @@ "filter": "none", "vertical": false, "extensions": [ + "Buttons", "Scroller" ], "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n start date<\/th>\n end date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Serious Adverse Event<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -657,8 +658,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": 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", @@ -795,6 +803,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 68b1df64..d1a815ac 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" ], "container": "\n \n \n
<\/th>\n Subject<\/th>\n Type<\/th>\n Event<\/th>\n Form<\/th>\n Query<\/th>\n Time<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -16,8 +17,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": 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, @@ -144,6 +152,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 ec37967f..3d4c1523 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" ], "container": "\n \n \n
<\/th>\n Subject<\/th>\n Type<\/th>\n Event<\/th>\n Form<\/th>\n Query<\/th>\n Time<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -16,8 +17,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": 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, @@ -144,6 +152,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 f18d3975..ea419bbe 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" ], "container": "\n \n \n
<\/th>\n Resolved<\/th>\n Subject<\/th>\n Type<\/th>\n Event<\/th>\n Form<\/th>\n Query<\/th>\n Time<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -16,8 +17,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": 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, @@ -148,6 +156,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", From 7d65a2440412adf59525fc0c0c61b0c6e3f1c022 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Mon, 4 Nov 2024 21:01:55 -0500 Subject: [PATCH 17/22] update jsons for study_forms mod snaps --- .../mod_study_forms/study_forms-001.json | 44 ++++++++++++++++++- .../mod_study_forms/study_forms-002.json | 44 ++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) 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 f60a1d77..266c8bca 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" ], "container": "\n \n \n
<\/th>\n event_name<\/th>\n Systolic blood pressure<\/th>\n Diastolic blood pressure<\/th>\n Pulse<\/th>\n Resp<\/th>\n Temperature<\/th>\n Weight change since screening<\/th>\n BMI<\/th>\n Weight<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -1250,8 +1251,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": 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, @@ -1388,6 +1396,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 f60a1d77..266c8bca 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" ], "container": "\n \n \n
<\/th>\n event_name<\/th>\n Systolic blood pressure<\/th>\n Diastolic blood pressure<\/th>\n Pulse<\/th>\n Resp<\/th>\n Temperature<\/th>\n Weight change since screening<\/th>\n BMI<\/th>\n Weight<\/th>\n <\/tr>\n <\/thead>\n<\/table>", @@ -1250,8 +1251,15 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": 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, @@ -1388,6 +1396,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", From 72b435021074c9cd8261f1f0d55699f0c326b0b6 Mon Sep 17 00:00:00 2001 From: "Aaron Clark (Arcus)" Date: Wed, 6 Nov 2024 08:38:01 -0500 Subject: [PATCH 18/22] update w/ whack snaps that remove col reorder ext --- .../app_feature_01/app-feature-1-002.json | 42 +- .../app_feature_01/app-feature-1-002.new.json | 1089 -- .../app_feature_01/app-feature-1-003.json | 42 +- .../app_feature_01/app-feature-1-003.new.json | 8485 ---------------- .../app_feature_01/app-feature-1-004.json | 64 +- .../app_feature_01/app-feature-1-004.new.json | 8730 ---------------- .../app_feature_01/app-feature-1-005.json | 64 +- .../app_feature_01/app-feature-1-005.new.json | 8731 ----------------- .../app_feature_03/app-feature-3-002.json | 42 +- .../app_feature_03/app-feature-3-003.json | 22 +- .../app_feature_03/app-feature-3-004.json | 22 +- .../app_feature_03/app-feature-3-005.json | 22 +- .../mod_study_forms/study_forms-001.json | 22 +- .../mod_study_forms/study_forms-002.json | 22 +- 14 files changed, 29 insertions(+), 27370 deletions(-) delete mode 100644 tests/testthat/_snaps/app_feature_01/app-feature-1-002.new.json delete mode 100644 tests/testthat/_snaps/app_feature_01/app-feature-1-003.new.json delete mode 100644 tests/testthat/_snaps/app_feature_01/app-feature-1-004.new.json delete mode 100644 tests/testthat/_snaps/app_feature_01/app-feature-1-005.new.json 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 12313fc1..4b805b2c 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 @@ -6,8 +6,7 @@ "filter": "none", "vertical": false, "extensions": [ - "Scroller", - "ColReorder" + "Scroller" ], "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n Start date<\/th>\n End date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Category<\/th>\n Awareness date<\/th>\n Date of death<\/th>\n Death reason<\/th>\n <\/tr>\n <\/thead>\n<\/table>", "options": { @@ -185,23 +184,6 @@ "package": null, "all_files": false }, - { - "name": "dt-ext-colreorder-bootstrap5", - "version": "1.13.6", - "src": { - "href": "dt-ext-colreorder-bootstrap5-1.13.6" - }, - "meta": null, - "script": [ - "js/dataTables.colReorder.min.js", - "js/colReorder.bootstrap5.min.js" - ], - "stylesheet": "css/colReorder.bootstrap5.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": false - }, { "name": "dt-plugin-scrollresize", "version": "1.13.6", @@ -240,8 +222,7 @@ "vertical": false, "extensions": [ "Buttons", - "Scroller", - "ColReorder" + "Scroller" ], "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n start date<\/th>\n end date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Serious Adverse Event<\/th>\n <\/tr>\n <\/thead>\n<\/table>", "options": { @@ -251,6 +232,7 @@ "deferRender": true, "scrollResize": true, "scrollCollapse": true, + "colReorder": true, "buttons": [ { "extend": "excel", @@ -258,7 +240,6 @@ "filename": "clinsight.Adverse-events.BEL_04_772" } ], - "colReorder": true, "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Adverse events\")\n}", "dom": "Bf<\"header h5\">ti", "columnDefs": [ @@ -448,23 +429,6 @@ "package": null, "all_files": false }, - { - "name": "dt-ext-colreorder-bootstrap5", - "version": "1.13.6", - "src": { - "href": "dt-ext-colreorder-bootstrap5-1.13.6" - }, - "meta": null, - "script": [ - "js/dataTables.colReorder.min.js", - "js/colReorder.bootstrap5.min.js" - ], - "stylesheet": "css/colReorder.bootstrap5.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": false - }, { "name": "dt-plugin-scrollresize", "version": "1.13.6", diff --git a/tests/testthat/_snaps/app_feature_01/app-feature-1-002.new.json b/tests/testthat/_snaps/app_feature_01/app-feature-1-002.new.json deleted file mode 100644 index 4b805b2c..00000000 --- a/tests/testthat/_snaps/app_feature_01/app-feature-1-002.new.json +++ /dev/null @@ -1,1089 +0,0 @@ -{ - "output": { - "cf_adverse_events-SAE_table": { - "x": { - "style": "bootstrap5", - "filter": "none", - "vertical": false, - "extensions": [ - "Scroller" - ], - "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n Start date<\/th>\n End date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Category<\/th>\n Awareness date<\/th>\n Date of death<\/th>\n Death reason<\/th>\n <\/tr>\n <\/thead>\n<\/table>", - "options": { - "scrollY": 400, - "scrollX": true, - "scroller": true, - "deferRender": true, - "scrollResize": true, - "scrollCollapse": true, - "colReorder": true, - "initComplete": "function() {\n$(this.api().table().container()).find('.header').html(\"Serious Adverse Events\")\n}", - "dom": "f<\"header h5\">ti", - "columnDefs": [ - { - "className": "dt-right", - "targets": 0 - }, - { - "name": "N", - "targets": 0 - }, - { - "name": "Name", - "targets": 1 - }, - { - "name": "AESI", - "targets": 2 - }, - { - "name": "Start date", - "targets": 3 - }, - { - "name": "End date", - "targets": 4 - }, - { - "name": "CTCAE severity", - "targets": 5 - }, - { - "name": "Treatment related", - "targets": 6 - }, - { - "name": "Treatment action", - "targets": 7 - }, - { - "name": "Other action", - "targets": 8 - }, - { - "name": "Category", - "targets": 9 - }, - { - "name": "Awareness date", - "targets": 10 - }, - { - "name": "Date of death", - "targets": 11 - }, - { - "name": "Death reason", - "targets": 12 - } - ], - "order": [ - - ], - "autoWidth": false, - "orderClasses": false, - "ajax": { - "type": "POST", - "data": "function(d) {\nd.search.caseInsensitive = true;\nd.search.smart = true;\nd.escape = false;\nvar encodeAmp = function(x) { x.value = x.value.replace(/&/g, \"%26\"); }\nencodeAmp(d.search);\n$.each(d.columns, function(i, v) {encodeAmp(v.search);});\n}" - }, - "serverSide": true, - "processing": true - }, - "selection": { - "mode": "single", - "selected": null, - "target": "row", - "selectable": null - } - }, - "evals": [ - "options.initComplete", - "options.ajax.data" - ], - "jsHooks": [ - - ], - "deps": [ - { - "name": "jquery", - "version": "3.6.0", - "src": { - "href": "jquery-3.6.0" - }, - "meta": null, - "script": "jquery-3.6.0.min.js", - "stylesheet": null, - "head": null, - "attachment": null, - "all_files": true - }, - { - "name": "dt-core-bootstrap5", - "version": "1.13.6", - "src": { - "href": "dt-core-bootstrap5-1.13.6" - }, - "meta": null, - "script": [ - "js/jquery.dataTables.min.js", - "js/dataTables.bootstrap5.min.js" - ], - "stylesheet": "css/dataTables.bootstrap5.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": false - }, - { - "name": "bootstrap", - "version": "5.3.1", - "src": { - "href": "bootstrap-5.3.1" - }, - "meta": { - "viewport": "width=device-width, initial-scale=1, shrink-to-fit=no" - }, - "script": "bootstrap.bundle.min.js", - "stylesheet": "bootstrap.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": true - }, - { - "name": "bs3compat", - "version": "0.8.0", - "src": { - "href": "bs3compat-0.8.0" - }, - "meta": null, - "script": [ - "transition.js", - "tabs.js", - "bs3compat.js" - ], - "stylesheet": null, - "head": null, - "attachment": null, - "all_files": true - }, - { - "name": "dt-ext-scroller-bootstrap5", - "version": "1.13.6", - "src": { - "href": "dt-ext-scroller-bootstrap5-1.13.6" - }, - "meta": null, - "script": [ - "js/dataTables.scroller.min.js", - "js/scroller.bootstrap5.min.js" - ], - "stylesheet": "css/scroller.bootstrap5.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": false - }, - { - "name": "dt-plugin-scrollresize", - "version": "1.13.6", - "src": { - "href": "dt-plugin-scrollresize-1.13.6" - }, - "meta": null, - "script": "source.min.js", - "stylesheet": [ - - ], - "head": null, - "attachment": null, - "package": null, - "all_files": true - }, - { - "name": "crosstalk", - "version": "1.2.1", - "src": { - "href": "crosstalk-1.2.1" - }, - "meta": null, - "script": "js/crosstalk.min.js", - "stylesheet": "css/crosstalk.min.css", - "head": null, - "attachment": null, - "all_files": true - } - ] - }, - "cf_adverse_events-common_form_table": { - "x": { - "style": "bootstrap5", - "filter": "none", - "vertical": false, - "extensions": [ - "Buttons", - "Scroller" - ], - "container": "\n \n \n
N<\/th>\n Name<\/th>\n AESI<\/th>\n start date<\/th>\n end date<\/th>\n CTCAE severity<\/th>\n Treatment related<\/th>\n Treatment action<\/th>\n Other action<\/th>\n Serious Adverse Event<\/th>\n <\/tr>\n <\/thead>\n<\/table>", - "options": { - "scrollY": 400, - "scrollX": true, - "scroller": true, - "deferRender": true, - "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": "Bf<\"header h5\">ti", - "columnDefs": [ - { - "className": "dt-right", - "targets": 0 - }, - { - "name": "N", - "targets": 0 - }, - { - "name": "Name", - "targets": 1 - }, - { - "name": "AESI", - "targets": 2 - }, - { - "name": "start date", - "targets": 3 - }, - { - "name": "end date", - "targets": 4 - }, - { - "name": "CTCAE severity", - "targets": 5 - }, - { - "name": "Treatment related", - "targets": 6 - }, - { - "name": "Treatment action", - "targets": 7 - }, - { - "name": "Other action", - "targets": 8 - }, - { - "name": "Serious Adverse Event", - "targets": 9 - } - ], - "order": [ - - ], - "autoWidth": false, - "orderClasses": false, - "ajax": { - "type": "POST", - "data": "function(d) {\nd.search.caseInsensitive = true;\nd.search.smart = true;\nd.escape = false;\nvar encodeAmp = function(x) { x.value = x.value.replace(/&/g, \"%26\"); }\nencodeAmp(d.search);\n$.each(d.columns, function(i, v) {encodeAmp(v.search);});\n}" - }, - "serverSide": true, - "processing": true - }, - "selection": { - "mode": "single", - "selected": null, - "target": "row", - "selectable": null - } - }, - "evals": [ - "options.initComplete", - "options.ajax.data" - ], - "jsHooks": [ - - ], - "deps": [ - { - "name": "jquery", - "version": "3.6.0", - "src": { - "href": "jquery-3.6.0" - }, - "meta": null, - "script": "jquery-3.6.0.min.js", - "stylesheet": null, - "head": null, - "attachment": null, - "all_files": true - }, - { - "name": "dt-core-bootstrap5", - "version": "1.13.6", - "src": { - "href": "dt-core-bootstrap5-1.13.6" - }, - "meta": null, - "script": [ - "js/jquery.dataTables.min.js", - "js/dataTables.bootstrap5.min.js" - ], - "stylesheet": "css/dataTables.bootstrap5.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": false - }, - { - "name": "bootstrap", - "version": "5.3.1", - "src": { - "href": "bootstrap-5.3.1" - }, - "meta": { - "viewport": "width=device-width, initial-scale=1, shrink-to-fit=no" - }, - "script": "bootstrap.bundle.min.js", - "stylesheet": "bootstrap.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": true - }, - { - "name": "bs3compat", - "version": "0.8.0", - "src": { - "href": "bs3compat-0.8.0" - }, - "meta": null, - "script": [ - "transition.js", - "tabs.js", - "bs3compat.js" - ], - "stylesheet": null, - "head": null, - "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", - "src": { - "href": "dt-ext-scroller-bootstrap5-1.13.6" - }, - "meta": null, - "script": [ - "js/dataTables.scroller.min.js", - "js/scroller.bootstrap5.min.js" - ], - "stylesheet": "css/scroller.bootstrap5.min.css", - "head": null, - "attachment": null, - "package": null, - "all_files": false - }, - { - "name": "dt-plugin-scrollresize", - "version": "1.13.6", - "src": { - "href": "dt-plugin-scrollresize-1.13.6" - }, - "meta": null, - "script": "source.min.js", - "stylesheet": [ - - ], - "head": null, - "attachment": null, - "package": null, - "all_files": true - }, - { - "name": "crosstalk", - "version": "1.2.1", - "src": { - "href": "crosstalk-1.2.1" - }, - "meta": null, - "script": "js/crosstalk.min.js", - "stylesheet": "css/crosstalk.min.css", - "head": null, - "attachment": null, - "all_files": true - } - ] - }, - "cf_adverse_events-timeline_fig-timeline": { - "x": { - "items": [ - { - "subject_id": "BEL_04_772", - "content": "Screening", - "start": "2023-06-05", - "group": "Visit", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "53", - "order": "4" - }, - { - "subject_id": "BEL_04_772", - "content": "Visit 1", - "start": "2023-07-05", - "group": "Visit", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "54", - "order": "4" - }, - { - "subject_id": "BEL_04_772", - "content": "Visit 2", - "start": "2023-07-19", - "group": "Visit", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "55", - "order": "4" - }, - { - "subject_id": "BEL_04_772", - "content": "Visit 3", - "start": "2023-08-02", - "group": "Visit", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "56", - "order": "4" - }, - { - "subject_id": "BEL_04_772", - "content": "Visit 4", - "start": "2023-08-16", - "group": "Visit", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "57", - "order": "4" - }, - { - "subject_id": "BEL_04_772", - "content": "Visit 5", - "start": "2023-08-30", - "group": "Visit", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "58", - "order": "4" - }, - { - "subject_id": "BEL_04_772", - "content": "Visit 6", - "start": "2023-09-13", - "group": "Visit", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "59", - "order": "4" - }, - { - "subject_id": "BEL_04_772", - "content": "Hypotension", - "form_repeat": "1", - "item_group": "Adverse events", - "start": "2023-07-07", - "group": "Adverse event", - "title": "Hypotension", - "style": "background-color: #d47500;line-height: 0.8; border-radius: 6px;", - "id": "85", - "order": "2", - "needs_review": true - }, - { - "subject_id": "BEL_04_772", - "content": "Atrial Fibrillation", - "form_repeat": "2", - "item_group": "Adverse events", - "start": "2023-07-05", - "group": "Adverse event", - "title": "Atrial Fibrillation", - "style": "background-color: #d47500;line-height: 0.8; border-radius: 6px;", - "id": "93", - "order": "2", - "needs_review": true - }, - { - "subject_id": "BEL_04_772", - "content": "Tachycardia", - "form_repeat": "3", - "item_group": "Adverse events", - "start": "2023-07-05", - "group": "Adverse event", - "title": "Tachycardia", - "style": "background-color: #d47500;line-height: 0.8; border-radius: 6px;", - "id": "104", - "order": "2", - "needs_review": true - }, - { - "subject_id": "BEL_04_772", - "content": "Urinary Tract Infection", - "form_repeat": "4", - "item_group": "Adverse events", - "start": "2023-07-05", - "group": "Adverse event", - "title": "Urinary Tract Infection", - "style": "background-color: #d47500;line-height: 0.8; border-radius: 6px;", - "id": "110", - "order": "2", - "needs_review": true - }, - { - "subject_id": "BEL_04_772", - "content": "Atrial Fibrillation", - "form_repeat": "5", - "item_group": "Adverse events", - "start": "2023-08-16", - "group": "Adverse event", - "title": "Atrial Fibrillation", - "style": "background-color: #d47500;line-height: 0.8; border-radius: 6px;", - "id": "124", - "order": "2", - "needs_review": true - }, - { - "subject_id": "BEL_04_772", - "content": "Treatment", - "form_repeat": "1", - "item_group": "General", - "start": "2023-07-05", - "group": "Events", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "198", - "order": "3" - }, - { - "subject_id": "BEL_04_772", - "content": "Treatment", - "form_repeat": "2", - "item_group": "General", - "start": "2023-08-02", - "group": "Events", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "199", - "order": "3" - }, - { - "subject_id": "BEL_04_772", - "content": "Treatment", - "form_repeat": "3", - "item_group": "General", - "start": "2023-08-30", - "group": "Events", - "style": "line-height: 0.8; border-radius: 6px;", - "id": "200", - "order": "3" - } - ], - "groups": [ - { - "id": "Visit", - "content": "Visit", - "order": "4" - }, - { - "id": "Adverse event", - "content": "Adverse event", - "order": "2" - }, - { - "id": "Events", - "content": "Events", - "order": "3" - } - ], - "showZoom": true, - "zoomFactor": 0.5, - "fit": true, - "options": { - "zoomable": false - }, - "height": null, - "timezone": null, - "api": [ - - ] - }, - "evals": [ - - ], - "jsHooks": [ - - ], - "deps": [ - { - "name": "jquery", - "version": "3.6.0", - "src": { - "href": "jquery-3.6.0" - }, - "meta": null, - "script": "jquery-3.6.0.min.js", - "stylesheet": null, - "head": null, - "attachment": null, - "all_files": true - }, - { - "name": "bootstrap", - "version": "3.3.5", - "src": { - "href": "bootstrap-3.3.5" - }, - "meta": { - "viewport": "width=device-width, initial-scale=1" - }, - "script": [ - "js/bootstrap.min.js", - "shim/html5shiv.min.js", - "shim/respond.min.js" - ], - "stylesheet": "css/bootstrap.min.css", - "head": "