Compare commits

..

No commits in common. "fcc9443ceada46383a1852546abf00d80f62084c" and "16e3e5eb28402decdb64e3b9c526583678be2da7" have entirely different histories.

22 changed files with 149 additions and 180 deletions

View file

@ -8,7 +8,7 @@ message: 'To cite package "FreesearchR" in publications use:'
type: software
license: AGPL-3.0-or-later
title: 'FreesearchR: Easy data analysis for clinicians'
version: 26.3.1
version: 26.2.2
doi: 10.5281/zenodo.14527429
identifiers:
- type: url

View file

@ -1,6 +1,6 @@
Package: FreesearchR
Title: Easy data analysis for clinicians
Version: 26.3.1
Version: 26.2.2
Authors@R: c(
person("Andreas Gammelgaard", "Damsbo",email="agdamsbo@clin.au.dk", role = c("aut", "cre"),
comment = c(ORCID = "0000-0002-7559-1154")),

View file

@ -1,11 +1,3 @@
# FreesearchR 26.3.1
*FIX* Include font files for static loading without dependency on Google.
*NEW* Updated text strings to better reflect environment data availability.
New strings translated.
# FreesearchR 26.2.2
*FIX* Minor addition to the previous update with correct activation of the missingness evaluation button.

View file

@ -1 +1 @@
app_version <- function()'26.3.1'
app_version <- function()'26.2.2'

View file

@ -1 +1 @@
hosted_version <- function()'v26.3.1-260228'
hosted_version <- function()'v26.2.2-260223'

Binary file not shown.

View file

@ -9,21 +9,9 @@ custom_theme <- function(...,
primary = FreesearchR_colors("primary"),
secondary = FreesearchR_colors("secondary"),
bootswatch = "united",
# base_font = bslib::font_google("Montserrat"),
base_font = bslib::font_face(
family = "Montserrat",
src = "url('/fonts/Montserrat-Regular.ttf') format('truetype')"
),
# heading_font = bslib::font_google("Public Sans", wght = "700"),
heading_font = bslib::font_face(
family = "PublicSans",
src = "url('/fonts/PublicSans-Bold.ttf') format('truetype')"
),
# code_font = bslib::font_google("Open Sans"),
code_font = bslib::font_face(
family = "OpenSans",
src = "url('/fonts/OpenSans-Regular.ttf') format('truetype')"
),
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans", wght = "700"),
code_font = bslib::font_google("Open Sans"),
success = FreesearchR_colors("success"),
info = FreesearchR_colors("info"),
warning = FreesearchR_colors("warning"),

View file

@ -68,12 +68,11 @@ ui_elements <- function(selection) {
),
# shiny::tags$script('document.querySelector("#source div").style.width = "100%"'),
## Update this to change depending on run locally or hosted
shiny::uiOutput(outputId = "data_sample_text"),
# shiny::helpText(
# i18n$t(
# "Upload a file, get data directly from REDCap or use local or sample data."
# )
# ),
shiny::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use local or sample data."
)
),
shiny::br(),
shiny::br(),
shiny::conditionalPanel(

View file

@ -11,11 +11,11 @@
|collate |en_US.UTF-8 |
|ctype |en_US.UTF-8 |
|tz |Europe/Copenhagen |
|date |2026-02-28 |
|date |2026-02-23 |
|rstudio |2026.01.1+403 Apple Blossom (desktop) |
|pandoc |3.6.4 @ /opt/homebrew/bin/ (via rmarkdown) |
|quarto |1.7.30 @ /usr/local/bin/quarto |
|FreesearchR |26.3.1.260228 |
|FreesearchR |26.2.2.260223 |
--------------------------------------------------------------------------------
@ -26,6 +26,8 @@
|apexcharter |0.4.5 |2026-01-07 |CRAN (R 4.5.2) |
|askpass |1.2.1 |2024-10-04 |CRAN (R 4.5.0) |
|assertthat |0.2.1 |2019-03-21 |CRAN (R 4.5.0) |
|attachment |0.4.5 |2025-03-14 |CRAN (R 4.5.0) |
|attempt |0.3.1 |2020-05-03 |CRAN (R 4.5.0) |
|backports |1.5.0 |2024-05-23 |CRAN (R 4.5.0) |
|base64enc |0.1-6 |2026-02-02 |CRAN (R 4.5.2) |
|bayestestR |0.17.0 |2025-08-29 |CRAN (R 4.5.0) |
@ -44,6 +46,7 @@
|cardx |0.3.2 |2026-02-05 |CRAN (R 4.5.2) |
|caTools |1.18.3 |2024-09-04 |CRAN (R 4.5.0) |
|cellranger |1.1.0 |2016-07-27 |CRAN (R 4.5.0) |
|cffr |1.2.1 |2026-01-12 |CRAN (R 4.5.2) |
|checkmate |2.3.4 |2026-02-03 |CRAN (R 4.5.2) |
|class |7.3-23 |2025-01-01 |CRAN (R 4.5.2) |
|classInt |0.4-11 |2025-01-08 |CRAN (R 4.5.0) |
@ -53,7 +56,6 @@
|colorspace |2.1-2 |2025-09-22 |CRAN (R 4.5.0) |
|commonmark |2.0.0 |2025-07-07 |CRAN (R 4.5.0) |
|crayon |1.5.3 |2024-06-20 |CRAN (R 4.5.0) |
|crul |1.6.0 |NA |NA |
|curl |7.0.0 |2025-08-19 |CRAN (R 4.5.0) |
|data.table |1.18.2.1 |2026-01-27 |CRAN (R 4.5.2) |
|datamods |1.5.3 |2024-10-02 |CRAN (R 4.5.0) |
@ -63,6 +65,7 @@
|devtools |2.4.6 |2025-10-03 |CRAN (R 4.5.0) |
|DHARMa |0.4.7 |2024-10-18 |CRAN (R 4.5.0) |
|digest |0.6.39 |2025-11-19 |CRAN (R 4.5.2) |
|dockerfiler |0.2.5 |2025-05-07 |CRAN (R 4.5.0) |
|doParallel |1.0.17 |2022-02-07 |CRAN (R 4.5.0) |
|dplyr |1.2.0 |2026-02-03 |CRAN (R 4.5.2) |
|DT |0.34.0 |2025-09-02 |CRAN (R 4.5.0) |
@ -85,11 +88,10 @@
|foreach |1.5.2 |2022-02-02 |CRAN (R 4.5.0) |
|foreign |0.8-90 |2025-03-31 |CRAN (R 4.5.2) |
|Formula |1.2-5 |2023-02-24 |CRAN (R 4.5.0) |
|FreesearchR |26.3.1 |NA |NA |
|FreesearchR |26.2.2 |NA |NA |
|fs |1.6.6 |2025-04-12 |CRAN (R 4.5.0) |
|gdtools |0.5.0 |2026-02-09 |CRAN (R 4.5.2) |
|generics |0.1.4 |2025-05-09 |CRAN (R 4.5.0) |
|gfonts |0.2.0 |NA |NA |
|ggalluvial |0.12.5 |2023-02-22 |CRAN (R 4.5.0) |
|ggcorrplot |0.1.4.1 |2023-09-05 |CRAN (R 4.5.0) |
|ggforce |0.5.0 |2025-06-18 |CRAN (R 4.5.0) |
@ -108,23 +110,24 @@
|htmlTable |2.4.3 |2024-07-21 |CRAN (R 4.5.0) |
|htmltools |0.5.9 |2025-12-04 |CRAN (R 4.5.2) |
|htmlwidgets |1.6.4 |2023-12-06 |CRAN (R 4.5.0) |
|httpcode |0.3.0 |NA |NA |
|httpuv |1.6.16 |2025-04-16 |CRAN (R 4.5.0) |
|IDEAFilter |0.2.1 |2025-07-29 |CRAN (R 4.5.0) |
|insight |1.4.6 |2026-02-04 |CRAN (R 4.5.2) |
|iterators |1.0.14 |2022-02-05 |CRAN (R 4.5.0) |
|jquerylib |0.1.4 |2021-04-26 |CRAN (R 4.5.0) |
|jsonlite |2.0.0 |2025-03-27 |CRAN (R 4.5.0) |
|jsonvalidate |1.5.0 |2025-02-07 |CRAN (R 4.5.0) |
|KernSmooth |2.23-26 |2025-01-01 |CRAN (R 4.5.2) |
|keyring |1.4.1 |2025-06-15 |CRAN (R 4.5.0) |
|knitr |1.51 |2025-12-20 |CRAN (R 4.5.2) |
|labeling |0.4.3 |2023-08-29 |CRAN (R 4.5.0) |
|later |1.4.6 |2026-02-13 |CRAN (R 4.5.2) |
|lattice |0.22-7 |2025-04-02 |CRAN (R 4.5.2) |
|lifecycle |1.0.5 |2026-01-08 |CRAN (R 4.5.2) |
|litedown |0.9 |2025-12-18 |CRAN (R 4.5.2) |
|lme4 |1.1-38 |2025-12-02 |CRAN (R 4.5.2) |
|lubridate |1.9.5 |2026-02-04 |CRAN (R 4.5.2) |
|magrittr |2.0.4 |2025-09-12 |CRAN (R 4.5.0) |
|markdown |2.0 |2025-03-23 |CRAN (R 4.5.0) |
|MASS |7.3-65 |2025-02-28 |CRAN (R 4.5.0) |
|Matrix |1.7-4 |2025-08-28 |CRAN (R 4.5.2) |
|memoise |2.0.1 |2021-11-26 |CRAN (R 4.5.0) |
@ -164,6 +167,7 @@
|R6 |2.6.1 |2025-02-15 |CRAN (R 4.5.0) |
|ragg |1.5.0 |2025-09-02 |CRAN (R 4.5.0) |
|rankinPlot |1.1.0 |2023-01-30 |CRAN (R 4.5.0) |
|rappdirs |0.3.4 |2026-01-17 |CRAN (R 4.5.2) |
|rbibutils |2.4.1 |2026-01-21 |CRAN (R 4.5.2) |
|RColorBrewer |1.1-3 |2022-04-03 |CRAN (R 4.5.0) |
|Rcpp |1.1.1 |2026-01-10 |CRAN (R 4.5.2) |
@ -196,6 +200,7 @@
|sessioninfo |1.2.3 |2025-02-05 |CRAN (R 4.5.0) |
|shiny |1.13.0 |2026-02-20 |CRAN (R 4.5.2) |
|shiny.i18n |0.3.0 |2023-01-16 |CRAN (R 4.5.0) |
|shiny2docker |0.0.3 |2025-06-28 |CRAN (R 4.5.0) |
|shinybusy |0.3.3 |2024-03-09 |CRAN (R 4.5.0) |
|shinyjs |2.1.1 |2026-01-15 |CRAN (R 4.5.2) |
|shinyTime |1.0.3 |2022-08-19 |CRAN (R 4.5.0) |
@ -213,13 +218,12 @@
|tidyselect |1.2.1 |2024-03-11 |CRAN (R 4.5.0) |
|timechange |0.4.0 |2026-01-29 |CRAN (R 4.5.2) |
|toastui |0.4.0 |2025-04-03 |CRAN (R 4.5.0) |
|triebeard |0.4.1 |NA |NA |
|tweenr |2.0.3 |2024-02-26 |CRAN (R 4.5.0) |
|twosamples |2.0.1 |2023-06-23 |CRAN (R 4.5.0) |
|tzdb |0.5.0 |2025-03-15 |CRAN (R 4.5.0) |
|urltools |1.7.3.1 |NA |NA |
|usethis |3.2.1 |2025-09-06 |CRAN (R 4.5.0) |
|uuid |1.2-2 |2026-01-23 |CRAN (R 4.5.2) |
|V8 |8.0.1 |2025-10-10 |CRAN (R 4.5.0) |
|vctrs |0.7.1 |2026-01-23 |CRAN (R 4.5.2) |
|viridis |0.6.5 |2024-01-29 |CRAN (R 4.5.0) |
|viridisLite |0.4.3 |2026-02-04 |CRAN (R 4.5.2) |
@ -230,4 +234,5 @@
|xml2 |1.5.2 |2026-01-17 |CRAN (R 4.5.2) |
|xtable |1.8-4 |2019-04-21 |CRAN (R 4.5.0) |
|yaml |2.3.12 |2025-12-10 |CRAN (R 4.5.2) |
|yesno |0.1.3 |2024-07-26 |CRAN (R 4.5.0) |
|zip |2.3.3 |2025-05-13 |CRAN (R 4.5.0) |

View file

@ -1,7 +1,7 @@
########
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpDLoQCo/file14ced11821c07.R
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//Rtmpp0JgLn/file73e17b926733.R
########
i18n_path <- here::here("translations")
@ -72,7 +72,7 @@ if (!"global_freesearchR" %in% ls(name = globalenv())) {
#### Current file: /Users/au301842/FreesearchR/R//app_version.R
########
app_version <- function()'26.3.1'
app_version <- function()'26.2.2'
########
@ -4524,7 +4524,7 @@ data_types <- function() {
#### Current file: /Users/au301842/FreesearchR/R//hosted_version.R
########
hosted_version <- function()'v26.3.1-260228'
hosted_version <- function()'v26.2.2-260223'
########
@ -10469,21 +10469,9 @@ custom_theme <- function(...,
primary = FreesearchR_colors("primary"),
secondary = FreesearchR_colors("secondary"),
bootswatch = "united",
# base_font = bslib::font_google("Montserrat"),
base_font = bslib::font_face(
family = "Montserrat",
src = "url('/fonts/Montserrat-Regular.ttf') format('truetype')"
),
# heading_font = bslib::font_google("Public Sans", wght = "700"),
heading_font = bslib::font_face(
family = "PublicSans",
src = "url('/fonts/PublicSans-Bold.ttf') format('truetype')"
),
# code_font = bslib::font_google("Open Sans"),
code_font = bslib::font_face(
family = "OpenSans",
src = "url('/fonts/OpenSans-Regular.ttf') format('truetype')"
),
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans", wght = "700"),
code_font = bslib::font_google("Open Sans"),
success = FreesearchR_colors("success"),
info = FreesearchR_colors("info"),
warning = FreesearchR_colors("warning"),
@ -10676,12 +10664,11 @@ ui_elements <- function(selection) {
),
# shiny::tags$script('document.querySelector("#source div").style.width = "100%"'),
## Update this to change depending on run locally or hosted
shiny::uiOutput(outputId = "data_sample_text"),
# shiny::helpText(
# i18n$t(
# "Upload a file, get data directly from REDCap or use local or sample data."
# )
# ),
shiny::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use local or sample data."
)
),
shiny::br(),
shiny::br(),
shiny::conditionalPanel(
@ -13509,6 +13496,16 @@ ui <- bslib::page_fixed(
#### Current file: /Users/au301842/FreesearchR/app/server.R
########
data("mtcars")
data("iris")
# trial <- gtsummary::trial
# starwars <- dplyr::starwars
#
# mtcars_na <- rbind(mtcars,NA,NA)
# thematic::thematic_shiny()
load_data <- function() {
Sys.sleep(1)
shinyjs::hide("loading_page")
@ -13547,6 +13544,7 @@ server <- function(input, output, session) {
# session$setCurrentTheme(bs_theme_update(theme = custom_theme(version = 5, bg = "#000",fg="#fff")))
# })
##############################################################################
#########
######### Setting reactive values
@ -13639,33 +13637,16 @@ server <- function(input, output, session) {
# ),
# selected = "file"
# )
if (isTRUE(global_freesearchR$include_globalenv)) {
env_label <- i18n$t("Local or sample data")
output$data_sample_text <- shiny::renderText(shiny::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use local or sample data."
)
))
} else {
env_label <- i18n$t("Sample data")
output$data_sample_text <- shiny::renderUI(shiny::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use sample data."
)
))
}
shiny::updateSelectInput(inputId = "source", choices = setNames(c("file", "redcap", "env"), c(
i18n$t("File upload"),
i18n$t("REDCap server export"),
env_label
# i18n$t("Local or sample data")
i18n$t("Local or sample data")
)))
# output$intro_text <- renderUI(includeHTML(i18n$t("www/intro.html")))
})
shiny::observeEvent(input$language_select, {
bslib::accordion_panel_update(id = "acc_chars",
title = i18n$t("Settings"),
@ -13678,10 +13659,12 @@ server <- function(input, output, session) {
target = "acc_pan_mis")
})
output$redcap_warning <- shiny::renderUI({
rv_alerts$redcap_alert
})
##############################################################################
#########
######### Data import section
@ -13815,6 +13798,7 @@ server <- function(input, output, session) {
rv$data_original <- temp_data |>
default_parsing()
}
},
ignoreNULL = FALSE
)
@ -13877,14 +13861,14 @@ server <- function(input, output, session) {
shiny::observeEvent(list(rv$data_original, rv$data), {
if (is.null(rv$data_original) |
NROW(rv$data_original) == 0 |
is.null(rv$data) |
!any(is_splittable(rv$data))) {
is.null(rv$data) | !any(is_splittable(rv$data))) {
shiny::updateActionButton(inputId = "modal_string", disabled = TRUE)
} else if (!is.null(rv$data) && any(is_splittable(rv$data))) {
shiny::updateActionButton(inputId = "modal_string", disabled = FALSE)
}
})
##############################################################################
#########
######### Data modification section
@ -13909,6 +13893,7 @@ server <- function(input, output, session) {
}
}, ignoreNULL = TRUE)
shiny::observeEvent(input$data_reset, {
shinyWidgets::ask_confirmation(
cancelOnDismiss = TRUE,
@ -14231,6 +14216,7 @@ server <- function(input, output, session) {
rv$list$table1 <- NULL
})
##############################################################################
#########
######### Code export
@ -14294,18 +14280,19 @@ server <- function(input, output, session) {
))
})
## Just a note to self
## This is a very rewarding couple of lines marking new insights to dynamically rendering code
shiny::observe({
shiny::req(rv$regression)
rv$regression()$regression$models |>
purrr::imap(\(.x, .i) {
rv$regression()$regression$models |> purrr::imap(\(.x, .i) {
output[[paste0("code_", tolower(.i))]] <- shiny::renderUI({
prismCodeBlock(paste0(paste("#", .i, "regression model\n"), .x$code_table))
})
})
})
##############################################################################
#########
######### Data analyses Inputs
@ -14318,8 +14305,7 @@ server <- function(input, output, session) {
selected = "none",
label = i18n$t("Select variable to stratify baseline"),
data = shiny::reactive(rv$data_filtered)(),
col_subset = c("none", names(rv$data_filtered)[unlist(lapply(rv$data_filtered, data_type)) %in%
c("dichotomous", "categorical", "ordinal")])
col_subset = c("none", names(rv$data_filtered)[unlist(lapply(rv$data_filtered, data_type)) %in% c("dichotomous", "categorical", "ordinal")])
)
})
@ -14338,6 +14324,7 @@ server <- function(input, output, session) {
# )
# })
output$detail_level <- shiny::renderUI({
shiny::radioButtons(
inputId = "detail_level",
@ -14349,12 +14336,14 @@ server <- function(input, output, session) {
)
})
##############################################################################
#########
######### Descriptive evaluations
#########
##############################################################################
output$data_info_nochar <- shiny::renderUI({
shiny::req(rv$list$data)
data_description(rv$list$data,
@ -14373,12 +14362,14 @@ server <- function(input, output, session) {
#
# })
shiny::observeEvent(list(input$act_eval), {
shiny::req(input$strat_var)
# shiny::req(input$baseline_theme)
shiny::req(input$detail_level)
shiny::req(rv$list$data)
parameters <- list(
by.var = input$strat_var,
add.p = input$add_p == "yes",
@ -14419,6 +14410,7 @@ server <- function(input, output, session) {
# }
# )
rv$code$table1 <- glue::glue("FreesearchR::create_baseline(df,{list2str(parameters)})")
})
@ -14459,9 +14451,12 @@ server <- function(input, output, session) {
## Missingness evaluation
rv$missings <- data_missings_server(id = "missingness",
data = shiny::reactive(rv$data_filtered))
# shiny::observe({
# req(rv$missings())
# browser()
@ -14470,6 +14465,7 @@ server <- function(input, output, session) {
# mcar_validate(data=rv$missings()[["_data"]],outcome = input$missings_var)
# })
##############################################################################
#########
######### Data visuals

View file

@ -314,17 +314,16 @@
"The app contains a selelct number of features and will guide you through key analyses.","Appen indeholder udvalgte funktioner, og guider dig gennem de vigtigste analyser."
"Sort by Levels","Sorter efter niveauer"
"Reorder factor levels","Omarranger niveauer"
"Modify factor levels","Ændr kategoriske niveauer"
"Reorder or rename the levels of factor/categorical variables.","Ændr navn eller rækkefølge på kategorisk variabel."
"Maximum number of observations:","Maximale antal observationer:"
"setting to 0 includes all","angiv 0 for at inkludere alle"
"Select a dataset from your environment or sample dataset from a package.","Vælg et datasæt fra din kørende session eller vælg træningsdata."
"Select a sample dataset from a package.","Vælg et træningsdatasæt."
"Data ready to be imported!","Data er klar til at blive importeret!"
"Data has %s obs. of %s variables.","Data har %s obs. på %s variabler."
"Modify factor levels","Modify factor levels"
"Reorder or rename the levels of factor/categorical variables.","Reorder or rename the levels of factor/categorical variables."
"Maximum number of observations:","Maximum number of observations:"
"setting to 0 includes all","setting to 0 includes all"
"Select a dataset from your environment or sample dataset from a package.","Select a dataset from your environment or sample dataset from a package."
"Select a sample dataset from a package.","Select a sample dataset from a package."
"Data ready to be imported!","Data ready to be imported!"
"Data has %s obs. of %s variables.","Data has %s obs. of %s variables."
"Data successfully imported!","Data successfully imported!"
"Click to see data","Klik for at se data"
"No data present.","Ingen data tilstede."
"You have provided a complete dataset with no missing values.","Data er uden manglende observationer."
"Start by loading data.","Start med at vælge data."
"Sample data","Træningsdata"
"Click to see data","Click to see data"
"No data present.","No data present."
"You have provided a complete dataset with no missing values.","You have provided a complete dataset with no missing values."
"Start by loading data.","Start by loading data."

1 en da
314 The app contains a selelct number of features and will guide you through key analyses. Appen indeholder udvalgte funktioner, og guider dig gennem de vigtigste analyser.
315 Sort by Levels Sorter efter niveauer
316 Reorder factor levels Omarranger niveauer
317 Modify factor levels Ændr kategoriske niveauer Modify factor levels
318 Reorder or rename the levels of factor/categorical variables. Ændr navn eller rækkefølge på kategorisk variabel. Reorder or rename the levels of factor/categorical variables.
319 Maximum number of observations: Maximale antal observationer: Maximum number of observations:
320 setting to 0 includes all angiv 0 for at inkludere alle setting to 0 includes all
321 Select a dataset from your environment or sample dataset from a package. Vælg et datasæt fra din kørende session eller vælg træningsdata. Select a dataset from your environment or sample dataset from a package.
322 Select a sample dataset from a package. Vælg et træningsdatasæt. Select a sample dataset from a package.
323 Data ready to be imported! Data er klar til at blive importeret! Data ready to be imported!
324 Data has %s obs. of %s variables. Data har %s obs. på %s variabler. Data has %s obs. of %s variables.
325 Data successfully imported! Data successfully imported!
326 Click to see data Klik for at se data Click to see data
327 No data present. Ingen data tilstede. No data present.
328 You have provided a complete dataset with no missing values. Data er uden manglende observationer. You have provided a complete dataset with no missing values.
329 Start by loading data. Start med at vælge data. Start by loading data.
Sample data Træningsdata

View file

@ -327,4 +327,3 @@
"No data present.","No data present."
"You have provided a complete dataset with no missing values.","You have provided a complete dataset with no missing values."
"Start by loading data.","Start by loading data."
"Sample data","Sample data"

1 en sw
327 No data present. No data present.
328 You have provided a complete dataset with no missing values. You have provided a complete dataset with no missing values.
329 Start by loading data. Start by loading data.
Sample data Sample data

View file

@ -1,7 +1,7 @@
########
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpDLoQCo/file14ced66223522.R
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//Rtmpp0JgLn/file73e17f71b1a4.R
########
i18n_path <- system.file("translations", package = "FreesearchR")
@ -72,7 +72,7 @@ if (!"global_freesearchR" %in% ls(name = globalenv())) {
#### Current file: /Users/au301842/FreesearchR/R//app_version.R
########
app_version <- function()'26.3.1'
app_version <- function()'26.2.2'
########
@ -4524,7 +4524,7 @@ data_types <- function() {
#### Current file: /Users/au301842/FreesearchR/R//hosted_version.R
########
hosted_version <- function()'v26.3.1-260228'
hosted_version <- function()'v26.2.2-260223'
########
@ -10469,21 +10469,9 @@ custom_theme <- function(...,
primary = FreesearchR_colors("primary"),
secondary = FreesearchR_colors("secondary"),
bootswatch = "united",
# base_font = bslib::font_google("Montserrat"),
base_font = bslib::font_face(
family = "Montserrat",
src = "url('/fonts/Montserrat-Regular.ttf') format('truetype')"
),
# heading_font = bslib::font_google("Public Sans", wght = "700"),
heading_font = bslib::font_face(
family = "PublicSans",
src = "url('/fonts/PublicSans-Bold.ttf') format('truetype')"
),
# code_font = bslib::font_google("Open Sans"),
code_font = bslib::font_face(
family = "OpenSans",
src = "url('/fonts/OpenSans-Regular.ttf') format('truetype')"
),
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans", wght = "700"),
code_font = bslib::font_google("Open Sans"),
success = FreesearchR_colors("success"),
info = FreesearchR_colors("info"),
warning = FreesearchR_colors("warning"),
@ -10676,12 +10664,11 @@ ui_elements <- function(selection) {
),
# shiny::tags$script('document.querySelector("#source div").style.width = "100%"'),
## Update this to change depending on run locally or hosted
shiny::uiOutput(outputId = "data_sample_text"),
# shiny::helpText(
# i18n$t(
# "Upload a file, get data directly from REDCap or use local or sample data."
# )
# ),
shiny::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use local or sample data."
)
),
shiny::br(),
shiny::br(),
shiny::conditionalPanel(
@ -13509,6 +13496,16 @@ ui <- bslib::page_fixed(
#### Current file: /Users/au301842/FreesearchR/app/server.R
########
data("mtcars")
data("iris")
# trial <- gtsummary::trial
# starwars <- dplyr::starwars
#
# mtcars_na <- rbind(mtcars,NA,NA)
# thematic::thematic_shiny()
load_data <- function() {
Sys.sleep(1)
shinyjs::hide("loading_page")
@ -13547,6 +13544,7 @@ server <- function(input, output, session) {
# session$setCurrentTheme(bs_theme_update(theme = custom_theme(version = 5, bg = "#000",fg="#fff")))
# })
##############################################################################
#########
######### Setting reactive values
@ -13639,33 +13637,16 @@ server <- function(input, output, session) {
# ),
# selected = "file"
# )
if (isTRUE(global_freesearchR$include_globalenv)) {
env_label <- i18n$t("Local or sample data")
output$data_sample_text <- shiny::renderText(shiny::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use local or sample data."
)
))
} else {
env_label <- i18n$t("Sample data")
output$data_sample_text <- shiny::renderUI(shiny::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use sample data."
)
))
}
shiny::updateSelectInput(inputId = "source", choices = setNames(c("file", "redcap", "env"), c(
i18n$t("File upload"),
i18n$t("REDCap server export"),
env_label
# i18n$t("Local or sample data")
i18n$t("Local or sample data")
)))
# output$intro_text <- renderUI(includeHTML(i18n$t("www/intro.html")))
})
shiny::observeEvent(input$language_select, {
bslib::accordion_panel_update(id = "acc_chars",
title = i18n$t("Settings"),
@ -13678,10 +13659,12 @@ server <- function(input, output, session) {
target = "acc_pan_mis")
})
output$redcap_warning <- shiny::renderUI({
rv_alerts$redcap_alert
})
##############################################################################
#########
######### Data import section
@ -13815,6 +13798,7 @@ server <- function(input, output, session) {
rv$data_original <- temp_data |>
default_parsing()
}
},
ignoreNULL = FALSE
)
@ -13877,14 +13861,14 @@ server <- function(input, output, session) {
shiny::observeEvent(list(rv$data_original, rv$data), {
if (is.null(rv$data_original) |
NROW(rv$data_original) == 0 |
is.null(rv$data) |
!any(is_splittable(rv$data))) {
is.null(rv$data) | !any(is_splittable(rv$data))) {
shiny::updateActionButton(inputId = "modal_string", disabled = TRUE)
} else if (!is.null(rv$data) && any(is_splittable(rv$data))) {
shiny::updateActionButton(inputId = "modal_string", disabled = FALSE)
}
})
##############################################################################
#########
######### Data modification section
@ -13909,6 +13893,7 @@ server <- function(input, output, session) {
}
}, ignoreNULL = TRUE)
shiny::observeEvent(input$data_reset, {
shinyWidgets::ask_confirmation(
cancelOnDismiss = TRUE,
@ -14231,6 +14216,7 @@ server <- function(input, output, session) {
rv$list$table1 <- NULL
})
##############################################################################
#########
######### Code export
@ -14294,18 +14280,19 @@ server <- function(input, output, session) {
))
})
## Just a note to self
## This is a very rewarding couple of lines marking new insights to dynamically rendering code
shiny::observe({
shiny::req(rv$regression)
rv$regression()$regression$models |>
purrr::imap(\(.x, .i) {
rv$regression()$regression$models |> purrr::imap(\(.x, .i) {
output[[paste0("code_", tolower(.i))]] <- shiny::renderUI({
prismCodeBlock(paste0(paste("#", .i, "regression model\n"), .x$code_table))
})
})
})
##############################################################################
#########
######### Data analyses Inputs
@ -14318,8 +14305,7 @@ server <- function(input, output, session) {
selected = "none",
label = i18n$t("Select variable to stratify baseline"),
data = shiny::reactive(rv$data_filtered)(),
col_subset = c("none", names(rv$data_filtered)[unlist(lapply(rv$data_filtered, data_type)) %in%
c("dichotomous", "categorical", "ordinal")])
col_subset = c("none", names(rv$data_filtered)[unlist(lapply(rv$data_filtered, data_type)) %in% c("dichotomous", "categorical", "ordinal")])
)
})
@ -14338,6 +14324,7 @@ server <- function(input, output, session) {
# )
# })
output$detail_level <- shiny::renderUI({
shiny::radioButtons(
inputId = "detail_level",
@ -14349,12 +14336,14 @@ server <- function(input, output, session) {
)
})
##############################################################################
#########
######### Descriptive evaluations
#########
##############################################################################
output$data_info_nochar <- shiny::renderUI({
shiny::req(rv$list$data)
data_description(rv$list$data,
@ -14373,12 +14362,14 @@ server <- function(input, output, session) {
#
# })
shiny::observeEvent(list(input$act_eval), {
shiny::req(input$strat_var)
# shiny::req(input$baseline_theme)
shiny::req(input$detail_level)
shiny::req(rv$list$data)
parameters <- list(
by.var = input$strat_var,
add.p = input$add_p == "yes",
@ -14419,6 +14410,7 @@ server <- function(input, output, session) {
# }
# )
rv$code$table1 <- glue::glue("FreesearchR::create_baseline(df,{list2str(parameters)})")
})
@ -14459,9 +14451,12 @@ server <- function(input, output, session) {
## Missingness evaluation
rv$missings <- data_missings_server(id = "missingness",
data = shiny::reactive(rv$data_filtered))
# shiny::observe({
# req(rv$missings())
# browser()
@ -14470,6 +14465,7 @@ server <- function(input, output, session) {
# mcar_validate(data=rv$missings()[["_data"]],outcome = input$missings_var)
# })
##############################################################################
#########
######### Data visuals

View file

@ -314,17 +314,16 @@
"The app contains a selelct number of features and will guide you through key analyses.","Appen indeholder udvalgte funktioner, og guider dig gennem de vigtigste analyser."
"Sort by Levels","Sorter efter niveauer"
"Reorder factor levels","Omarranger niveauer"
"Modify factor levels","Ændr kategoriske niveauer"
"Reorder or rename the levels of factor/categorical variables.","Ændr navn eller rækkefølge på kategorisk variabel."
"Maximum number of observations:","Maximale antal observationer:"
"setting to 0 includes all","angiv 0 for at inkludere alle"
"Select a dataset from your environment or sample dataset from a package.","Vælg et datasæt fra din kørende session eller vælg træningsdata."
"Select a sample dataset from a package.","Vælg et træningsdatasæt."
"Data ready to be imported!","Data er klar til at blive importeret!"
"Data has %s obs. of %s variables.","Data har %s obs. på %s variabler."
"Modify factor levels","Modify factor levels"
"Reorder or rename the levels of factor/categorical variables.","Reorder or rename the levels of factor/categorical variables."
"Maximum number of observations:","Maximum number of observations:"
"setting to 0 includes all","setting to 0 includes all"
"Select a dataset from your environment or sample dataset from a package.","Select a dataset from your environment or sample dataset from a package."
"Select a sample dataset from a package.","Select a sample dataset from a package."
"Data ready to be imported!","Data ready to be imported!"
"Data has %s obs. of %s variables.","Data has %s obs. of %s variables."
"Data successfully imported!","Data successfully imported!"
"Click to see data","Klik for at se data"
"No data present.","Ingen data tilstede."
"You have provided a complete dataset with no missing values.","Data er uden manglende observationer."
"Start by loading data.","Start med at vælge data."
"Sample data","Træningsdata"
"Click to see data","Click to see data"
"No data present.","No data present."
"You have provided a complete dataset with no missing values.","You have provided a complete dataset with no missing values."
"Start by loading data.","Start by loading data."

1 en da
314 The app contains a selelct number of features and will guide you through key analyses. Appen indeholder udvalgte funktioner, og guider dig gennem de vigtigste analyser.
315 Sort by Levels Sorter efter niveauer
316 Reorder factor levels Omarranger niveauer
317 Modify factor levels Ændr kategoriske niveauer Modify factor levels
318 Reorder or rename the levels of factor/categorical variables. Ændr navn eller rækkefølge på kategorisk variabel. Reorder or rename the levels of factor/categorical variables.
319 Maximum number of observations: Maximale antal observationer: Maximum number of observations:
320 setting to 0 includes all angiv 0 for at inkludere alle setting to 0 includes all
321 Select a dataset from your environment or sample dataset from a package. Vælg et datasæt fra din kørende session eller vælg træningsdata. Select a dataset from your environment or sample dataset from a package.
322 Select a sample dataset from a package. Vælg et træningsdatasæt. Select a sample dataset from a package.
323 Data ready to be imported! Data er klar til at blive importeret! Data ready to be imported!
324 Data has %s obs. of %s variables. Data har %s obs. på %s variabler. Data has %s obs. of %s variables.
325 Data successfully imported! Data successfully imported!
326 Click to see data Klik for at se data Click to see data
327 No data present. Ingen data tilstede. No data present.
328 You have provided a complete dataset with no missing values. Data er uden manglende observationer. You have provided a complete dataset with no missing values.
329 Start by loading data. Start med at vælge data. Start by loading data.
Sample data Træningsdata

View file

@ -327,4 +327,3 @@
"No data present.","No data present."
"You have provided a complete dataset with no missing values.","You have provided a complete dataset with no missing values."
"Start by loading data.","Start by loading data."
"Sample data","Sample data"

1 en sw
327 No data present. No data present.
328 You have provided a complete dataset with no missing values. You have provided a complete dataset with no missing values.
329 Start by loading data. Start by loading data.
Sample data Sample data

View file

@ -10,12 +10,9 @@ custom_theme(
primary = FreesearchR_colors("primary"),
secondary = FreesearchR_colors("secondary"),
bootswatch = "united",
base_font = bslib::font_face(family = "Montserrat", src =
"url('/fonts/Montserrat-Regular.ttf') format('truetype')"),
heading_font = bslib::font_face(family = "PublicSans", src =
"url('/fonts/PublicSans-Bold.ttf') format('truetype')"),
code_font = bslib::font_face(family = "OpenSans", src =
"url('/fonts/OpenSans-Regular.ttf') format('truetype')"),
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans", wght = "700"),
code_font = bslib::font_google("Open Sans"),
success = FreesearchR_colors("success"),
info = FreesearchR_colors("info"),
warning = FreesearchR_colors("warning"),