From ee4ecb1a948b7d21f515e8373bd26c66d9bf3b1e Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Mon, 5 May 2025 14:43:19 +0200 Subject: [PATCH 1/8] updated version inclusion --- R/app_version.R | 2 +- R/hosted_version.R | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 R/hosted_version.R diff --git a/R/app_version.R b/R/app_version.R index 6d74916b..724053ed 100644 --- a/R/app_version.R +++ b/R/app_version.R @@ -1 +1 @@ -app_version <- function()'v25.4.5.250430' +app_version <- function()'25.5.1' diff --git a/R/hosted_version.R b/R/hosted_version.R new file mode 100644 index 00000000..317135d5 --- /dev/null +++ b/R/hosted_version.R @@ -0,0 +1 @@ +hosted_version <- function()'v25.5.1-250505' From 0b8102d25f3e21aff883d8d751b9257c70961bb4 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Mon, 5 May 2025 14:43:41 +0200 Subject: [PATCH 2/8] prepared for better dimensions input --- R/data_plots.R | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/R/data_plots.R b/R/data_plots.R index 51fc249c..9ccdd989 100644 --- a/R/data_plots.R +++ b/R/data_plots.R @@ -45,15 +45,23 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { title = "Download", icon = bsicons::bs_icon("download"), shinyWidgets::noUiSliderInput( - inputId = ns("height"), + inputId = ns("height_slide"), label = "Plot height (mm)", min = 50, max = 300, value = 100, step = 1, format = shinyWidgets::wNumbFormat(decimals = 0), - color = datamods:::get_primary_color() + color = datamods:::get_primary_color(), + inline = TRUE ), + # shiny::numericInput( + # inputId = ns("height_numeric"), + # label = "Plot height (mm)", + # min = 50, + # max = 300, + # value = 100 + # ), shinyWidgets::noUiSliderInput( inputId = ns("width"), label = "Plot width (mm)", @@ -372,17 +380,32 @@ data_visuals_server <- function(id, } }) + # shiny::observeEvent(input$height_numeric, { + # shinyWidgets::updateNoUiSliderInput(session, ns("height_slide"), value = input$height_numeric) + # }, ignoreInit = TRUE) + # shiny::observeEvent(input$height_slide, { + # shiny::updateNumericInput(session, ns("height_numeric"), value = input$height_slide) + # }, ignoreInit = TRUE) + + output$download_plot <- shiny::downloadHandler( filename = shiny::reactive({ paste0("plot.", input$plot_type) }), content = function(file) { + if (inherits(rv$plot,"patchwork")){ + plot <- rv$plot + } else { + plot <- rv$plot[[1]] + + } + # browser() shiny::withProgress(message = "Drawing the plot. Hold on for a moment..", { ggplot2::ggsave( filename = file, - plot = rv$plot, + plot = plot, width = input$width, - height = input$height, + height = input$height_slide, dpi = 300, units = "mm", scale = 2 ) @@ -517,8 +540,8 @@ supported_plots <- function() { fun = "plot_euler", descr = "Euler diagram", note = "Generate area-proportional Euler diagrams to display set relationships", - primary.type = "dichotomous", - secondary.type = "dichotomous", + primary.type = c("dichotomous", "categorical"), + secondary.type = c("dichotomous", "categorical"), secondary.multi = TRUE, secondary.max = 4, tertiary.type = c("dichotomous", "categorical"), From 120448783650150db31ddea79d88dfe6303b78a3 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Mon, 5 May 2025 14:44:05 +0200 Subject: [PATCH 3/8] prepared for auto ellipsis or circle --- R/plot_euler.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/R/plot_euler.R b/R/plot_euler.R index 36c8f918..4dff9de5 100644 --- a/R/plot_euler.R +++ b/R/plot_euler.R @@ -109,6 +109,12 @@ plot_euler <- function(data, pri, sec, ter = NULL, seed = 2103) { #' ) |> plot_euler_single() #' mtcars[c("vs", "am")] |> plot_euler_single() plot_euler_single <- function(data) { + # if (any("categorical" %in% data_type(data))){ + # shape <- "ellipse" + # } else { + # shape <- "circle" + # } + data |> ggeulerr(shape = "circle") + ggplot2::theme_void() + From 0a0d69312a02ddd488cf4f85a3d34524bffbc38b Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Mon, 5 May 2025 14:44:18 +0200 Subject: [PATCH 4/8] connects with progres --- R/redcap_read_shiny_module.R | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/R/redcap_read_shiny_module.R b/R/redcap_read_shiny_module.R index b051fc78..8857e5f0 100644 --- a/R/redcap_read_shiny_module.R +++ b/R/redcap_read_shiny_module.R @@ -112,7 +112,7 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { tags$p(phosphoricons::ph("info", weight = "bold"), "Please specify data to download, then press 'Import'.") ), dismissible = TRUE - )#, + ) # , ## TODO: Use busy indicator like on download to have button activate/deactivate # bslib::input_task_button( # id = ns("data_import"), @@ -200,7 +200,9 @@ m_redcap_readServer <- function(id) { ) # browser() - imported <- try(rlang::exec(REDCapR::redcap_metadata_read, !!!parameters), silent = TRUE) + shiny::withProgress({ + imported <- try(rlang::exec(REDCapR::redcap_metadata_read, !!!parameters), silent = TRUE) + },message = paste("Connecting to",data_rv$uri)) ## TODO: Simplify error messages if (inherits(imported, "try-error") || NROW(imported) < 1 || ifelse(is.list(imported), !isTRUE(imported$success), FALSE)) { @@ -227,8 +229,10 @@ m_redcap_readServer <- function(id) { include_data_alert( see_data_text = "Click to see data dictionary", dataIdName = "see_data", - extra = tags$p(tags$b(phosphoricons::ph("check", weight = "bold"), "Connected to server!"), - glue::glue("The {data_rv$info$project_title} project is loaded.")), + extra = tags$p( + tags$b(phosphoricons::ph("check", weight = "bold"), "Connected to server!"), + glue::glue("The {data_rv$info$project_title} project is loaded.") + ), btn_show_data = TRUE ) ) From b7b688f8b12edc02a006bdc1a9b19063244a8873 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Mon, 5 May 2025 14:44:37 +0200 Subject: [PATCH 5/8] version in report --- R/helpers.R | 2 +- inst/apps/FreesearchR/www/report.rmd | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/R/helpers.R b/R/helpers.R index e9f8394b..377badb5 100644 --- a/R/helpers.R +++ b/R/helpers.R @@ -65,7 +65,7 @@ write_rmd <- function(data, ...) { ## Ref: https://github.com/quarto-dev/quarto-cli/discussions/4041 ## Outputs to the same as the .qmd file rmarkdown::render( - params = list(data.file = "web_data.rds"), + params = list(data.file = "web_data.rds",version=app_version()), # execute_params = list(data.file = temp), ... ) diff --git a/inst/apps/FreesearchR/www/report.rmd b/inst/apps/FreesearchR/www/report.rmd index b93d47e3..9a2013b3 100644 --- a/inst/apps/FreesearchR/www/report.rmd +++ b/inst/apps/FreesearchR/www/report.rmd @@ -6,6 +6,7 @@ author: FreesearchR data analysis tool toc: false params: data.file: NA + version: NA --- ```{r setup, echo = FALSE} @@ -46,7 +47,7 @@ Research should be free and open with easy access for all. The FreesearchR tool ## Methods -Analyses were conducted in the *FreesearchR* data analysis web-tool based on R version 4.4.1. +Analyses were conducted using the *FreesearchR* data analysis web-tool version `r params$version` based on *R* version 4.4.1. ## Results From 868df9f8f111bcfd8b076b256494bc18743607ea Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Mon, 5 May 2025 14:45:07 +0200 Subject: [PATCH 6/8] updated feedback links --- inst/apps/FreesearchR/app.R | 114 ++++++++++++++++++----------- inst/apps/FreesearchR/www/intro.md | 2 +- 2 files changed, 73 insertions(+), 43 deletions(-) diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index 347b471c..f07e0dc8 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -10,7 +10,7 @@ #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'v25.4.4.250430' +app_version <- function()'25.5.1' ######## @@ -1619,15 +1619,23 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { title = "Download", icon = bsicons::bs_icon("download"), shinyWidgets::noUiSliderInput( - inputId = ns("height"), + inputId = ns("height_slide"), label = "Plot height (mm)", min = 50, max = 300, value = 100, step = 1, format = shinyWidgets::wNumbFormat(decimals = 0), - color = datamods:::get_primary_color() + color = datamods:::get_primary_color(), + inline = TRUE ), + # shiny::numericInput( + # inputId = ns("height_numeric"), + # label = "Plot height (mm)", + # min = 50, + # max = 300, + # value = 100 + # ), shinyWidgets::noUiSliderInput( inputId = ns("width"), label = "Plot width (mm)", @@ -1946,17 +1954,32 @@ data_visuals_server <- function(id, } }) + # shiny::observeEvent(input$height_numeric, { + # shinyWidgets::updateNoUiSliderInput(session, ns("height_slide"), value = input$height_numeric) + # }, ignoreInit = TRUE) + # shiny::observeEvent(input$height_slide, { + # shiny::updateNumericInput(session, ns("height_numeric"), value = input$height_slide) + # }, ignoreInit = TRUE) + + output$download_plot <- shiny::downloadHandler( filename = shiny::reactive({ paste0("plot.", input$plot_type) }), content = function(file) { + if (inherits(rv$plot,"patchwork")){ + plot <- rv$plot + } else { + plot <- rv$plot[[1]] + + } + # browser() shiny::withProgress(message = "Drawing the plot. Hold on for a moment..", { ggplot2::ggsave( filename = file, - plot = rv$plot, + plot = plot, width = input$width, - height = input$height, + height = input$height_slide, dpi = 300, units = "mm", scale = 2 ) @@ -2091,8 +2114,8 @@ supported_plots <- function() { fun = "plot_euler", descr = "Euler diagram", note = "Generate area-proportional Euler diagrams to display set relationships", - primary.type = "dichotomous", - secondary.type = "dichotomous", + primary.type = c("dichotomous", "categorical"), + secondary.type = c("dichotomous", "categorical"), secondary.multi = TRUE, secondary.max = 4, tertiary.type = c("dichotomous", "categorical"), @@ -3338,7 +3361,7 @@ write_rmd <- function(data, ...) { ## Ref: https://github.com/quarto-dev/quarto-cli/discussions/4041 ## Outputs to the same as the .qmd file rmarkdown::render( - params = list(data.file = "web_data.rds"), + params = list(data.file = "web_data.rds",version=app_version()), # execute_params = list(data.file = temp), ... ) @@ -3927,6 +3950,13 @@ is_identical_to_previous <- function(data, no.name = TRUE) { } +######## +#### Current file: /Users/au301842/FreesearchR/R//hosted_version.R +######## + +hosted_version <- function()'v25.5.1-250505' + + ######## #### Current file: /Users/au301842/FreesearchR/R//html_dependency_freesearchr.R ######## @@ -4784,6 +4814,12 @@ plot_euler <- function(data, pri, sec, ter = NULL, seed = 2103) { #' ) |> plot_euler_single() #' mtcars[c("vs", "am")] |> plot_euler_single() plot_euler_single <- function(data) { + # if (any("categorical" %in% data_type(data))){ + # shape <- "ellipse" + # } else { + # shape <- "circle" + # } + data |> ggeulerr(shape = "circle") + ggplot2::theme_void() + @@ -5441,7 +5477,7 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { tags$p(phosphoricons::ph("info", weight = "bold"), "Please specify data to download, then press 'Import'.") ), dismissible = TRUE - )#, + ) # , ## TODO: Use busy indicator like on download to have button activate/deactivate # bslib::input_task_button( # id = ns("data_import"), @@ -5529,7 +5565,9 @@ m_redcap_readServer <- function(id) { ) # browser() - imported <- try(rlang::exec(REDCapR::redcap_metadata_read, !!!parameters), silent = TRUE) + shiny::withProgress({ + imported <- try(rlang::exec(REDCapR::redcap_metadata_read, !!!parameters), silent = TRUE) + },message = paste("Connecting to",data_rv$uri)) ## TODO: Simplify error messages if (inherits(imported, "try-error") || NROW(imported) < 1 || ifelse(is.list(imported), !isTRUE(imported$success), FALSE)) { @@ -5556,8 +5594,10 @@ m_redcap_readServer <- function(id) { include_data_alert( see_data_text = "Click to see data dictionary", dataIdName = "see_data", - extra = tags$p(tags$b(phosphoricons::ph("check", weight = "bold"), "Connected to server!"), - glue::glue("The {data_rv$info$project_title} project is loaded.")), + extra = tags$p( + tags$b(phosphoricons::ph("check", weight = "bold"), "Connected to server!"), + glue::glue("The {data_rv$info$project_title} project is loaded.") + ), btn_show_data = TRUE ) ) @@ -7521,7 +7561,8 @@ regression_server <- function(id, shiny::observeEvent( list( - data_r() + data_r(), + regression_vars() ), { rv$list$regression$tables <- NULL @@ -9687,14 +9728,28 @@ ui_elements <- list( ), ############################################################################## ######### - ######### Documentation panel + ######### Feedback link + ######### + ############################################################################## + "feedback" = bslib::nav_item( + # shiny::img(shiny::icon("book")), + shiny::tags$a( + href = "https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8", + "Feedback",shiny::icon("arrow-up-right-from-square"), + target = "_blank", + rel = "noopener noreferrer" + ) + ), + ############################################################################## + ######### + ######### Documentation link ######### ############################################################################## "docs" = bslib::nav_item( # shiny::img(shiny::icon("book")), shiny::tags$a( href = "https://agdamsbo.github.io/FreesearchR/", - "Docs (external)", + "Docs",shiny::icon("arrow-up-right-from-square"), target = "_blank", rel = "noopener noreferrer" ) @@ -9736,6 +9791,7 @@ ui <- bslib::page_fixed( ui_elements$analyze, ui_elements$download, bslib::nav_spacer(), + ui_elements$feedback, ui_elements$docs, fillable = FALSE, footer = shiny::tags$footer( @@ -9746,7 +9802,7 @@ ui <- bslib::page_fixed( ), shiny::p( style = "margin: 1; color: #888;", - shiny::tags$a("Docs", href = "https://agdamsbo.github.io/FreesearchR/", target = "_blank", rel = "noopener noreferrer")," | ", app_version(), " | ", shiny::tags$a("License: AGPLv3", href = "https://github.com/agdamsbo/FreesearchR/blob/main/LICENSE.md", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Source", href = "https://github.com/agdamsbo/FreesearchR/", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Share feedback", href = "https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8", target = "_blank", rel = "noopener noreferrer") + shiny::tags$a("Docs", href = "https://agdamsbo.github.io/FreesearchR/", target = "_blank", rel = "noopener noreferrer")," | ", hosted_version(), " | ", shiny::tags$a("License: AGPLv3", href = "https://github.com/agdamsbo/FreesearchR/blob/main/LICENSE.md", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Source", href = "https://github.com/agdamsbo/FreesearchR/", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Share feedback", href = "https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8", target = "_blank", rel = "noopener noreferrer") ), ) ) @@ -9773,9 +9829,7 @@ library(quarto) library(here) library(broom) library(broom.helpers) -# library(REDCapCAST) library(easystats) -# library(esquisse) library(patchwork) library(DHARMa) library(apexcharter) @@ -9786,32 +9840,17 @@ library(shinyWidgets) library(DT) library(data.table) library(gtsummary) -# library(FreesearchR) - -# source("functions.R") data(starwars) data(mtcars) -mtcars_date <- mtcars |> append_column(as.Date(sample(1:365, nrow(mtcars))), "rand_dates") -mtcars_date$date <- as.Date(sample(seq_len(365), nrow(mtcars))) data(trial) -# light <- custom_theme() -# -# dark <- custom_theme(bg = "#000",fg="#fff") - - server <- function(input, output, session) { ## Listing files in www in session start to keep when ending and removing ## everything else. files.to.keep <- list.files("www/") - output$docs_file <- shiny::renderUI({ - # shiny::includeHTML("www/docs.html") - shiny::HTML(readLines("www/docs.html")) - }) - ############################################################################## ######### ######### Night mode (just very popular, not really needed) @@ -10480,20 +10519,11 @@ server <- function(input, output, session) { paste0("report.", input$output_type) }), content = function(file, type = input$output_type) { - # browser() - # shiny::req(rv$list$regression) ## Notification is not progressing ## Presumably due to missing - # browser() # Simplified for .rmd output attempt format <- ifelse(type == "docx", "word_document", "odt_document") - # browser() - # if (shiny::is.reactive(rv$regression)){ - # rv$list$regression <- rv$regression() - # } - - # rv$list$regression <- rv$regression() rv$list$regression <- rv$regression() shiny::withProgress(message = "Generating the report. Hold on for a moment..", { diff --git a/inst/apps/FreesearchR/www/intro.md b/inst/apps/FreesearchR/www/intro.md index aa84e178..f1432c8b 100644 --- a/inst/apps/FreesearchR/www/intro.md +++ b/inst/apps/FreesearchR/www/intro.md @@ -30,4 +30,4 @@ Here is a brief summary of the functions: - Code to recreate all steps locally -The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed description of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8), or share on [GitHub](https://github.com/agdamsbo/FreesearchR/issues). +The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed description of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). From c3e84163421776580bbee7a9d2d106a32e1e9ccb Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Mon, 5 May 2025 14:45:21 +0200 Subject: [PATCH 7/8] new version --- CITATION.cff | 2 +- DESCRIPTION | 2 +- NEWS.md | 8 ++++++++ R/sysdata.rda | Bin 2381 -> 2451 bytes SESSION.md | 25 ++++++++++++++----------- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 27be40e0..ff5aba86 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -9,7 +9,7 @@ type: software license: AGPL-3.0-or-later title: 'FreesearchR: A free and open-source browser based data analysis tool for researchers with publication ready output' -version: 25.4.5 +version: 25.5.1 doi: 10.5281/zenodo.14527429 abstract: Easily evaluate and analysis clinical health data in your browser on a server or on your own device. Import data from multiple sources, summarise, modify and diff --git a/DESCRIPTION b/DESCRIPTION index 1832158a..534b0dc4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: FreesearchR Title: A free and open-source browser based data analysis tool for researchers with publication ready output -Version: 25.4.5 +Version: 25.5.1 Authors@R: c( person("Andreas Gammelgaard", "Damsbo",email="agdamsbo@clin.au.dk", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7559-1154")), diff --git a/NEWS.md b/NEWS.md index 4de9b76d..3e9e16cf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,11 @@ +# FreesearchR 25.5.1 + +- *BUG*: correct export of single variable plot. + +- Include app version in report for reference. + +- Show progress on connecting to a REDCap database. + # FreesearchR 25.4.5 - *BUG*: Regression results and code not returned correctly diff --git a/R/sysdata.rda b/R/sysdata.rda index e6434994b0882740a8634f98a1500d38e07e9b06..d6c45e54b20f2df60249d16ff25c430a722c378b 100644 GIT binary patch literal 2451 zcmV;E32gR4T4*^jL0KkKS)mV0q5u}wf5`v;Xaz!l|KNY`-@w2B|L{Nn2mlBH;0nJ! z-u7BIkAUI_PJtmq=L66yzQNTW4NQPQ$Y_{@NrGuKOqv5jL)01!nq<()qskFa&;*Dn zpQ-AeiM0Wc z8U}!5G-v>500vAllA2*Qlh8Dtrc4p00MVq;lM$vMWX4S=pd$#9nv#BiPy;{)O#?sx z0MKdb0MG*_33HsA!i;EVGSHT_0tux60CzU5T&Shj5Wm6n)X%AS;S4)_JDX->b_Y(t06ahh5=dDDmmmk@Ul+fuFu;$uM1t4u*SViz33L7L3TFVRK-ecQZb~JkSP*Y!N(s32q9coV7n4^)X zEyQk9P0Lv-s=EEK+_>m794$_*g|#e6ArfijwYNBMWMqrm|$9Wjxg zI8@g;U6d_wPi(00C%!TIj9ejM?iX8Ll~*D2tpJt#I-Z|N|g0748<#lq%Y zr#c{Z;39^oBB=mDWEc_>5fK59M5u~@AE>CO9wLi&tfLOnf}HPegI|g$b7CkO-2Pr| zn!%UTy@?49{{HF*atG-$sZ%n{;=4Mq7V~QHx zHqo4MnaUbYI^@jZOEHDkvozQstCY5sZIv~1uDIiOde!ss#}94sfasjbR_GLJC1q(S zDT66;3U4h?aK>QV(9q%<=WyiYs1iuksumbSIw43Rav;o*e*2V~!AU&V}7KxoynWW-H5gmwCPp4bz@Y8WkN9 z0+K*1tGiaR=+|v#H+!c%=1p3=?Y(kwcx}^-b+I*rt=wKwM3M|JVnWMCXWU6EHmkkQ zmJBaI2#Fv_fT)5B!$gmPl^EG-*V54-P}Q}CP+9ol?!M{rT`@N3FrkTot2AU#H>zXn zJIg)c8^#Ji1tOwkipV2|2=Mnwk`oh5DtYsr@m3iqu3X8m2pK3~)y80$u2PCIrK3zr z^iIr+KQa_E$!y6BMH)*GSrnObKVnv66i+|_ho?wNk|GRXjGfoRDh65wrG=MC@sfA2 zJW_eQz3)YB5{>&=iGxw48AX-`%wg$#LRmLwkA93Z;_zs}fGP~nk`5za710z85fLl} zgG!Qssv12+v+B3p<7b7>iYRHiioJOkr*It1q#Vg z*q!O&X$2Se+V?=B&XOHGvtFldZnoOC6gQkSr~{l2r60%ftpx? zX@V&XIOs3FgB8`;9V62!R+Md$EFcSLWSp}NQB7O#KC*93v=?I9!KzHD!xjgt=lnhX zPI#wDu>*&j^^L)SVogE>P@)*hBuxnV4lh5e)jQWMkvT6~O+`4;gsfgmxU~%l*xDfrmFF6qo z?@vu{c=b?0LeN*Kl)+?4;wI$-V|>x|z)S+$T048|nnRi5Pc3eRR8A1t-9nIP)l`z> z5SEbd>^3TpXN-N@)iD9rYP%nTeVWyg;(I6M;9A}*L)z;b1`olKxbzUT6$8y(Wfhvtyk|nRm7Yqo7+E}m8$tS~f{Z`u-D)P!SCFWGPXJG$22kMz#O(LyRJchEm zmtF5tR@7UKVToPPfx%)?Zx~L(Slgm$#AX(=j$12?1`uotdR;d$@bzz@6%_FWy%*fJ zTo}!@g|YmS)oyiK5~`)3ClG1gXpvH|7t~#Pfx>~Rr_9{*al>ka<;3Bd717$2g>BZ} ziYjRR_xP$6XIvpMhYh@diikv12^~)oYK@P~pg-pc;{yjar}6q7rND^=WvHDyr!t2# zCvi~9o@+W(^c>V`sGZYr4j`-TiLx%0)`!QNE8(pK)u*GWT(kc~mKI_g17i_kksPS1 z;z}^BS-~j|+d!rh8J;RfI&S5wvCX=)YFAq3kC4X;LwX%v*m}8i-xCqxHR0&zko4=m zLqa;a=GF1>rFbD%fQ3XNOthVlUxKxb!`=zaa=4o*0~92crH8cxi326QD5xh!5f4Wq za!#$hxZxp6E1<_&L@qIf^&|;)u=Iy_V0RMKs~YDp{dgFgTzRjRZ9mH0Vro;wEQ& zZ&&49DBDD)m~0mCrmoqvCA3OlqjQI5-rc@&?Bc@Fbx53E=uD=bkz2G>;D!m*Xnkm6 zS&(oy(Cgh(8JiY-b)fO>W49TQE(cWvT=(W)%rG)21VE6jl~Wbw^(|GfE-AxhqQ}o_ zDnz!&riavG`Goh@WkJb{xod>Q;F%I9bIxz27DWUM*ROE0ZTe`-vqG}(LX63p^oq6& zw9m(<$+}K`Wr0s!3`+pZWm)4ApIIiv?8S49uzQf=Jypf0W0Yw!`VyOQJ_Mh=>3H literal 2381 zcmV-T39|M=T4*^jL0KkKS=y?Jk^mNWf5`v;Xaz!l|KNXX-@w2B|L{NnKmZ5<;0k{m zoWXJ7;8KtVLWcq5B+zI$YGeTnfCvB(N&19(Pg6h!AklymOhKx66GTbrHiVwik4fpK zL=6A{0004?G#Z`}6qLx*0%B=`FaVedfB=I`MgS6NBuS(iOwlwN82|tP8UO}>00Ww0 zGBRnCKr$LK88QF>21c101`x;*B{dTXh=61Pw1CiP000JnWYa;C^tsGUGK^woGE$bc zAPIf|s&H-CxDiXPA%nyB&zn90!Weh`{2S&`J>r(-ohhlk^wrVHyT_ieIx9!E7a{bpk^in0yZl zH8LD1(?R!i9So?^6mHyciEc=0VL6uONp53?>lIg!!fuYUk!Ayhthk4H8cJ*hHfT^+ zn?J|jhn3JCjX0F&YT|T?try&rw+1N5Ax$G{m`2;y#zH;MbazveOmML}_ZDQaCz@5- zRU$JD348WTgqGI7qU2sHQXqKz&ETePPbh%# z29U&ZW@tBtiNus7o(Mpgc$>Myi4o35%{Ez-+(8?ERW$&`YG>$ijjG0t5*G_U%q`>I1t4L^Z%gNB|2Uz>tuNAPj;fMGyeqfQo9s z5pLF$VcY;yKgVd;A9SXfi&vq+d)_^B&~eANMoelW}VkGZ0KT(j0&5u zQ6`}caw!02P96;;+GOLCm1h(PqhR7&b1M`@=}@>y4*`*dBXFPy1cri10+taGJ!vTHkBsmg#$w}8Vxwcg%Tvfrv1-atvW*H6gDEm}L@e6E8?m|F z4jTHFcRWeT^E}SZ?@zo#sL9TUGb7ccj>Z*4wQAMtY5-w1Z9=Fl?vvv9j?<TDXrmfhw-X*hab#H;&~h0eYKHla24Ppk<(1 zS!L59(quaQewRyysFpXc>}yVjqe>w~mQDsR>hy_Z+J{@1(Q$U2^2O`IR&F#LN2vwc zhz8VDOD&T9B_ULl2}J=y4N_8~VA!>hkp%?tdUi}=$n!U{nXW}zHs3$FhB1n z*#(6_sO&t+)wTk}e%oHxK!yuAusFPo*MrNgs@B!8v3AYy&>+SL$gpD=kzi`dL_{S< z1)!ptrHF?m0Z8J}r$Yq>Dy%V>9ja8RR*NJc(86#-4N*n!J+#rP*pA}b#cIPUZpDGx z@crIyj|Z*5<+gH}u||zWT%b1|q|I-7f5kXX8_`&)xnZdcrkgFPL=>3~cgN?{0FeDZ zZ(i+hWL#s9tHa|*vv;Z6z5RcwQQnPH00Iy!kB`&Kqcy+)gb!`D z#PHGp2tfAv?OjCL@$cx!WZ~J9TEuq$U*EuM>K87!PK?my(ekb=M;3zvkLj~`A^vuG zNQiv=-4#9K(L9VSSPJ#FG^~@vP0EvF8|16gOu#MGqvg$TxOARG^3v*KJi!f_)2RlH z7RZw060Z>Ncx@`QGwL2K>VW~=v0t&1-!@&2?>)2a%TCco47@L5iZBILs88Sj#4x3KWSy^+H+w@k8$^o2O=r6$Liua?Ajv0{Ly8_*`4J#WfEp}(i zOu)&(XEZ{{Qz11icoI<6+Dm1C7IdJl?f~g43u2w+QYNvQ+Te=F(YLxh=ZIi)DS1~1 zkkC`Q&xxssZFtfrVxx?XN)^GpWitt4*T6~Qy?ip$RWcaKq7$|K1HaR{VL@0_gWQW% z#g_%_s7|)J4^$Vn33cjS7BcXxL9211!l7U+Iwsb*h)8&Mr9aHsA7Vvr8A5Sme3R}c&tZ%u)W~f}*HjV!}99P|F@9x=>S3Fsax@!3+~9(ET-`s%~)baH04*<}%pb zC&=TPFx+b;T9>_`b7x%3SqaQEf(Rr+r6!4uky@)@Tj^F>trfz15hPu%u8H3x7r;$< zRz*41#oV>Z1 Date: Mon, 5 May 2025 20:16:38 +0200 Subject: [PATCH 8/8] import code fix --- NEWS.md | 8 +++++--- R/sysdata.rda | Bin 2451 -> 2071 bytes SESSION.md | 38 ------------------------------------ inst/apps/FreesearchR/app.R | 8 +++++--- 4 files changed, 10 insertions(+), 44 deletions(-) diff --git a/NEWS.md b/NEWS.md index 3e9e16cf..d8a2c68e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,10 +1,12 @@ # FreesearchR 25.5.1 -- *BUG*: correct export of single variable plot. +- *FIX*: correct export of single variable plot. -- Include app version in report for reference. +- *NEW*: Include app version in report for reference. -- Show progress on connecting to a REDCap database. +- *NEW*: Show progress on connecting to a REDCap database. + +- *FIX*: Data import code export. # FreesearchR 25.4.5 diff --git a/R/sysdata.rda b/R/sysdata.rda index d6c45e54b20f2df60249d16ff25c430a722c378b..9d97392cb8bf29437d1432cef550f4e440288987 100644 GIT binary patch literal 2071 zcmV+y203M;B0MGyjs2ZLT3RKheKr%FF$)IQe!T=1InrVc|gan#O5j2lVdY+R^fshBN z00003)BpemltV^=p`ZXV0000002qJ(M3mH%#U5&!05lCfCWF+-0079-)Bpfv!7gtm znMV8z%#^mZ2mz%K6gR%ME&xL7h+**j^Iw|?;tX56o7<*QJ#b8_FlbRj#r_x1wI%{Wd!?Jhil-Pd=(Jlx-*_GJUeKyho9f9h-_ z9~{*t+Ydi+a|!+ORXS1yr^AaPG9U(PrM0=W|Fl%#Gu;s}%yLjDp zc-k*PzPveO4O}vZj_xxhbgfOLA5nw~Qk19?f}wuZ;$AQZl$4+=m<14s3X%*72?&U& zNT5_u1b0u*`*l1z@Te;G#T{-bzp+)>+0p)tQj`AP*e-=$4cXaBE}I#ixgN2 zt0IEIi2+tB$gxxhm$|=9e1eZ;F_Gh2UG_s=G%yq!Wo2HPO`W#eWV#x-Ag~nKhKZ1b zz6oW4cL;bY(;WgC48TMnQ5vOoN(|sB8--xtkXcD0mJy0f)R}cvM^02)1SUOlHiX=> zqBF2!y;7~PnHNw@nhlq!t>)vroC%^7S^lvC;Wv$mS-Gi2?=(d(8+;7ep$8&wd{P;JBJoNrekEvkZ$T!==R0olu70 zWQ>FXfdhg_vQ6xP-)tPH8Z%DbYHkZEZF3Ew2{5w+p+;9N6^*oMiCyI6WLXn~lK{3f zmLMo)%=%KHh@2rA*rbJI5r~43=4c!cD9b6{q~gHn>-F|5r5o#JI5itmtgyO=ED^O8 z4LkL$Ux90hlyUkIO%O*!6bmJTN|J`CDFUe}1gdCIFz2<9Byv&}oNer;hUGO=&hFC~ zsH8}s$ZC~^U0x~AY>F@0YrqOAy& zLO>IL3pGPz+@?i0HE7xqU`VK77-ba8dY>`Xbhlihm2FEA9>an?{!3g`561WyYj z<=if0_nq)F9U*vH$VGnsZup4mrg`9U4sIY&geVh&S0}~DZP^M3e3H{agN9Gx zjE)9CsHD!pE|w#lcetNpOnIM_Nx3qk1i=#7jZ2L!bxH|l8*xhbQrDz9vaTWrYieo8 zZ{tn!IBSFBG0u9@XVaC7Wm623rH`A=V|6YIkkzqfbpXT((LACoV}L+JvtDR*)?tJT z>oDN3DJ BzjOcq literal 2451 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 diff --git a/SESSION.md b/SESSION.md index 1feeb6d1..eb1735f3 100644 --- a/SESSION.md +++ b/SESSION.md @@ -24,10 +24,8 @@ |package |loadedversion |date |source | |:-------------|:-------------|:----------|:--------------| |apexcharter |0.4.4 |2024-09-06 |CRAN (R 4.4.1) | -|askpass |1.2.1 |2024-10-04 |CRAN (R 4.4.1) | |assertthat |0.2.1 |2019-03-21 |CRAN (R 4.4.1) | |backports |1.5.0 |2024-05-23 |CRAN (R 4.4.1) | -|base64enc |0.1-3 |2015-07-28 |CRAN (R 4.4.1) | |bayestestR |0.15.3 |2025-04-28 |CRAN (R 4.4.1) | |bit |4.6.0 |2025-03-06 |CRAN (R 4.4.1) | |bit64 |4.6.0-1 |2025-01-16 |CRAN (R 4.4.1) | @@ -37,21 +35,14 @@ |bsicons |0.1.2 |2023-11-04 |CRAN (R 4.4.0) | |bslib |0.9.0 |2025-01-30 |CRAN (R 4.4.1) | |cachem |1.1.0 |2024-05-16 |CRAN (R 4.4.1) | -|cards |0.6.0 |2025-04-11 |CRAN (R 4.4.1) | -|cardx |0.2.4 |2025-04-12 |CRAN (R 4.4.1) | |cellranger |1.1.0 |2016-07-27 |CRAN (R 4.4.0) | -|cffr |1.2.0 |2025-01-25 |CRAN (R 4.4.1) | -|checkmate |2.3.2 |2024-07-29 |CRAN (R 4.4.0) | |class |7.3-23 |2025-01-01 |CRAN (R 4.4.1) | |classInt |0.4-11 |2025-01-08 |CRAN (R 4.4.1) | |cli |3.6.5 |2025-04-23 |CRAN (R 4.4.1) | -|cluster |2.1.8.1 |2025-03-12 |CRAN (R 4.4.1) | -|colorspace |2.1-1 |2024-07-26 |CRAN (R 4.4.1) | |commonmark |1.9.5 |2025-03-17 |CRAN (R 4.4.1) | |correlation |0.8.7 |2025-03-03 |CRAN (R 4.4.1) | |crayon |1.5.3 |2024-06-20 |CRAN (R 4.4.1) | |crosstalk |1.2.1 |2023-11-23 |CRAN (R 4.4.0) | -|curl |6.2.2 |2025-03-24 |CRAN (R 4.4.1) | |data.table |1.17.0 |2025-02-22 |CRAN (R 4.4.1) | |datamods |1.5.3 |2024-10-02 |CRAN (R 4.4.1) | |datawizard |1.0.2 |2025-03-24 |CRAN (R 4.4.1) | @@ -65,39 +56,28 @@ |easystats |0.7.4 |2025-02-06 |CRAN (R 4.4.1) | |effectsize |1.0.0 |2024-12-10 |CRAN (R 4.4.1) | |ellipsis |0.3.2 |2021-04-29 |CRAN (R 4.4.1) | -|eulerr |7.0.2 |2024-03-28 |CRAN (R 4.4.0) | |evaluate |1.0.3 |2025-01-10 |CRAN (R 4.4.1) | |farver |2.1.2 |2024-05-13 |CRAN (R 4.4.1) | |fastmap |1.2.0 |2024-05-15 |CRAN (R 4.4.1) | |fontawesome |0.5.3 |2024-11-16 |CRAN (R 4.4.1) | |forcats |1.0.0 |2023-01-29 |CRAN (R 4.4.0) | -|foreign |0.8-90 |2025-03-31 |CRAN (R 4.4.1) | -|Formula |1.2-5 |2023-02-24 |CRAN (R 4.4.1) | |fs |1.6.6 |2025-04-12 |CRAN (R 4.4.1) | |generics |0.1.3 |2022-07-05 |CRAN (R 4.4.1) | -|GenSA |1.1.14.1 |2024-09-21 |CRAN (R 4.4.1) | -|ggcorrplot |0.1.4.1 |2023-09-05 |CRAN (R 4.4.0) | -|ggforce |0.4.2 |2024-02-19 |CRAN (R 4.4.0) | |ggplot2 |3.5.2 |2025-04-09 |CRAN (R 4.4.1) | |glue |1.8.0 |2024-09-30 |CRAN (R 4.4.1) | -|gridExtra |2.3 |2017-09-09 |CRAN (R 4.4.1) | |gt |1.0.0 |2025-04-05 |CRAN (R 4.4.1) | |gtable |0.3.6 |2024-10-25 |CRAN (R 4.4.1) | |gtsummary |2.2.0 |2025-04-14 |CRAN (R 4.4.1) | |haven |2.5.4 |2023-11-30 |CRAN (R 4.4.0) | |here |1.0.1 |2020-12-13 |CRAN (R 4.4.1) | -|Hmisc |5.2-3 |2025-03-16 |CRAN (R 4.4.1) | |hms |1.1.3 |2023-03-21 |CRAN (R 4.4.0) | -|htmlTable |2.4.3 |2024-07-21 |CRAN (R 4.4.0) | |htmltools |0.5.8.1 |2024-04-04 |CRAN (R 4.4.1) | |htmlwidgets |1.6.4 |2023-12-06 |CRAN (R 4.4.0) | |httpuv |1.6.16 |2025-04-16 |CRAN (R 4.4.1) | -|httr |1.4.7 |2023-08-15 |CRAN (R 4.4.0) | |IDEAFilter |0.2.0 |2024-04-15 |CRAN (R 4.4.0) | |insight |1.2.0 |2025-04-22 |CRAN (R 4.4.1) | |jquerylib |0.1.4 |2021-04-26 |CRAN (R 4.4.0) | |jsonlite |2.0.0 |2025-03-27 |CRAN (R 4.4.1) | -|jsonvalidate |1.5.0 |2025-02-07 |CRAN (R 4.4.1) | |KernSmooth |2.23-26 |2025-01-01 |CRAN (R 4.4.1) | |keyring |1.3.2 |2023-12-11 |CRAN (R 4.4.0) | |knitr |1.50 |2025-03-16 |CRAN (R 4.4.1) | @@ -105,10 +85,8 @@ |later |1.4.2 |2025-04-08 |CRAN (R 4.4.1) | |lattice |0.22-7 |2025-04-02 |CRAN (R 4.4.1) | |lifecycle |1.0.4 |2023-11-07 |CRAN (R 4.4.1) | -|litedown |0.7 |2025-04-08 |CRAN (R 4.4.1) | |lme4 |1.1-37 |2025-03-26 |CRAN (R 4.4.1) | |magrittr |2.0.3 |2022-03-30 |CRAN (R 4.4.1) | -|markdown |2.0 |2025-03-23 |CRAN (R 4.4.1) | |MASS |7.3-65 |2025-02-28 |CRAN (R 4.4.1) | |Matrix |1.7-3 |2025-03-11 |CRAN (R 4.4.1) | |memoise |2.0.1 |2021-11-26 |CRAN (R 4.4.0) | @@ -118,8 +96,6 @@ |modelbased |0.10.0 |2025-03-10 |CRAN (R 4.4.1) | |nlme |3.1-168 |2025-03-31 |CRAN (R 4.4.1) | |nloptr |2.2.1 |2025-03-17 |CRAN (R 4.4.1) | -|nnet |7.3-20 |2025-01-01 |CRAN (R 4.4.1) | -|openssl |2.3.2 |2025-02-03 |CRAN (R 4.4.1) | |openxlsx2 |1.15 |2025-04-25 |CRAN (R 4.4.1) | |parameters |0.24.2 |2025-03-04 |CRAN (R 4.4.1) | |patchwork |1.3.0 |2024-09-16 |CRAN (R 4.4.1) | @@ -129,9 +105,6 @@ |pkgbuild |1.4.7 |2025-03-24 |CRAN (R 4.4.1) | |pkgconfig |2.0.3 |2019-09-22 |CRAN (R 4.4.1) | |pkgload |1.4.0 |2024-06-28 |CRAN (R 4.4.0) | -|plyr |1.8.9 |2023-10-02 |CRAN (R 4.4.1) | -|polyclip |1.10-7 |2024-07-23 |CRAN (R 4.4.1) | -|polylabelr |0.3.0 |2024-11-19 |CRAN (R 4.4.1) | |processx |3.8.6 |2025-02-21 |CRAN (R 4.4.1) | |profvis |0.4.0 |2024-09-20 |CRAN (R 4.4.1) | |promises |1.3.2 |2024-11-28 |CRAN (R 4.4.1) | @@ -139,10 +112,6 @@ |ps |1.9.1 |2025-04-12 |CRAN (R 4.4.1) | |purrr |1.0.4 |2025-02-05 |CRAN (R 4.4.1) | |quarto |1.4.4 |2024-07-20 |CRAN (R 4.4.0) | -|R.cache |0.16.0 |2022-07-21 |CRAN (R 4.4.0) | -|R.methodsS3 |1.8.2 |2022-06-13 |CRAN (R 4.4.1) | -|R.oo |1.27.0 |2024-11-01 |CRAN (R 4.4.1) | -|R.utils |2.13.0 |2025-02-24 |CRAN (R 4.4.1) | |R6 |2.6.1 |2025-02-15 |CRAN (R 4.4.1) | |ragg |1.4.0 |2025-04-10 |CRAN (R 4.4.1) | |rankinPlot |1.1.0 |2023-01-30 |CRAN (R 4.4.0) | @@ -161,12 +130,9 @@ |rempsyc |0.1.9 |2025-02-01 |CRAN (R 4.4.1) | |renv |1.1.4 |2025-03-20 |CRAN (R 4.4.1) | |report |0.6.1 |2025-02-07 |CRAN (R 4.4.1) | -|reshape2 |1.4.4 |2020-04-09 |CRAN (R 4.4.0) | |rio |1.2.3 |2024-09-25 |CRAN (R 4.4.1) | |rlang |1.1.6 |2025-04-11 |CRAN (R 4.4.1) | |rmarkdown |2.29 |2024-11-04 |CRAN (R 4.4.1) | -|roxygen2 |7.3.2 |2024-06-28 |CRAN (R 4.4.0) | -|rpart |4.1.24 |2025-01-07 |CRAN (R 4.4.1) | |rprojroot |2.0.4 |2023-11-05 |CRAN (R 4.4.1) | |rsconnect |1.3.4 |2025-01-22 |CRAN (R 4.4.1) | |rstudioapi |0.17.1 |2024-10-22 |CRAN (R 4.4.1) | @@ -179,19 +145,15 @@ |shinyTime |1.0.3 |2022-08-19 |CRAN (R 4.4.0) | |shinyWidgets |0.9.0 |2025-02-21 |CRAN (R 4.4.1) | |stringi |1.8.7 |2025-03-27 |CRAN (R 4.4.1) | -|stringr |1.5.1 |2023-11-14 |CRAN (R 4.4.0) | -|styler |1.10.3 |2024-04-07 |CRAN (R 4.4.0) | |systemfonts |1.2.2 |2025-04-04 |CRAN (R 4.4.1) | |textshaping |1.0.0 |2025-01-20 |CRAN (R 4.4.1) | |tibble |3.2.1 |2023-03-20 |CRAN (R 4.4.0) | |tidyr |1.3.1 |2024-01-24 |CRAN (R 4.4.1) | |tidyselect |1.2.1 |2024-03-11 |CRAN (R 4.4.0) | |toastui |0.4.0 |2025-04-03 |CRAN (R 4.4.1) | -|tweenr |2.0.3 |2024-02-26 |CRAN (R 4.4.0) | |tzdb |0.5.0 |2025-03-15 |CRAN (R 4.4.1) | |urlchecker |1.0.1 |2021-11-30 |CRAN (R 4.4.1) | |usethis |3.1.0 |2024-11-26 |CRAN (R 4.4.1) | -|V8 |6.0.3 |2025-03-26 |CRAN (R 4.4.1) | |vctrs |0.6.5 |2023-12-01 |CRAN (R 4.4.0) | |viridisLite |0.4.2 |2023-05-02 |CRAN (R 4.4.1) | |vroom |1.6.5 |2023-12-05 |CRAN (R 4.4.0) | diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index f07e0dc8..9eb25899 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -9438,8 +9438,8 @@ ui_elements <- list( width = 9, shiny::tags$p( shiny::markdown("Below, are several options for simple data manipulation like update variables by renaming, creating new labels (for nicer tables in the report) and changing variable classes (numeric, factor/categorical etc.)."), - shiny::markdown("There are also more advanced options to modify factor/categorical variables as well as create new factor from a continous variable or new variables with *R* code. At the bottom you can restore the original data."), - shiny::markdown("Please note that data modifications are applied before any data or variable filtering is applied.") + shiny::markdown("There are more advanced options to modify factor/categorical variables as well as create new factor from a continous variable or new variables with *R* code. At the bottom you can restore the original data."), + shiny::markdown("Please note that data modifications are applied before any filtering.") ) ) ), @@ -10293,10 +10293,12 @@ server <- function(input, output, session) { # }) output$code_import <- shiny::renderUI({ + shiny::req(rv$code$import) prismCodeBlock(paste0("#Data import\n", rv$code$import)) }) - output$code_import <- shiny::renderUI({ + output$code_format <- shiny::renderUI({ + shiny::req(rv$code$format) prismCodeBlock(paste0("#Data import formatting\n", rv$code$format)) })